woocommerce/plugins/woocommerce-admin/client/activity-panel/activity-card/test/index.js

112 lines
2.8 KiB
JavaScript
Raw Normal View History

/**
* External dependencies
*/
import { Button } from '@wordpress/components';
import CustomizeIcon from 'gridicons/dist/customize';
2018-12-18 22:58:05 +00:00
import moment from 'moment';
2020-10-15 12:41:39 +00:00
import { render } from '@testing-library/react';
Allow packages to be built in isolation. (https://github.com/woocommerce/woocommerce-admin/pull/7286) * Use yarn instead of npm. In prep for workspaces, since we're locked to npm < 7. See: https://github.com/woocommerce/woocommerce-admin/pull/7126#issue-661287749 * Initial workspace creation. * Add initial tsc build to @woocommerce/number. * Attempt to build experimental package. * Try currency package. * Define all packages as workspaces. * Use tsconfig common to packages. * Fix currency package build. * Build csv-export with tsc. * Try to build customer-effort-score with tsc. * Fix JSX pragma. * Build data package with tsc. * Build date package with tsc. * Build experimental package with tsc. * Try to build explat package with tsc. * Build navigation package with tsc. * Build notices package with tsc. * Build onboarding package with tsc. * Build components package with tsc. * Swap in package JS build into main script. * Fix experimental package build. * Try per-package css build with components. * Try to run components package tests in isolation. Broken on JSX in test files not being transformed. * Move @woocommerce/wc-admin-settings into a package. * Try to fix components package tests. Fails because we aren't setting up the jest/jest-dom globals. * Move JS test code to reusable (private) package. * Enable incremental TS builds. * Use workspaces to run JS tests. * Use new jest configs for update snapshot scripts. * Fix style builds. * Fix package version in components. * Fix client test debug and watch scripts. * Update yarn lock. * Update test-staged behavior. * Try to fix storybook. * Fix storybook. * Update more npm commands to yarn. * Add changelog. * Fix lint errors. * Update packages readme script references. * Clean up unused gitignore match. * Fix another npm command. * Fix JS builds on watch. * Fix start script. * Fix start scripts for packages. * Use tsc to build packages before tests * yarn -> npm. # Conflicts: # package-lock.json # package.json * Fix linter error. * Remove workspace definitions. * Fix missing Fragment import. * Fix package lock. * Fix missing reference. * Only build commonjs module for js-tests helper. * Remove errant dependency from components. * Remove noop scripts. * Fix package JS build before testing. * Revert noisy formatting changes. * Fix precommit and test scripts. * Fix minimum expected recommended extension count. Japan test case breaks this. * Revert babel config changes. * chore(release): publish - @woocommerce/components@7.2.0 - @woocommerce/csv-export@1.4.0 - @woocommerce/currency@3.2.0 - @woocommerce/customer-effort-score@1.1.0 - @woocommerce/data@1.4.0 - @woocommerce/date@3.1.0 - @woocommerce/dependency-extraction-webpack-plugin@1.7.0 - @woocommerce/eslint-plugin@1.3.0 - @woocommerce/experimental@1.5.0 - @woocommerce/explat@1.1.0 - @woocommerce/js-tests@1.1.0 - @woocommerce/navigation@6.1.0 - @woocommerce/notices@3.1.0 - @woocommerce/number@2.2.0 - @woocommerce/onboarding@1.1.0 - @woocommerce/tracks@1.1.0 - @woocommerce/wc-admin-settings@1.1.0 * Add script for running 'start' in a package. * Remove yarn from gitignore. * Update package changelogs, prep versions for release. * Try to fix E2E tests after main merge. * Some cleanup. * Add changelog. Co-authored-by: Paul Sealock <psealock@gmail.com>
2021-07-14 20:38:57 +00:00
import { createElement } from '@wordpress/element';
/**
* Internal dependencies
*/
import { ActivityCard } from '../';
describe( 'ActivityCard', () => {
test( 'should have correct title', () => {
2020-10-15 12:41:39 +00:00
const { getByRole } = render(
<ActivityCard title="Inbox message">
This card has some content
</ActivityCard>
);
2020-10-15 12:41:39 +00:00
expect(
getByRole( 'heading', { name: 'Inbox message' } )
).toBeInTheDocument();
} );
test( 'should render a basic card', () => {
2020-10-15 12:41:39 +00:00
const { container } = render(
<ActivityCard title="Inbox message">
This card has some content
</ActivityCard>
);
2020-10-15 12:41:39 +00:00
expect( container ).toMatchSnapshot();
} );
test( 'should render an unread bubble on a card', () => {
2020-10-15 12:41:39 +00:00
const { container } = render(
<ActivityCard title="Inbox message" unread>
This card has some content
</ActivityCard>
);
2020-10-15 12:41:39 +00:00
expect( container ).toMatchSnapshot();
} );
test( 'should render a custom icon on a card', () => {
2020-10-15 12:41:39 +00:00
const { container } = render(
<ActivityCard title="Inbox message" icon={ <CustomizeIcon /> }>
This card has some content
</ActivityCard>
);
2020-10-15 12:41:39 +00:00
expect( container ).toMatchSnapshot();
} );
test( 'should render a timestamp on a card', () => {
// We're generating this via moment to ensure it's always "3 days ago".
const threeDaysAgo = moment().subtract( 3, 'days' ).format();
2020-10-15 12:41:39 +00:00
const { container } = render(
<ActivityCard title="Inbox message" date={ threeDaysAgo }>
This card has some content
</ActivityCard>
);
2020-10-15 12:41:39 +00:00
expect( container ).toMatchSnapshot();
} );
Migrate Stock Panel to Homescreen (https://github.com/woocommerce/woocommerce-admin/pull/5729) * Refactor low stock variable to be the count instead of a boolean. * Add initial render of the Stock panel on the homescreen. * Move existing Stock panel to homescreen accordion. * Ensure int value for low stock product count. * Update ProductImage styling. * Update stock activity car styles. * Only show 5 low stock products. * Add "undo" action to the stock updated snackbar. * Fix check for explicit notice dismissal when taking actions. * Hide now-in-stock products after updating. By cllearing "edited" flag on successful update. * Fetch more products after updating stock. * Fix the number of product placeholders shown. * Only show products placeholders on the initial fetch. * Fix placeholder style. * Fetch low stock count dynamically. * Let initialOpen prop toggle Accordion panels if they haven't been toggled by the user. * Refactor item total count state. Allows for auto-updating item totals whenever identical queries (from a totals perspective) are issued. * Add last order date to low stock products API response. * Allow non-date strings in ActivityCard date prop. * Add last order date to stock panel cards. * Remove empty stock panel view. * Add test file for StockPanel. * Only request necessary fields from products endpoint. * Add test for products fetch after stock update. * Fix field name. * Add test for last order date in low stock products API response. * Stock panel should be initially closed. * Skip updating a product if the quantity is unchanged.
2020-11-25 18:51:15 +00:00
test( 'supports a non-date "date" prop on a card', () => {
// We should be able to provide any string to the date prop.
const { container } = render(
<ActivityCard title="Inbox message" date="A long, long time ago">
This card has some content
</ActivityCard>
);
expect( container ).toMatchSnapshot();
} );
test( 'should render an action on a card', () => {
const noop = () => {};
2020-10-15 12:41:39 +00:00
const { container } = render(
<ActivityCard
title="Inbox message"
actions={
<Button isSecondary onClick={ noop }>
Action
</Button>
}
>
This card has some content
</ActivityCard>
);
2020-10-15 12:41:39 +00:00
expect( container ).toMatchSnapshot();
} );
test( 'should render multiple actions on a card', () => {
const noop = () => {};
2020-10-15 12:41:39 +00:00
const { container } = render(
<ActivityCard
title="Inbox message"
actions={ [
<Button key="action1" isPrimary onClick={ noop }>
Action 1
</Button>,
<Button key="action2" isSecondary onClick={ noop }>
Action 2
</Button>,
] }
>
This card has some content
</ActivityCard>
);
2020-10-15 12:41:39 +00:00
expect( container ).toMatchSnapshot();
} );
} );