@licklist/design 0.62.3-dev.1 → 0.62.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bitbucket-pipelines.yml +8 -0
- package/dist/date-time-button/DateTimeButton.js +1 -1
- package/dist/events/edit-event-modal/component/EditEventForm/EditEventForm.d.ts +1 -3
- package/dist/events/edit-event-modal/component/EditEventForm/EditEventForm.d.ts.map +1 -1
- package/dist/events/edit-event-modal/component/EditEventForm/EditEventForm.js +1 -1
- package/dist/events/edit-event-modal/component/SelectEventProductSet/SelectEventProductSet.d.ts +1 -3
- package/dist/events/edit-event-modal/component/SelectEventProductSet/SelectEventProductSet.d.ts.map +1 -1
- package/dist/events/edit-event-modal/component/SelectEventProductSet/SelectEventProductSet.js +1 -1
- package/dist/events/edit-event-modal/component/SelectEventProductSet/component/EditEventProductSet.d.ts +1 -3
- package/dist/events/edit-event-modal/component/SelectEventProductSet/component/EditEventProductSet.d.ts.map +1 -1
- package/dist/events/edit-event-modal/component/SelectEventProductSet/component/EditEventProductSet.js +1 -1
- package/dist/iframe/payment/order-items-table/utils/paymentSummary.js +1 -1
- package/dist/iframe/ryft/RyftPaymentForm.d.ts.map +1 -1
- package/dist/iframe/ryft/RyftPaymentForm.js +1 -1
- package/dist/iframe/ryft/utils/ryft-form.d.ts.map +1 -1
- package/dist/iframe/ryft/utils/ryft-form.js +1 -1
- package/dist/product-set/control/DateAndRecurrenceInput.d.ts +1 -1
- package/dist/product-set/control/DateAndRecurrenceInput.d.ts.map +1 -1
- package/dist/product-set/control/DateAndRecurrenceInput.js +1 -1
- package/dist/product-set/control/DateInput.d.ts.map +1 -1
- package/dist/product-set/control/DateInput.js +1 -1
- package/dist/product-set/control/ProductSetControl.d.ts +1 -1
- package/dist/product-set/control/ProductSetControl.d.ts.map +1 -1
- package/dist/product-set/form/ProductSetForm.d.ts +1 -4
- package/dist/product-set/form/ProductSetForm.d.ts.map +1 -1
- package/dist/product-set/hooks/useSortableTreeFunctions.d.ts.map +1 -1
- package/dist/product-set/product/ProductControl.d.ts.map +1 -1
- package/dist/product-set/product/ProductControl.js +1 -1
- package/dist/product-set/product/fixed-duration-fields/FixedDurationOptions.d.ts.map +1 -1
- package/dist/provider/working-hours-input/WorkingHoursInputDescription.d.ts.map +1 -1
- package/dist/provider/working-hours-input/WorkingHoursInputDescription.js +1 -1
- package/dist/recurring-date-picker-input/RecurrenceAndFrequencyInput.d.ts.map +1 -1
- package/dist/recurring-date-picker-input/RecurringDatePickerInput.d.ts +1 -3
- package/dist/recurring-date-picker-input/RecurringDatePickerInput.d.ts.map +1 -1
- package/dist/recurring-date-picker-input/RecurringDatePickerInput.js +1 -1
- package/dist/recurring-date-picker-input/utils.d.ts +0 -12
- package/dist/recurring-date-picker-input/utils.d.ts.map +1 -1
- package/dist/recurring-date-picker-input/utils.js +1 -1
- package/dist/sales/booking/results/components/ResultCard.d.ts.map +1 -1
- package/dist/sales/booking/results/components/ResultCard.js +1 -1
- package/dist/sales/coupon/control/CouponFormControl.d.ts +1 -2
- package/dist/sales/coupon/control/CouponFormControl.d.ts.map +1 -1
- package/dist/sales/coupon/control/CouponFormControl.js +1 -1
- package/dist/sales/coupon/form/CouponFrom.d.ts +2 -2
- package/dist/sales/coupon/form/CouponFrom.d.ts.map +1 -1
- package/dist/setting/admin/AdminSettingForm.d.ts +2 -2
- package/dist/setting/admin/AdminSettingForm.d.ts.map +1 -1
- package/dist/setting/dashboard/DashboardSettingForm.d.ts +0 -1
- package/dist/setting/dashboard/DashboardSettingForm.d.ts.map +1 -1
- package/dist/setting/dashboard/DashboardSettingForm.js +1 -1
- package/dist/styles/ryft-payment-form/RyftPaymentForm.scss +113 -99
- package/dist/styles/sales/BookingResults.scss +1 -1
- package/dist/typeahead/Typeahead.d.ts +1 -2
- package/dist/typeahead/Typeahead.d.ts.map +1 -1
- package/dist/typeahead/Typeahead.js +1 -1
- package/dist/zone/form/ZoneForm.d.ts +2 -2
- package/dist/zone/form/ZoneForm.d.ts.map +1 -1
- package/dist/zone/form/ZoneForm.js +1 -1
- package/dist/zone/form/components/ZoneControl.d.ts +2 -2
- package/dist/zone/form/components/ZoneControl.d.ts.map +1 -1
- package/dist/zone/form/components/ZoneControl.js +1 -1
- package/dist/zone/form/components/ZoneRecurrencesControl.d.ts +4 -4
- package/dist/zone/form/components/ZoneRecurrencesControl.d.ts.map +1 -1
- package/dist/zone/form/components/ZoneRecurrencesControl.js +1 -1
- package/dist/zone/form/utils/dates.d.ts.map +1 -1
- package/jest.config.js +29 -0
- package/package.json +35 -10
- package/src/date-time-button/DateTimeButton.stories.tsx +1 -2
- package/src/date-time-button/DateTimeButton.tsx +5 -7
- package/src/events/edit-event-modal/component/EditEventForm/EditEventForm.tsx +0 -4
- package/src/events/edit-event-modal/component/SelectEventProductSet/SelectEventProductSet.tsx +8 -10
- package/src/events/edit-event-modal/component/SelectEventProductSet/component/EditEventProductSet.tsx +0 -4
- package/src/iframe/payment/order-items-table/utils/paymentSummary.tsx +6 -6
- package/src/iframe/ryft/RyftPaymentForm.tsx +4 -12
- package/src/iframe/ryft/utils/ryft-form.ts +4 -8
- package/src/product-set/control/DateAndRecurrenceInput.tsx +2 -3
- package/src/product-set/control/DateInput.tsx +4 -2
- package/src/product-set/control/ProductSetControl.tsx +1 -1
- package/src/product-set/form/ProductCategoriesControl.tsx +1 -1
- package/src/product-set/form/ProductSetForm.tsx +1 -5
- package/src/product-set/hooks/useSortableTreeFunctions.ts +0 -2
- package/src/product-set/product/ProductControl.tsx +38 -38
- package/src/product-set/product/fixed-duration-fields/FixedDurationOptions.tsx +2 -0
- package/src/provider/working-hours-input/WorkingHoursInputDescription.tsx +18 -4
- package/src/recurring-date-picker-input/RecurrenceAndFrequencyInput.tsx +1 -0
- package/src/recurring-date-picker-input/RecurringDatePickerInput.tsx +1 -11
- package/src/recurring-date-picker-input/utils.ts +0 -77
- package/src/sales/booking/results/BookingResults.stories.tsx +2 -3
- package/src/sales/booking/results/components/ResultCard.tsx +5 -2
- package/src/sales/coupon/control/CouponFormControl.tsx +50 -29
- package/src/sales/coupon/form/CouponFrom.tsx +15 -5
- package/src/setting/admin/AdminSettingForm.tsx +2 -2
- package/src/setting/dashboard/DashboardSettingForm.tsx +0 -13
- package/src/sortable-tree/SortableTreeItem.tsx +1 -1
- package/src/static/switch/BooleanSwitch.tsx +1 -1
- package/src/styles/ryft-payment-form/RyftPaymentForm.scss +113 -99
- package/src/styles/sales/BookingResults.scss +1 -1
- package/src/typeahead/Typeahead.tsx +3 -16
- package/src/zone/form/ZoneForm.tsx +2 -3
- package/src/zone/form/components/ZoneControl.tsx +3 -3
- package/src/zone/form/components/ZoneRecurrencesControl.tsx +5 -7
- package/src/zone/form/utils/dates.ts +10 -9
- package/tests/Auth/Authorizer.test.tsx +194 -0
- package/tests/Auth/Layout/UserNavDropDown.test.tsx +43 -0
- package/tests/Auth/Layout/UserNavDropDownToggle.test.tsx +33 -0
- package/tests/Auth/Login/LoginComponent.test.tsx +246 -0
- package/tests/Auth/Login/LoginFormComponent.test.tsx +182 -0
- package/tests/Auth/Register/RegisterComponent.test.tsx +285 -0
- package/tests/Auth/Register/RegisterFormComponent.test.tsx +170 -0
- package/tests/Auth/Settings/Dashboard/IpInput.test.tsx +130 -0
- package/tests/Auth/Social/SocialCallbackComponent.test.tsx +133 -0
- package/tests/Auth/Social/SocialFormComponent.test.tsx +118 -0
- package/tests/FileUpload/FileUpload.test.tsx +42 -0
- package/tests/Notification/EmailTemplate.test.tsx +82 -0
- package/tests/ProductSet/ProductSetPopover.test.tsx +40 -0
- package/tests/Report/Report.test.tsx +48 -0
- package/tests/Sales/Coupon.test.tsx +51 -0
- package/tests/Sales/SalesAndVIews.test.tsx +63 -0
- package/tests/SnippetTemplates/SnippetTemplates.test.tsx +56 -0
- package/tests/Table/FilterHelperComponent.test.tsx +88 -0
- package/tests/Table/PaginationHelperComponent.test.tsx +109 -0
- package/tests/Table/PerPageHelperComponent.test.tsx +34 -0
- package/tests/Table/TableHelperComponent.test.tsx +295 -0
- package/tests/TipTapEditor/TipTapEditor.test.tsx +28 -0
- package/tests/__mock__/hooks/useAuthApi.ts +13 -0
- package/tests/__mock__/hooks/useAuthMock.ts +13 -0
- package/tests/__mock__/hooks/useFormMock.ts +27 -0
- package/tests/__mock__/hooks/useNotificationMock.ts +13 -0
- package/tests/__mock__/hooks/useQueryMock.ts +16 -0
- package/tests/__mock__/hooks/useSocialApiMock.ts +20 -0
- package/tests/__mock__/hooks/useTranslationMock.ts +17 -0
- package/tests/__mock__/hooks/useUserApiMock.ts +18 -0
- package/tests/__mock__/hooks/useUserMock.ts +13 -0
- package/tests/__mock__/styleMock.js +1 -0
- package/tests/__mock__/windowMock.ts +5 -0
- package/tests/packages/react-query.tsx +28 -0
- package/tests/setupTests.ts +10 -0
- package/dist/sales/coupon/utils/index.d.ts +0 -7
- package/dist/sales/coupon/utils/index.d.ts.map +0 -1
- package/dist/sales/coupon/utils/index.js +0 -1
- package/src/sales/coupon/utils/index.ts +0 -13
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { mount } from "enzyme";
|
|
3
|
+
import { Button } from "react-bootstrap";
|
|
4
|
+
import { ProductSetPopover } from "../../src/product-set/popover/ProductSetPopover";
|
|
5
|
+
|
|
6
|
+
describe("Product Set Popover", () => {
|
|
7
|
+
it("should render without issues", () => {
|
|
8
|
+
const component = mount(
|
|
9
|
+
<ProductSetPopover>
|
|
10
|
+
<>Lorem ipsum dolor sit</>
|
|
11
|
+
</ProductSetPopover>
|
|
12
|
+
);
|
|
13
|
+
expect(component.exists()).toBeTruthy();
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
it("should be controlled if isVisible prop has been passed", () => {
|
|
17
|
+
const component = mount(
|
|
18
|
+
<ProductSetPopover isVisible={false}>
|
|
19
|
+
<p id="popover-content">Some text here...</p>
|
|
20
|
+
</ProductSetPopover>
|
|
21
|
+
);
|
|
22
|
+
const triggerButton = component.find(Button).first();
|
|
23
|
+
triggerButton.simulate("click");
|
|
24
|
+
const content = component.find("#popover-content");
|
|
25
|
+
|
|
26
|
+
expect(content).toHaveLength(0);
|
|
27
|
+
});
|
|
28
|
+
it("should be uncontrolled if isVisible has not been passed", () => {
|
|
29
|
+
const component = mount(
|
|
30
|
+
<ProductSetPopover>
|
|
31
|
+
<p id="popover-content">Some text here...</p>
|
|
32
|
+
</ProductSetPopover>
|
|
33
|
+
);
|
|
34
|
+
const triggerButton = component.find(Button).first();
|
|
35
|
+
triggerButton.simulate("click");
|
|
36
|
+
const content = component.find("#popover-content");
|
|
37
|
+
|
|
38
|
+
expect(content).toHaveLength(1);
|
|
39
|
+
});
|
|
40
|
+
});
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/* eslint-disable testing-library/render-result-naming-convention */
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { render } from "@testing-library/react";
|
|
4
|
+
import { createMemoryHistory } from "history";
|
|
5
|
+
import { Router } from "react-router-dom";
|
|
6
|
+
import { ReportCard } from "../../src/report/card/ReportCard";
|
|
7
|
+
import { ReportForm } from "../../src/report/form/ReportForm";
|
|
8
|
+
import useTranslationMock from "../__mock__/hooks/useTranslationMock";
|
|
9
|
+
|
|
10
|
+
const history = createMemoryHistory();
|
|
11
|
+
|
|
12
|
+
jest.mock("react-i18next", () => ({
|
|
13
|
+
Trans: jest.fn().mockReturnValue("test"),
|
|
14
|
+
useTranslation: jest.fn(),
|
|
15
|
+
}));
|
|
16
|
+
|
|
17
|
+
beforeEach(() => {
|
|
18
|
+
useTranslationMock();
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
afterAll(() => {
|
|
22
|
+
jest.resetAllMocks();
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
describe("Report", () => {
|
|
26
|
+
it("ReportCard should be rendered without issues", () => {
|
|
27
|
+
const screen = render(
|
|
28
|
+
<Router history={history as any}>
|
|
29
|
+
<ReportCard hasPermission name="Sales" onPress={() => {}} iconType="" />
|
|
30
|
+
</Router>
|
|
31
|
+
);
|
|
32
|
+
expect(screen.getByText("Sales")).toBeInTheDocument();
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
it("ReportForm should be rendered without issues", () => {
|
|
36
|
+
const screen = render(
|
|
37
|
+
<ReportForm hasPermission onSubmit={() => {}} onHide={() => {}} />
|
|
38
|
+
);
|
|
39
|
+
expect(screen.getAllByRole("button")).toBeTruthy();
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
it("ReportForm should not rendered button without valid permission", () => {
|
|
43
|
+
const screen = render(
|
|
44
|
+
<ReportForm hasPermission={false} onSubmit={() => {}} onHide={() => {}} />
|
|
45
|
+
);
|
|
46
|
+
expect(screen.queryByRole("button")).not.toBeInTheDocument();
|
|
47
|
+
});
|
|
48
|
+
});
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/* eslint-disable testing-library/render-result-naming-convention */
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { render } from "@testing-library/react";
|
|
4
|
+
import { Router } from "react-router-dom";
|
|
5
|
+
import { createMemoryHistory } from "history";
|
|
6
|
+
|
|
7
|
+
import useTranslationMock from "../__mock__/hooks/useTranslationMock";
|
|
8
|
+
import { CouponForm } from "../../src/sales/coupon/form";
|
|
9
|
+
|
|
10
|
+
const history = createMemoryHistory();
|
|
11
|
+
|
|
12
|
+
jest.mock("react-i18next", () => ({
|
|
13
|
+
Trans: jest.fn().mockReturnValue("test"),
|
|
14
|
+
useTranslation: jest.fn(),
|
|
15
|
+
}));
|
|
16
|
+
|
|
17
|
+
beforeEach(() => {
|
|
18
|
+
useTranslationMock();
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
afterAll(() => {
|
|
22
|
+
jest.resetAllMocks();
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
describe("CouponFrom", () => {
|
|
26
|
+
it("CouponFrom should be rendered without issues with permission", () => {
|
|
27
|
+
const screen = render(
|
|
28
|
+
<Router history={history as any}>
|
|
29
|
+
<CouponForm
|
|
30
|
+
hasPermission
|
|
31
|
+
onSubmit={() => {}}
|
|
32
|
+
serverErrors={{ name: [""] }}
|
|
33
|
+
/>
|
|
34
|
+
</Router>
|
|
35
|
+
);
|
|
36
|
+
expect(screen.getByRole("button")).toBeTruthy();
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
it("CouponFrom should be rendered without issues without permission", () => {
|
|
40
|
+
const screen = render(
|
|
41
|
+
<Router history={history as any}>
|
|
42
|
+
<CouponForm
|
|
43
|
+
hasPermission={false}
|
|
44
|
+
onSubmit={() => {}}
|
|
45
|
+
serverErrors={{ name: [""] }}
|
|
46
|
+
/>
|
|
47
|
+
</Router>
|
|
48
|
+
);
|
|
49
|
+
expect(screen.queryByRole("button")).toBeFalsy();
|
|
50
|
+
});
|
|
51
|
+
});
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/* eslint-disable testing-library/render-result-naming-convention */
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { render } from "@testing-library/react";
|
|
4
|
+
import moment from "moment";
|
|
5
|
+
import { IntlProvider } from "react-intl";
|
|
6
|
+
import useTranslationMock from "../__mock__/hooks/useTranslationMock";
|
|
7
|
+
|
|
8
|
+
import {
|
|
9
|
+
ChartData,
|
|
10
|
+
SalesAndViewsChart,
|
|
11
|
+
} from "../../src/sales/sales-and-views/SalesAndViewsChart";
|
|
12
|
+
|
|
13
|
+
jest.mock("react-i18next", () => ({
|
|
14
|
+
Trans: jest.fn().mockReturnValue("test"),
|
|
15
|
+
useTranslation: jest.fn(),
|
|
16
|
+
}));
|
|
17
|
+
|
|
18
|
+
beforeEach(() => {
|
|
19
|
+
useTranslationMock();
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
afterAll(() => {
|
|
23
|
+
jest.resetAllMocks();
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
function generateRandom() {
|
|
27
|
+
return Math.floor(Math.random() * 100);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
const genarateChartData = (): ChartData[] => {
|
|
31
|
+
const chartData = [];
|
|
32
|
+
const date = moment().subtract(90, "d");
|
|
33
|
+
|
|
34
|
+
for (let i = 0; i < 90; i += 1) {
|
|
35
|
+
chartData.push({
|
|
36
|
+
id: i,
|
|
37
|
+
sales: generateRandom(),
|
|
38
|
+
views: generateRandom(),
|
|
39
|
+
date: date.add(i, "d").format("YYYY-MM-DD"),
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
return chartData;
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
describe("SalesAndViewsChart", () => {
|
|
46
|
+
it("SalesAndViewsChart should be rendered without issues", () => {
|
|
47
|
+
const data = genarateChartData();
|
|
48
|
+
|
|
49
|
+
const screen = render(
|
|
50
|
+
<IntlProvider locale="en" timeZone="Europe/London">
|
|
51
|
+
<div style={{ height: "500px", width: "700px" }}>
|
|
52
|
+
<SalesAndViewsChart
|
|
53
|
+
data={data}
|
|
54
|
+
handleFilter={() => {}}
|
|
55
|
+
activePeriod="week"
|
|
56
|
+
/>
|
|
57
|
+
</div>
|
|
58
|
+
</IntlProvider>
|
|
59
|
+
);
|
|
60
|
+
const salesHeaderContainer = screen.getAllByText("test");
|
|
61
|
+
expect(salesHeaderContainer[0]).toBeInTheDocument();
|
|
62
|
+
});
|
|
63
|
+
});
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/* eslint-disable testing-library/render-result-naming-convention */
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { createMemoryHistory } from "history";
|
|
4
|
+
import { Router } from "react-router-dom";
|
|
5
|
+
import { render } from "@testing-library/react";
|
|
6
|
+
import { SnippetTemplateCard } from "../../src/setting/dashboard/snippet-templates/card";
|
|
7
|
+
import useTranslationMock from "../__mock__/hooks/useTranslationMock";
|
|
8
|
+
|
|
9
|
+
const history = createMemoryHistory();
|
|
10
|
+
|
|
11
|
+
jest.mock("react-i18next", () => ({
|
|
12
|
+
Trans: jest.fn().mockReturnValue("test"),
|
|
13
|
+
useTranslation: jest.fn(),
|
|
14
|
+
}));
|
|
15
|
+
|
|
16
|
+
beforeEach(() => {
|
|
17
|
+
useTranslationMock();
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
afterAll(() => {
|
|
21
|
+
jest.resetAllMocks();
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
describe("SnippetTemplates", () => {
|
|
25
|
+
it("SnippetTemplate should be rendered without issues", () => {
|
|
26
|
+
const screen = render(
|
|
27
|
+
<Router history={history as any}>
|
|
28
|
+
<SnippetTemplateCard
|
|
29
|
+
hasPermission
|
|
30
|
+
name="testSnippet"
|
|
31
|
+
onRemove={() => {}}
|
|
32
|
+
colors={["blue", "yellow"]}
|
|
33
|
+
href="/"
|
|
34
|
+
/>
|
|
35
|
+
</Router>
|
|
36
|
+
);
|
|
37
|
+
|
|
38
|
+
expect(screen.getByRole("button")).toBeTruthy();
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
it("SnippetTemplate without permission", async () => {
|
|
42
|
+
const screen = render(
|
|
43
|
+
<Router history={history as any}>
|
|
44
|
+
<SnippetTemplateCard
|
|
45
|
+
hasPermission={false}
|
|
46
|
+
name="testSnippet"
|
|
47
|
+
onRemove={() => {}}
|
|
48
|
+
colors={["blue", "yellow"]}
|
|
49
|
+
href="/"
|
|
50
|
+
/>
|
|
51
|
+
</Router>
|
|
52
|
+
);
|
|
53
|
+
|
|
54
|
+
expect(screen.queryByRole("button")).toBeFalsy();
|
|
55
|
+
});
|
|
56
|
+
});
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { mount, shallow } from "enzyme";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { act } from "react-dom/test-utils";
|
|
4
|
+
import FormControl from "react-bootstrap/FormControl";
|
|
5
|
+
import Button from "react-bootstrap/Button";
|
|
6
|
+
import { FilterHelperComponent } from "../../src/table/FilterHelperComponent";
|
|
7
|
+
|
|
8
|
+
describe("FilterHelperComponent", () => {
|
|
9
|
+
it("should be rendered without issues", () => {
|
|
10
|
+
const component = shallow(<FilterHelperComponent />);
|
|
11
|
+
|
|
12
|
+
expect(component.exists()).toBeTruthy();
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
it("should be mount without issues", () => {
|
|
16
|
+
const component = mount(
|
|
17
|
+
<FilterHelperComponent defaultValue="defaultValue" />
|
|
18
|
+
);
|
|
19
|
+
|
|
20
|
+
expect(component.exists()).toBeTruthy();
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
it("should act on change", () => {
|
|
24
|
+
const component = mount(<FilterHelperComponent />);
|
|
25
|
+
|
|
26
|
+
act(() => {
|
|
27
|
+
component.find(FormControl).first().prop("onChange")?.({
|
|
28
|
+
target: {
|
|
29
|
+
value: "onChange",
|
|
30
|
+
},
|
|
31
|
+
} as React.ChangeEvent<HTMLInputElement>);
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
component.update();
|
|
35
|
+
expect(component.find(FormControl).first().prop("value")).toBe("onChange");
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
it("should act on clear", () => {
|
|
39
|
+
const onClickFn = jest.fn();
|
|
40
|
+
const component = mount(<FilterHelperComponent onClickFn={onClickFn} />);
|
|
41
|
+
|
|
42
|
+
act(() => {
|
|
43
|
+
component.find(Button).first().prop("onClick")?.(
|
|
44
|
+
{} as React.MouseEvent<HTMLButtonElement>
|
|
45
|
+
);
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
component.update();
|
|
49
|
+
expect(onClickFn).toHaveBeenCalledTimes(1);
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
it("should act on search", () => {
|
|
53
|
+
const onClickFn = jest.fn();
|
|
54
|
+
const component = mount(<FilterHelperComponent onClickFn={onClickFn} />);
|
|
55
|
+
|
|
56
|
+
act(() => {
|
|
57
|
+
component.find(Button).last().prop("onClick")?.(
|
|
58
|
+
{} as React.MouseEvent<HTMLButtonElement>
|
|
59
|
+
);
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
component.update();
|
|
63
|
+
expect(onClickFn).toHaveBeenCalledTimes(1);
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
it("should act on enter", () => {
|
|
67
|
+
const onClickFn = jest.fn();
|
|
68
|
+
const component = mount(<FilterHelperComponent onClickFn={onClickFn} />);
|
|
69
|
+
|
|
70
|
+
act(() => {
|
|
71
|
+
component.find(FormControl).last().prop("onKeyDown")?.({
|
|
72
|
+
key: "Space",
|
|
73
|
+
} as React.KeyboardEvent);
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
component.update();
|
|
77
|
+
expect(onClickFn).toHaveBeenCalledTimes(0);
|
|
78
|
+
|
|
79
|
+
act(() => {
|
|
80
|
+
component.find(FormControl).last().prop("onKeyDown")?.({
|
|
81
|
+
key: "Enter",
|
|
82
|
+
} as React.KeyboardEvent);
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
component.update();
|
|
86
|
+
expect(onClickFn).toHaveBeenCalledTimes(1);
|
|
87
|
+
});
|
|
88
|
+
});
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/ban-types */
|
|
2
|
+
import ILengthAwarePaginator from "@licklist/plugins/dist/types/services/Table/ILengthAwarePaginator";
|
|
3
|
+
import { mount, shallow } from "enzyme";
|
|
4
|
+
import * as React from "react";
|
|
5
|
+
import PageItem from "react-bootstrap/PageItem";
|
|
6
|
+
import { act } from "react-dom/test-utils";
|
|
7
|
+
import { PaginationHelperComponent } from "../../src/table/PaginationHelperComponent";
|
|
8
|
+
import useTranslationMock from "../__mock__/hooks/useTranslationMock";
|
|
9
|
+
|
|
10
|
+
jest.mock("react-i18next", () => ({
|
|
11
|
+
Trans: jest.fn().mockReturnValue("test"),
|
|
12
|
+
useTranslation: jest.fn(),
|
|
13
|
+
}));
|
|
14
|
+
|
|
15
|
+
beforeEach(() => {
|
|
16
|
+
useTranslationMock();
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
afterAll(() => {
|
|
20
|
+
jest.resetAllMocks();
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
describe("PaginationHelperComponent", () => {
|
|
24
|
+
const getPaginator = (): ILengthAwarePaginator<{}> => ({
|
|
25
|
+
current_page: 1,
|
|
26
|
+
last_page: 1,
|
|
27
|
+
first_page_url: "first_page_url",
|
|
28
|
+
last_page_url: "last_page_url",
|
|
29
|
+
next_page_url: "next_page_url",
|
|
30
|
+
prev_page_url: "prev_page_url",
|
|
31
|
+
path: "path",
|
|
32
|
+
per_page: 1,
|
|
33
|
+
from: 0,
|
|
34
|
+
to: 1,
|
|
35
|
+
total: 1,
|
|
36
|
+
data: [
|
|
37
|
+
{
|
|
38
|
+
test: "data",
|
|
39
|
+
},
|
|
40
|
+
],
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
it("should be rendered without issues", () => {
|
|
44
|
+
const component = shallow(<PaginationHelperComponent />);
|
|
45
|
+
|
|
46
|
+
expect(component.exists()).toBeTruthy();
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
it("should be mount without issues", () => {
|
|
50
|
+
const component = mount(
|
|
51
|
+
<PaginationHelperComponent paginator={getPaginator()} />
|
|
52
|
+
);
|
|
53
|
+
|
|
54
|
+
expect(component.exists()).toBeTruthy();
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
it("should render pagination section if there are more pages", () => {
|
|
58
|
+
const paginator = getPaginator();
|
|
59
|
+
paginator.last_page = 2;
|
|
60
|
+
const component = mount(
|
|
61
|
+
<PaginationHelperComponent paginator={paginator} />
|
|
62
|
+
);
|
|
63
|
+
|
|
64
|
+
expect(component.exists()).toBeTruthy();
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
it("should act on page change", () => {
|
|
68
|
+
const paginator = getPaginator();
|
|
69
|
+
const onPageChangeFn = jest.fn();
|
|
70
|
+
paginator.last_page = 2;
|
|
71
|
+
const component = mount(
|
|
72
|
+
<PaginationHelperComponent
|
|
73
|
+
paginator={paginator}
|
|
74
|
+
onPageChangeFn={onPageChangeFn}
|
|
75
|
+
/>
|
|
76
|
+
);
|
|
77
|
+
|
|
78
|
+
act(() => {
|
|
79
|
+
component.find("button").first().prop("onClick")?.(
|
|
80
|
+
{} as React.MouseEvent<HTMLElement>
|
|
81
|
+
);
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
component.update();
|
|
85
|
+
expect(onPageChangeFn).toHaveBeenCalledTimes(1);
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
it("should act on page change by click on a specific page", () => {
|
|
89
|
+
const paginator = getPaginator();
|
|
90
|
+
const onPageChangeFn = jest.fn();
|
|
91
|
+
paginator.last_page = 2;
|
|
92
|
+
const component = mount(
|
|
93
|
+
<PaginationHelperComponent
|
|
94
|
+
paginator={paginator}
|
|
95
|
+
onPageChangeFn={onPageChangeFn}
|
|
96
|
+
/>
|
|
97
|
+
);
|
|
98
|
+
|
|
99
|
+
act(() => {
|
|
100
|
+
component.find(PageItem).at(1).prop("onClick")?.(
|
|
101
|
+
{} as React.MouseEvent<HTMLElement>
|
|
102
|
+
);
|
|
103
|
+
});
|
|
104
|
+
|
|
105
|
+
component.update();
|
|
106
|
+
expect(onPageChangeFn).toHaveBeenCalledTimes(1);
|
|
107
|
+
expect(onPageChangeFn).toHaveBeenCalledWith(2);
|
|
108
|
+
});
|
|
109
|
+
});
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { mount, shallow } from "enzyme";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { act } from "react-dom/test-utils";
|
|
4
|
+
import { PerPageHelperComponent } from "../../src/table/PerPageHelperComponent";
|
|
5
|
+
|
|
6
|
+
describe("PerPageHelperComponent", () => {
|
|
7
|
+
it("should be rendered without issues", () => {
|
|
8
|
+
const component = shallow(<PerPageHelperComponent />);
|
|
9
|
+
|
|
10
|
+
expect(component.exists()).toBeTruthy();
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
it("should be mount without issues", () => {
|
|
14
|
+
const component = mount(<PerPageHelperComponent defaultValue={10} />);
|
|
15
|
+
|
|
16
|
+
expect(component.exists()).toBeTruthy();
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
it("should act on change", () => {
|
|
20
|
+
const onChangeFn = jest.fn();
|
|
21
|
+
const component = mount(<PerPageHelperComponent onChangeFn={onChangeFn} />);
|
|
22
|
+
|
|
23
|
+
act(() => {
|
|
24
|
+
component.find("select").first().prop("onChange")?.({
|
|
25
|
+
target: {
|
|
26
|
+
value: "100",
|
|
27
|
+
},
|
|
28
|
+
} as React.ChangeEvent<HTMLSelectElement>);
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
component.update();
|
|
32
|
+
expect(onChangeFn).toHaveBeenCalledTimes(1);
|
|
33
|
+
});
|
|
34
|
+
});
|