richie 2.25.0b2.dev97__py2.py3-none-any.whl → 2.25.0b2.dev101__py2.py3-none-any.whl
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.
Potentially problematic release.
This version of richie might be problematic. Click here for more details.
- frontend/jest/setup.ts +10 -0
- frontend/js/components/ContractFrame/AbstractContractFrame.spec.tsx +0 -6
- frontend/js/components/DjangoCMSTemplate/index.spec.tsx +2 -2
- frontend/js/components/Modal/index.spec.tsx +0 -6
- frontend/js/components/PurchaseButton/index.spec.tsx +0 -7
- frontend/js/components/SaleTunnel/index.spec.tsx +0 -7
- frontend/js/components/SignContractButton/index.omniscientOrders.spec.tsx +0 -6
- frontend/js/components/SignContractButton/index.spec.tsx +0 -6
- frontend/js/pages/DashboardContracts/index.spec.tsx +0 -7
- frontend/js/pages/DashboardOrderLayout/index.spec.tsx +0 -6
- frontend/js/pages/TeacherDashboardContractsLayout/TeacherDashboardContracts/index.spec.tsx +0 -6
- frontend/js/pages/TeacherDashboardContractsLayout/components/ContractActionsBar/index.spec.tsx +0 -6
- frontend/js/pages/TeacherDashboardContractsLayout/components/SignOrganizationContractButton/index.spec.tsx +0 -6
- frontend/js/utils/test/render.tsx +72 -0
- frontend/js/utils/test/wrappers/IntlWrapper.tsx +23 -0
- frontend/js/utils/test/wrappers/JoanieAppWrapper.tsx +42 -0
- frontend/js/utils/test/wrappers/PresentationalAppWrapper.tsx +18 -0
- frontend/js/utils/test/wrappers/ReactQueryWrapper.tsx +16 -0
- frontend/js/utils/test/wrappers/RouterWrapper.tsx +29 -0
- frontend/js/utils/test/wrappers/types.ts +26 -0
- frontend/js/widgets/Dashboard/components/DashboardItem/Contract/index.spec.tsx +0 -4
- frontend/js/widgets/Dashboard/components/DashboardItem/Enrollment/ProductCertificateFooter/index.spec.tsx +0 -7
- frontend/js/widgets/Dashboard/components/DashboardItem/Order/DashboardItemOrder.spec.tsx +0 -6
- frontend/js/widgets/Dashboard/components/DashboardItem/Order/DashboardItemOrderContract.spec.tsx +0 -6
- frontend/js/widgets/Dashboard/components/DashboardItem/Order/DashboardItemOrderContract.useUnionResource.cache.spec.tsx +0 -6
- frontend/js/widgets/Dashboard/components/NavigateWithParams/index.spec.tsx +31 -40
- frontend/js/widgets/Dashboard/components/TeacherDashboardProfileSidebar/components/OrganizationLinks/index.spec.tsx +9 -17
- frontend/js/widgets/Dashboard/components/TeacherDashboardProfileSidebar/index.spec.tsx +10 -44
- frontend/js/widgets/Search/components/SearchFilterGroup/index.spec.tsx +0 -5
- frontend/js/widgets/Search/components/SearchFilterGroupModal/index.spec.tsx +0 -5
- frontend/js/widgets/SyllabusCourseRunsList/components/CourseProductItem/index.spec.tsx +0 -7
- {richie-2.25.0b2.dev97.dist-info → richie-2.25.0b2.dev101.dist-info}/METADATA +1 -1
- {richie-2.25.0b2.dev97.dist-info → richie-2.25.0b2.dev101.dist-info}/RECORD +37 -30
- {richie-2.25.0b2.dev97.dist-info → richie-2.25.0b2.dev101.dist-info}/LICENSE +0 -0
- {richie-2.25.0b2.dev97.dist-info → richie-2.25.0b2.dev101.dist-info}/WHEEL +0 -0
- {richie-2.25.0b2.dev97.dist-info → richie-2.25.0b2.dev101.dist-info}/top_level.txt +0 -0
- {richie-2.25.0b2.dev97.dist-info → richie-2.25.0b2.dev101.dist-info}/zip-safe +0 -0
frontend/jest/setup.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
// Extend jest matchers with jest-dom's
|
|
2
2
|
import '@testing-library/jest-dom';
|
|
3
|
+
import fetchMock from 'fetch-mock';
|
|
3
4
|
import { Request, Response } from 'node-fetch';
|
|
4
5
|
import { FactoryConfig } from 'utils/test/factories/factories';
|
|
5
6
|
|
|
@@ -24,6 +25,15 @@ RESET_MODULE_EXCEPTIONS.forEach((moduleName) => {
|
|
|
24
25
|
});
|
|
25
26
|
});
|
|
26
27
|
|
|
28
|
+
beforeAll(() => {
|
|
29
|
+
// As dialog is rendered through a Portal, we have to add the DOM element in which the dialog will be rendered.
|
|
30
|
+
const modalExclude = document.createElement('div');
|
|
31
|
+
modalExclude.setAttribute('id', 'modal-exclude');
|
|
32
|
+
document.body.appendChild(modalExclude);
|
|
33
|
+
});
|
|
34
|
+
|
|
27
35
|
afterEach(() => {
|
|
28
36
|
FactoryConfig.resetUniqueStore();
|
|
37
|
+
fetchMock.restore();
|
|
38
|
+
jest.clearAllMocks();
|
|
29
39
|
});
|
|
@@ -42,12 +42,6 @@ describe('<AbstractContractFrame />', () => {
|
|
|
42
42
|
);
|
|
43
43
|
};
|
|
44
44
|
|
|
45
|
-
beforeAll(() => {
|
|
46
|
-
const modalExclude = document.createElement('div');
|
|
47
|
-
modalExclude.setAttribute('id', 'modal-exclude');
|
|
48
|
-
document.body.appendChild(modalExclude);
|
|
49
|
-
});
|
|
50
|
-
|
|
51
45
|
beforeEach(() => {
|
|
52
46
|
// SessionProvider api calls
|
|
53
47
|
fetchMock.get('https://joanie.endpoint/api/v1.0/addresses/', []);
|
|
@@ -27,7 +27,7 @@ describe('DjangoCMSTemplate', () => {
|
|
|
27
27
|
|
|
28
28
|
expect(initMock).not.toHaveBeenCalled();
|
|
29
29
|
render(<Wrapper />);
|
|
30
|
-
const expected = `<div><template class="cms-plugin cms-plugin-start plugin"></template>Hello world<template class="cms-plugin cms-plugin-end plugin"></template></div>`;
|
|
30
|
+
const expected = `<div id=\"modal-exclude\"></div><div><template class="cms-plugin cms-plugin-start plugin"></template>Hello world<template class="cms-plugin cms-plugin-end plugin"></template></div>`;
|
|
31
31
|
expect(document.body.innerHTML).toEqual(expected);
|
|
32
32
|
await waitFor(() => expect(initMock).toHaveBeenCalled());
|
|
33
33
|
});
|
|
@@ -40,7 +40,7 @@ describe('DjangoCMSTemplate', () => {
|
|
|
40
40
|
};
|
|
41
41
|
|
|
42
42
|
render(<Wrapper />);
|
|
43
|
-
const expected = `<div>Hello world</div>`;
|
|
43
|
+
const expected = `<div id=\"modal-exclude\"></div><div>Hello world</div>`;
|
|
44
44
|
expect(document.body.innerHTML).toEqual(expected);
|
|
45
45
|
});
|
|
46
46
|
});
|
|
@@ -3,12 +3,6 @@ import { IntlProvider } from 'react-intl';
|
|
|
3
3
|
import { Modal } from '.';
|
|
4
4
|
|
|
5
5
|
describe('<Modal />', () => {
|
|
6
|
-
beforeEach(() => {
|
|
7
|
-
const modalExclude = document.createElement('div');
|
|
8
|
-
modalExclude.setAttribute('id', 'modal-exclude');
|
|
9
|
-
document.body.appendChild(modalExclude);
|
|
10
|
-
});
|
|
11
|
-
|
|
12
6
|
it('merges custom classNames of type string with the default classes', () => {
|
|
13
7
|
render(
|
|
14
8
|
<IntlProvider locale="en">
|
|
@@ -28,13 +28,6 @@ jest.mock('utils/context', () => ({
|
|
|
28
28
|
}));
|
|
29
29
|
|
|
30
30
|
describe('PurchaseButton', () => {
|
|
31
|
-
beforeAll(() => {
|
|
32
|
-
// As dialog is rendered through a Portal, we have to add the DOM element in which the dialog will be rendered.
|
|
33
|
-
const modalExclude = document.createElement('div');
|
|
34
|
-
modalExclude.setAttribute('id', 'modal-exclude');
|
|
35
|
-
document.body.appendChild(modalExclude);
|
|
36
|
-
});
|
|
37
|
-
|
|
38
31
|
afterEach(() => {
|
|
39
32
|
fetchMock.restore();
|
|
40
33
|
});
|
|
@@ -36,13 +36,6 @@ jest.mock('utils/context', () => ({
|
|
|
36
36
|
}));
|
|
37
37
|
|
|
38
38
|
describe('SaleTunnel', () => {
|
|
39
|
-
beforeAll(() => {
|
|
40
|
-
// As dialog is rendered through a Portal, we have to add the DOM element in which the dialog will be rendered.
|
|
41
|
-
const modalExclude = document.createElement('div');
|
|
42
|
-
modalExclude.setAttribute('id', 'modal-exclude');
|
|
43
|
-
document.body.appendChild(modalExclude);
|
|
44
|
-
});
|
|
45
|
-
|
|
46
39
|
afterEach(() => {
|
|
47
40
|
fetchMock.restore();
|
|
48
41
|
});
|
|
@@ -40,12 +40,6 @@ describe('<SignContractButton/>', () => {
|
|
|
40
40
|
);
|
|
41
41
|
};
|
|
42
42
|
|
|
43
|
-
beforeAll(() => {
|
|
44
|
-
const modalExclude = document.createElement('div');
|
|
45
|
-
modalExclude.setAttribute('id', 'modal-exclude');
|
|
46
|
-
document.body.appendChild(modalExclude);
|
|
47
|
-
});
|
|
48
|
-
|
|
49
43
|
beforeEach(() => {
|
|
50
44
|
// JoanieSession api omniscient calls
|
|
51
45
|
fetchMock.get('https://joanie.endpoint/api/v1.0/addresses/', []);
|
|
@@ -39,12 +39,6 @@ interface FromContractTestData {
|
|
|
39
39
|
}
|
|
40
40
|
|
|
41
41
|
describe('<SignContractButton/>', () => {
|
|
42
|
-
beforeAll(() => {
|
|
43
|
-
const modalExclude = document.createElement('div');
|
|
44
|
-
modalExclude.setAttribute('id', 'modal-exclude');
|
|
45
|
-
document.body.appendChild(modalExclude);
|
|
46
|
-
});
|
|
47
|
-
|
|
48
42
|
describe.each<FromOrderTestData | FromContractTestData>([
|
|
49
43
|
{
|
|
50
44
|
testCase: TestCase.FROM_ORDER_WITH_CONTRACT,
|
|
@@ -53,13 +53,6 @@ describe('<DashboardContract/>', () => {
|
|
|
53
53
|
</QueryClientProvider>
|
|
54
54
|
);
|
|
55
55
|
|
|
56
|
-
beforeAll(() => {
|
|
57
|
-
// As dialog is rendered through a Portal, we have to add the DOM element in which the dialog will be rendered.
|
|
58
|
-
const modalExclude = document.createElement('div');
|
|
59
|
-
modalExclude.setAttribute('id', 'modal-exclude');
|
|
60
|
-
document.body.appendChild(modalExclude);
|
|
61
|
-
});
|
|
62
|
-
|
|
63
56
|
beforeEach(() => {
|
|
64
57
|
fetchMock.get('https://joanie.endpoint/api/v1.0/addresses/', []);
|
|
65
58
|
fetchMock.get('https://joanie.endpoint/api/v1.0/credit-cards/', []);
|
|
@@ -33,12 +33,6 @@ describe('<DashboardOrderLayout />', () => {
|
|
|
33
33
|
);
|
|
34
34
|
};
|
|
35
35
|
|
|
36
|
-
beforeAll(() => {
|
|
37
|
-
const modalExclude = document.createElement('div');
|
|
38
|
-
modalExclude.setAttribute('id', 'modal-exclude');
|
|
39
|
-
document.body.appendChild(modalExclude);
|
|
40
|
-
});
|
|
41
|
-
|
|
42
36
|
beforeEach(() => {
|
|
43
37
|
fetchMock.get('https://joanie.endpoint/api/v1.0/addresses/', []);
|
|
44
38
|
fetchMock.get('https://joanie.endpoint/api/v1.0/credit-cards/', []);
|
|
@@ -53,12 +53,6 @@ const Wrapper = ({ path, initialEntry }: { path: string; initialEntry: string })
|
|
|
53
53
|
};
|
|
54
54
|
|
|
55
55
|
describe('pages/TeacherDashboardContracts', () => {
|
|
56
|
-
beforeAll(() => {
|
|
57
|
-
const modalExclude = document.createElement('div');
|
|
58
|
-
modalExclude.setAttribute('id', 'modal-exclude');
|
|
59
|
-
document.body.appendChild(modalExclude);
|
|
60
|
-
});
|
|
61
|
-
|
|
62
56
|
beforeEach(() => {
|
|
63
57
|
// Joanie providers calls
|
|
64
58
|
fetchMock.get('https://joanie.test/api/v1.0/orders/', []);
|
frontend/js/pages/TeacherDashboardContractsLayout/components/ContractActionsBar/index.spec.tsx
CHANGED
|
@@ -58,12 +58,6 @@ describe('TeacherDashboardContractsLayout/ContractActionsBar', () => {
|
|
|
58
58
|
);
|
|
59
59
|
};
|
|
60
60
|
|
|
61
|
-
beforeAll(() => {
|
|
62
|
-
const modalExclude = document.createElement('div');
|
|
63
|
-
modalExclude.setAttribute('id', 'modal-exclude');
|
|
64
|
-
document.body.appendChild(modalExclude);
|
|
65
|
-
});
|
|
66
|
-
|
|
67
61
|
beforeEach(() => {
|
|
68
62
|
// useTeacherContractsToSign mocked values
|
|
69
63
|
mockCanSignContracts = true;
|
|
@@ -29,12 +29,6 @@ describe('TeacherDashboardContractsLayout/SignOrganizationContractButton', () =>
|
|
|
29
29
|
);
|
|
30
30
|
};
|
|
31
31
|
|
|
32
|
-
beforeAll(() => {
|
|
33
|
-
const modalExclude = document.createElement('div');
|
|
34
|
-
modalExclude.setAttribute('id', 'modal-exclude');
|
|
35
|
-
document.body.appendChild(modalExclude);
|
|
36
|
-
});
|
|
37
|
-
|
|
38
32
|
afterEach(() => {
|
|
39
33
|
fetchMock.restore();
|
|
40
34
|
});
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { RenderResult, screen, render as testingLibraryRender } from '@testing-library/react';
|
|
2
|
+
import React, { ReactElement } from 'react';
|
|
3
|
+
import { Nullable } from 'types/utils';
|
|
4
|
+
import { AppWrapperProps } from './wrappers/types';
|
|
5
|
+
import { JoanieAppWrapper } from './wrappers/JoanieAppWrapper';
|
|
6
|
+
|
|
7
|
+
// ------- setup -------
|
|
8
|
+
|
|
9
|
+
type CustomRenderResult = Omit<RenderResult, 'rerender'> & {
|
|
10
|
+
elementContainer: Nullable<HTMLElement>;
|
|
11
|
+
rerender: (
|
|
12
|
+
element: ReactElement,
|
|
13
|
+
options?: Partial<Omit<AppWrapperProps, 'testingLibraryOptions'>>,
|
|
14
|
+
) => void;
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
type RenderFunction = (
|
|
18
|
+
element: ReactElement,
|
|
19
|
+
options?: Partial<AppWrapperProps>,
|
|
20
|
+
) => CustomRenderResult;
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
*
|
|
24
|
+
* Custom render method base on react-testing-library render method.
|
|
25
|
+
* This will render {@param element} in JSDom and read options to configure context and render.
|
|
26
|
+
* It also override react-testing-library rerender method to also wrap the provided component in
|
|
27
|
+
* the same contexts.
|
|
28
|
+
*
|
|
29
|
+
* The provided {@param element} is to be wrapped in :
|
|
30
|
+
* - react router (react-router-dom)
|
|
31
|
+
* - react i18n context (react-intl)
|
|
32
|
+
* - query context (react-query)
|
|
33
|
+
*
|
|
34
|
+
* This function uses default values:
|
|
35
|
+
* options.intlOptions.locale : 'en'
|
|
36
|
+
* options.routerOptions.path : '/'
|
|
37
|
+
* options.queryOptions.client : {@see queryClient}
|
|
38
|
+
*
|
|
39
|
+
*
|
|
40
|
+
* @param element element to wrap in application contexts and test
|
|
41
|
+
* @param options options to configure and/or customize wrapped context for the test {@see RenderOptions}
|
|
42
|
+
* @returns an object with all values return by react-testing-library render methods
|
|
43
|
+
* and an other property {@property elementContainer} refering to the exact element containing the {@param element} to test
|
|
44
|
+
*
|
|
45
|
+
*
|
|
46
|
+
* @example
|
|
47
|
+
* customRender(<SomeComponentToTest />);
|
|
48
|
+
* customRender(<SomeComponentToTest />, { wrapper: WrapperPresentationalApp });
|
|
49
|
+
*/
|
|
50
|
+
export const render: RenderFunction = (
|
|
51
|
+
element: ReactElement,
|
|
52
|
+
options?: Partial<AppWrapperProps>,
|
|
53
|
+
) => {
|
|
54
|
+
const Wrapper = options?.wrapper === undefined ? JoanieAppWrapper : options?.wrapper;
|
|
55
|
+
const renderResult = testingLibraryRender(
|
|
56
|
+
Wrapper === null ? element : <Wrapper {...options}>{element}</Wrapper>,
|
|
57
|
+
options?.testingLibraryOptions,
|
|
58
|
+
);
|
|
59
|
+
|
|
60
|
+
return {
|
|
61
|
+
...renderResult,
|
|
62
|
+
elementContainer: screen.queryByTestId('test-component-container'),
|
|
63
|
+
rerender: (
|
|
64
|
+
rerenderElement: ReactElement,
|
|
65
|
+
rerenderOptions?: Partial<Omit<AppWrapperProps, 'testingLibraryOptions'>>,
|
|
66
|
+
) => {
|
|
67
|
+
return renderResult.rerender(
|
|
68
|
+
Wrapper === null ? element : <Wrapper {...rerenderOptions}>{rerenderElement}</Wrapper>,
|
|
69
|
+
);
|
|
70
|
+
},
|
|
71
|
+
};
|
|
72
|
+
};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { ComponentProps, PropsWithChildren } from 'react';
|
|
2
|
+
import { IntlProvider, ReactIntlErrorCode } from 'react-intl';
|
|
3
|
+
|
|
4
|
+
export interface IntlWrapperProps extends PropsWithChildren, ComponentProps<typeof IntlProvider> {}
|
|
5
|
+
|
|
6
|
+
export const IntlWrapper = ({ children, ...options }: IntlWrapperProps) => (
|
|
7
|
+
<IntlProvider
|
|
8
|
+
onError={(err) => {
|
|
9
|
+
// https://github.com/formatjs/formatjs/issues/465
|
|
10
|
+
if (
|
|
11
|
+
err.code === ReactIntlErrorCode.MISSING_TRANSLATION ||
|
|
12
|
+
err.code === ReactIntlErrorCode.MISSING_DATA
|
|
13
|
+
) {
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
throw err;
|
|
17
|
+
}}
|
|
18
|
+
{...options}
|
|
19
|
+
locale={options?.locale || 'en'}
|
|
20
|
+
>
|
|
21
|
+
{children}
|
|
22
|
+
</IntlProvider>
|
|
23
|
+
);
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { CunninghamProvider } from '@openfun/cunningham-react';
|
|
2
|
+
import { PropsWithChildren } from 'react';
|
|
3
|
+
import fetchMock from 'fetch-mock';
|
|
4
|
+
import JoanieSessionProvider from 'contexts/SessionContext/JoanieSessionProvider';
|
|
5
|
+
import { IntlWrapper } from './IntlWrapper';
|
|
6
|
+
import { ReactQueryWrapper } from './ReactQueryWrapper';
|
|
7
|
+
import { RouterWrapper } from './RouterWrapper';
|
|
8
|
+
import { AppWrapperProps } from './types';
|
|
9
|
+
|
|
10
|
+
export const setupJoanieSession = () => {
|
|
11
|
+
beforeEach(() => {
|
|
12
|
+
// JoanieSessionProvider inital requests
|
|
13
|
+
fetchMock.get('https://joanie.endpoint/api/v1.0/orders/', []);
|
|
14
|
+
fetchMock.get('https://joanie.endpoint/api/v1.0/addresses/', []);
|
|
15
|
+
fetchMock.get('https://joanie.endpoint/api/v1.0/credit-cards/', []);
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
return {
|
|
19
|
+
nbSessionApiRequest: 3,
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
export const JoanieSessionWrapper = ({ children }: PropsWithChildren) => {
|
|
24
|
+
return <JoanieSessionProvider>{children}</JoanieSessionProvider>;
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
export const JoanieAppWrapper = ({
|
|
28
|
+
children,
|
|
29
|
+
options,
|
|
30
|
+
}: PropsWithChildren<{ options?: AppWrapperProps }>) => {
|
|
31
|
+
return (
|
|
32
|
+
<IntlWrapper {...(options?.intlOptions || { locale: 'en' })}>
|
|
33
|
+
<CunninghamProvider>
|
|
34
|
+
<ReactQueryWrapper {...(options?.queryOptions || {})}>
|
|
35
|
+
<JoanieSessionWrapper>
|
|
36
|
+
<RouterWrapper {...options?.routerOptions}>{children}</RouterWrapper>
|
|
37
|
+
</JoanieSessionWrapper>
|
|
38
|
+
</ReactQueryWrapper>
|
|
39
|
+
</CunninghamProvider>
|
|
40
|
+
</IntlWrapper>
|
|
41
|
+
);
|
|
42
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { PropsWithChildren } from 'react';
|
|
2
|
+
import { CunninghamProvider } from '@openfun/cunningham-react';
|
|
3
|
+
import { IntlWrapper } from './IntlWrapper';
|
|
4
|
+
import { RouterWrapper } from './RouterWrapper';
|
|
5
|
+
import { AppWrapperProps } from './types';
|
|
6
|
+
|
|
7
|
+
export const PresentationalAppWrapper = ({
|
|
8
|
+
children,
|
|
9
|
+
options,
|
|
10
|
+
}: PropsWithChildren<{ options?: AppWrapperProps }>) => {
|
|
11
|
+
return (
|
|
12
|
+
<IntlWrapper {...(options?.intlOptions || { locale: 'en' })}>
|
|
13
|
+
<CunninghamProvider>
|
|
14
|
+
<RouterWrapper {...options?.routerOptions}>{children}</RouterWrapper>
|
|
15
|
+
</CunninghamProvider>
|
|
16
|
+
</IntlWrapper>
|
|
17
|
+
);
|
|
18
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { QueryClient } from '@tanstack/query-core';
|
|
2
|
+
import { QueryClientProvider } from '@tanstack/react-query';
|
|
3
|
+
import { PropsWithChildren } from 'react';
|
|
4
|
+
import { createTestQueryClient } from '../createTestQueryClient';
|
|
5
|
+
|
|
6
|
+
interface ReactQueryWrapperProps extends PropsWithChildren {
|
|
7
|
+
client?: QueryClient;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export const ReactQueryWrapper = ({ children, client }: ReactQueryWrapperProps) => {
|
|
11
|
+
return (
|
|
12
|
+
<QueryClientProvider client={client ?? createTestQueryClient({ user: true })}>
|
|
13
|
+
{children}
|
|
14
|
+
</QueryClientProvider>
|
|
15
|
+
);
|
|
16
|
+
};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { PropsWithChildren } from 'react';
|
|
2
|
+
import { RouteObject, RouterProvider, createMemoryRouter } from 'react-router-dom';
|
|
3
|
+
import { Maybe } from 'types/utils';
|
|
4
|
+
|
|
5
|
+
export interface RouterWrapperProps extends PropsWithChildren {
|
|
6
|
+
routes?: RouteObject[];
|
|
7
|
+
path?: string;
|
|
8
|
+
initialEntries?: Maybe<string[]>;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export const RouterWrapper = ({
|
|
12
|
+
children,
|
|
13
|
+
routes = [],
|
|
14
|
+
path = '/',
|
|
15
|
+
initialEntries,
|
|
16
|
+
}: RouterWrapperProps) => {
|
|
17
|
+
const router = createMemoryRouter(
|
|
18
|
+
routes.length > 0
|
|
19
|
+
? routes
|
|
20
|
+
: [
|
|
21
|
+
{
|
|
22
|
+
path,
|
|
23
|
+
element: children,
|
|
24
|
+
},
|
|
25
|
+
],
|
|
26
|
+
{ initialEntries: initialEntries || [path] },
|
|
27
|
+
);
|
|
28
|
+
return <RouterProvider router={router} />;
|
|
29
|
+
};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { PropsWithChildren } from 'react';
|
|
2
|
+
import { QueryClient } from '@tanstack/query-core';
|
|
3
|
+
import { RenderOptions as TestingLibraryRenderOptions } from '@testing-library/react';
|
|
4
|
+
import { Nullable } from 'types/utils';
|
|
5
|
+
import { IntlWrapperProps } from './IntlWrapper';
|
|
6
|
+
import { RouterWrapperProps } from './RouterWrapper';
|
|
7
|
+
|
|
8
|
+
interface QueryOptions {
|
|
9
|
+
client: QueryClient;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Options to configure the render of a component for a test
|
|
14
|
+
*
|
|
15
|
+
* @property testingLibraryOptions options provided by react-testing-library to the render method
|
|
16
|
+
* @property intlOptions options to configure i18n context
|
|
17
|
+
* @property routerOptions options to configure router and routes in the test
|
|
18
|
+
* @property queryOptions options to configure a custom client used by react-query for a test
|
|
19
|
+
*/
|
|
20
|
+
export interface AppWrapperProps {
|
|
21
|
+
wrapper?: Nullable<(props: PropsWithChildren<{ options?: AppWrapperProps }>) => JSX.Element>;
|
|
22
|
+
intlOptions?: IntlWrapperProps;
|
|
23
|
+
queryOptions?: QueryOptions;
|
|
24
|
+
routerOptions?: RouterWrapperProps;
|
|
25
|
+
testingLibraryOptions?: TestingLibraryRenderOptions;
|
|
26
|
+
}
|
|
@@ -50,10 +50,6 @@ describe.each([
|
|
|
50
50
|
beforeAll(() => {
|
|
51
51
|
// eslint-disable-next-line compat/compat
|
|
52
52
|
URL.createObjectURL = jest.fn();
|
|
53
|
-
|
|
54
|
-
const modalExclude = document.createElement('div');
|
|
55
|
-
modalExclude.setAttribute('id', 'modal-exclude');
|
|
56
|
-
document.body.appendChild(modalExclude);
|
|
57
53
|
});
|
|
58
54
|
|
|
59
55
|
beforeEach(() => {
|
|
@@ -67,13 +67,6 @@ describe('<ProductCertificateFooter/>', () => {
|
|
|
67
67
|
let product: CertificateProduct;
|
|
68
68
|
let course: CourseLight;
|
|
69
69
|
|
|
70
|
-
beforeAll(() => {
|
|
71
|
-
// As dialog is rendered through a Portal, we have to add the DOM element in which the dialog will be rendered.
|
|
72
|
-
const modalExclude = document.createElement('div');
|
|
73
|
-
modalExclude.setAttribute('id', 'modal-exclude');
|
|
74
|
-
document.body.appendChild(modalExclude);
|
|
75
|
-
});
|
|
76
|
-
|
|
77
70
|
beforeEach(() => {
|
|
78
71
|
fetchMock.get('https://joanie.endpoint.test/api/v1.0/addresses/', []);
|
|
79
72
|
fetchMock.get('https://joanie.endpoint.test/api/v1.0/credit-cards/', []);
|
|
@@ -83,12 +83,6 @@ describe('<DashboardItemOrder/>', () => {
|
|
|
83
83
|
);
|
|
84
84
|
};
|
|
85
85
|
|
|
86
|
-
beforeAll(() => {
|
|
87
|
-
const modalExclude = document.createElement('div');
|
|
88
|
-
modalExclude.setAttribute('id', 'modal-exclude');
|
|
89
|
-
document.body.appendChild(modalExclude);
|
|
90
|
-
});
|
|
91
|
-
|
|
92
86
|
beforeEach(() => {
|
|
93
87
|
fetchMock.get('https://joanie.endpoint/api/v1.0/addresses/', []);
|
|
94
88
|
fetchMock.get('https://joanie.endpoint/api/v1.0/credit-cards/', []);
|
frontend/js/widgets/Dashboard/components/DashboardItem/Order/DashboardItemOrderContract.spec.tsx
CHANGED
|
@@ -55,12 +55,6 @@ describe('<DashboardItemOrder/> Contract', () => {
|
|
|
55
55
|
);
|
|
56
56
|
};
|
|
57
57
|
|
|
58
|
-
beforeAll(() => {
|
|
59
|
-
const modalExclude = document.createElement('div');
|
|
60
|
-
modalExclude.setAttribute('id', 'modal-exclude');
|
|
61
|
-
document.body.appendChild(modalExclude);
|
|
62
|
-
});
|
|
63
|
-
|
|
64
58
|
beforeEach(() => {
|
|
65
59
|
fetchMock.get('https://joanie.endpoint/api/v1.0/addresses/', []);
|
|
66
60
|
fetchMock.get('https://joanie.endpoint/api/v1.0/credit-cards/', []);
|
|
@@ -47,12 +47,6 @@ describe('<DashboardItemOrder/> Contract', () => {
|
|
|
47
47
|
);
|
|
48
48
|
};
|
|
49
49
|
|
|
50
|
-
beforeAll(() => {
|
|
51
|
-
const modalExclude = document.createElement('div');
|
|
52
|
-
modalExclude.setAttribute('id', 'modal-exclude');
|
|
53
|
-
document.body.appendChild(modalExclude);
|
|
54
|
-
});
|
|
55
|
-
|
|
56
50
|
beforeEach(() => {
|
|
57
51
|
jest.useFakeTimers();
|
|
58
52
|
jest.clearAllTimers();
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { screen } from '@testing-library/react';
|
|
2
|
+
import { Outlet } from 'react-router-dom';
|
|
3
3
|
import { RichieContextFactory as mockRichieContextFactory } from 'utils/test/factories/richie';
|
|
4
4
|
import LocationDisplay from 'utils/test/LocationDisplay';
|
|
5
|
+
import { render } from 'utils/test/render';
|
|
6
|
+
import { RouterWrapper } from 'utils/test/wrappers/RouterWrapper';
|
|
5
7
|
import NavigateWithParams from '.';
|
|
6
8
|
|
|
7
9
|
jest.mock('utils/context', () => ({
|
|
@@ -15,46 +17,35 @@ jest.mock('utils/indirection/window', () => ({
|
|
|
15
17
|
},
|
|
16
18
|
}));
|
|
17
19
|
|
|
18
|
-
interface RenderTestRouterProps {
|
|
19
|
-
url?: string;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
const renderTestRouter = ({ url = '/myTestId' }: RenderTestRouterProps = {}) => {
|
|
23
|
-
const routes = [
|
|
24
|
-
{
|
|
25
|
-
path: '/:testId',
|
|
26
|
-
element: (
|
|
27
|
-
<div>
|
|
28
|
-
<h1>NavigateWithParams test</h1>
|
|
29
|
-
<Outlet />
|
|
30
|
-
</div>
|
|
31
|
-
),
|
|
32
|
-
children: [
|
|
33
|
-
{
|
|
34
|
-
index: true,
|
|
35
|
-
element: <NavigateWithParams to="/:testId/childRoute" replace />,
|
|
36
|
-
},
|
|
37
|
-
{
|
|
38
|
-
path: '/:testId/childRoute',
|
|
39
|
-
element: (
|
|
40
|
-
<div>
|
|
41
|
-
<h2>NavigateWithParams child route</h2>
|
|
42
|
-
<LocationDisplay />
|
|
43
|
-
</div>
|
|
44
|
-
),
|
|
45
|
-
},
|
|
46
|
-
],
|
|
47
|
-
},
|
|
48
|
-
];
|
|
49
|
-
|
|
50
|
-
const router = createMemoryRouter(routes, { initialEntries: [url] });
|
|
51
|
-
|
|
52
|
-
return render(<RouterProvider router={router} />);
|
|
53
|
-
};
|
|
54
|
-
|
|
55
20
|
describe('<NavigateWithParams />', () => {
|
|
56
21
|
it('should navigate with parent route params', async () => {
|
|
57
|
-
|
|
22
|
+
const routes = [
|
|
23
|
+
{
|
|
24
|
+
path: '/:testId',
|
|
25
|
+
element: (
|
|
26
|
+
<div>
|
|
27
|
+
<h1>NavigateWithParams test</h1>
|
|
28
|
+
<Outlet />
|
|
29
|
+
</div>
|
|
30
|
+
),
|
|
31
|
+
children: [
|
|
32
|
+
{
|
|
33
|
+
index: true,
|
|
34
|
+
element: <NavigateWithParams to="/:testId/childRoute" replace />,
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
path: '/:testId/childRoute',
|
|
38
|
+
element: (
|
|
39
|
+
<div>
|
|
40
|
+
<h2>NavigateWithParams child route</h2>
|
|
41
|
+
<LocationDisplay />
|
|
42
|
+
</div>
|
|
43
|
+
),
|
|
44
|
+
},
|
|
45
|
+
],
|
|
46
|
+
},
|
|
47
|
+
];
|
|
48
|
+
render(<RouterWrapper routes={routes} initialEntries={['/myTestId']} />, { wrapper: null });
|
|
58
49
|
expect(await screen.findByRole('heading', { name: /NavigateWithParams test/ }));
|
|
59
50
|
expect(screen.getByRole('heading', { name: /NavigateWithParams child route/ }));
|
|
60
51
|
expect(screen.getByTestId('test-location-display')).toHaveTextContent('/myTestId/childRoute');
|
|
@@ -1,20 +1,16 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { MemoryRouter } from 'react-router-dom';
|
|
3
|
-
import { IntlProvider } from 'react-intl';
|
|
1
|
+
import { screen } from '@testing-library/react';
|
|
4
2
|
import { OrganizationFactory } from 'utils/test/factories/joanie';
|
|
3
|
+
import { render } from 'utils/test/render';
|
|
4
|
+
import { PresentationalAppWrapper } from 'utils/test/wrappers/PresentationalAppWrapper';
|
|
5
5
|
import OrganizationLinks from '.';
|
|
6
6
|
|
|
7
7
|
describe('OrganizationLinks', () => {
|
|
8
8
|
it('should render successfully organization with logo', () => {
|
|
9
9
|
const organization = OrganizationFactory({ title: 'Organization 1' }).one();
|
|
10
10
|
|
|
11
|
-
render(
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
<OrganizationLinks organizations={[organization]} />
|
|
15
|
-
</MemoryRouter>
|
|
16
|
-
</IntlProvider>,
|
|
17
|
-
);
|
|
11
|
+
render(<OrganizationLinks organizations={[organization]} />, {
|
|
12
|
+
wrapper: PresentationalAppWrapper,
|
|
13
|
+
});
|
|
18
14
|
|
|
19
15
|
// A link to the organization should be rendered
|
|
20
16
|
const link = screen.getByRole('link', { name: 'Organization 1' });
|
|
@@ -34,13 +30,9 @@ describe('OrganizationLinks', () => {
|
|
|
34
30
|
it('should render successfully organization with abbr', () => {
|
|
35
31
|
const organization = OrganizationFactory({ title: 'Organization 1', logo: null }).one();
|
|
36
32
|
|
|
37
|
-
render(
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
<OrganizationLinks organizations={[organization]} />
|
|
41
|
-
</MemoryRouter>
|
|
42
|
-
</IntlProvider>,
|
|
43
|
-
);
|
|
33
|
+
render(<OrganizationLinks organizations={[organization]} />, {
|
|
34
|
+
wrapper: PresentationalAppWrapper,
|
|
35
|
+
});
|
|
44
36
|
|
|
45
37
|
// A link to the organization should be rendered
|
|
46
38
|
const link = screen.getByRole('link', { name: 'Organization 1' });
|
|
@@ -1,23 +1,15 @@
|
|
|
1
1
|
import fetchMock from 'fetch-mock';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { QueryClientProvider } from '@tanstack/react-query';
|
|
6
|
-
import { PropsWithChildren } from 'react';
|
|
7
|
-
import { CunninghamProvider } from '@openfun/cunningham-react';
|
|
8
|
-
import {
|
|
9
|
-
RichieContextFactory as mockRichieContextFactory,
|
|
10
|
-
UserFactory,
|
|
11
|
-
} from 'utils/test/factories/richie';
|
|
2
|
+
import { screen } from '@testing-library/react';
|
|
3
|
+
import { createIntl } from 'react-intl';
|
|
4
|
+
import { RichieContextFactory as mockRichieContextFactory } from 'utils/test/factories/richie';
|
|
12
5
|
import {
|
|
13
6
|
TEACHER_DASHBOARD_ROUTE_LABELS,
|
|
14
7
|
TeacherDashboardPaths,
|
|
15
8
|
} from 'widgets/Dashboard/utils/teacherRouteMessages';
|
|
16
|
-
import { createTestQueryClient } from 'utils/test/createTestQueryClient';
|
|
17
|
-
import JoanieSessionProvider from 'contexts/SessionContext/JoanieSessionProvider';
|
|
18
9
|
import { OrganizationFactory } from 'utils/test/factories/joanie';
|
|
19
10
|
import { messages as organizationLinksMessages } from 'widgets/Dashboard/components/TeacherDashboardProfileSidebar/components/OrganizationLinks';
|
|
20
|
-
|
|
11
|
+
import { render } from 'utils/test/render';
|
|
12
|
+
import { setupJoanieSession } from 'utils/test/wrappers/JoanieAppWrapper';
|
|
21
13
|
import { TeacherDashboardProfileSidebar } from '.';
|
|
22
14
|
|
|
23
15
|
jest.mock('utils/context', () => ({
|
|
@@ -37,39 +29,17 @@ jest.mock('utils/indirection/window', () => ({
|
|
|
37
29
|
const intl = createIntl({ locale: 'en' });
|
|
38
30
|
|
|
39
31
|
describe('<TeacherDashboardProfileSidebar/>', () => {
|
|
40
|
-
const
|
|
41
|
-
|
|
42
|
-
<QueryClientProvider client={createTestQueryClient({ user: UserFactory().one() })}>
|
|
43
|
-
<JoanieSessionProvider>
|
|
44
|
-
<MemoryRouter>
|
|
45
|
-
<CunninghamProvider>{children}</CunninghamProvider>
|
|
46
|
-
</MemoryRouter>
|
|
47
|
-
</JoanieSessionProvider>
|
|
48
|
-
</QueryClientProvider>
|
|
49
|
-
</IntlProvider>
|
|
50
|
-
);
|
|
32
|
+
const joanieSessionData = setupJoanieSession();
|
|
33
|
+
|
|
51
34
|
let nbApiRequest: number;
|
|
52
35
|
beforeEach(() => {
|
|
53
36
|
fetchMock.get('https://joanie.endpoint/api/v1.0/organizations/', []);
|
|
54
|
-
|
|
55
|
-
// JoanieSessionProvider inital requests
|
|
56
|
-
nbApiRequest = 3;
|
|
57
|
-
fetchMock.get('https://joanie.endpoint/api/v1.0/orders/', []);
|
|
58
|
-
fetchMock.get('https://joanie.endpoint/api/v1.0/addresses/', []);
|
|
59
|
-
fetchMock.get('https://joanie.endpoint/api/v1.0/credit-cards/', []);
|
|
60
|
-
});
|
|
61
|
-
afterEach(() => {
|
|
62
|
-
jest.clearAllMocks();
|
|
63
|
-
fetchMock.restore();
|
|
37
|
+
nbApiRequest = joanieSessionData.nbSessionApiRequest;
|
|
64
38
|
});
|
|
65
39
|
|
|
66
40
|
it('should display menu items', async () => {
|
|
67
41
|
nbApiRequest += 1; // call to organizations
|
|
68
|
-
render(
|
|
69
|
-
<Wrapper>
|
|
70
|
-
<TeacherDashboardProfileSidebar />
|
|
71
|
-
</Wrapper>,
|
|
72
|
-
);
|
|
42
|
+
render(<TeacherDashboardProfileSidebar />);
|
|
73
43
|
|
|
74
44
|
expect(
|
|
75
45
|
screen.getByRole('link', {
|
|
@@ -90,11 +60,7 @@ describe('<TeacherDashboardProfileSidebar/>', () => {
|
|
|
90
60
|
overwriteRoutes: true,
|
|
91
61
|
});
|
|
92
62
|
nbApiRequest += 1; // call to organizations
|
|
93
|
-
render(
|
|
94
|
-
<Wrapper>
|
|
95
|
-
<TeacherDashboardProfileSidebar />
|
|
96
|
-
</Wrapper>,
|
|
97
|
-
);
|
|
63
|
+
render(<TeacherDashboardProfileSidebar />);
|
|
98
64
|
expect(await screen.findByTestId('organization-links')).toBeInTheDocument();
|
|
99
65
|
expect(fetchMock.calls()).toHaveLength(nbApiRequest);
|
|
100
66
|
|
|
@@ -53,11 +53,6 @@ describe('widgets/Search/components/SearchFilterGroup', () => {
|
|
|
53
53
|
};
|
|
54
54
|
|
|
55
55
|
beforeEach(jest.resetAllMocks);
|
|
56
|
-
beforeEach(() => {
|
|
57
|
-
const modalExclude = document.createElement('div');
|
|
58
|
-
modalExclude.setAttribute('id', 'modal-exclude');
|
|
59
|
-
document.body.appendChild(modalExclude);
|
|
60
|
-
});
|
|
61
56
|
|
|
62
57
|
it('renders the name of the filter with the values as SearchFilters', () => {
|
|
63
58
|
render(
|
|
@@ -63,11 +63,6 @@ describe('<SearchFilterGroupModal />', () => {
|
|
|
63
63
|
|
|
64
64
|
beforeEach(() => fetchMock.restore());
|
|
65
65
|
beforeEach(jest.resetAllMocks);
|
|
66
|
-
beforeEach(() => {
|
|
67
|
-
const modalExclude = document.createElement('div');
|
|
68
|
-
modalExclude.setAttribute('id', 'modal-exclude');
|
|
69
|
-
document.body.appendChild(modalExclude);
|
|
70
|
-
});
|
|
71
66
|
|
|
72
67
|
it('renders a button with a modal to search values for a given filter', async () => {
|
|
73
68
|
{
|
|
@@ -71,13 +71,6 @@ describe('CourseProductItem', () => {
|
|
|
71
71
|
style: 'currency',
|
|
72
72
|
}).format(price);
|
|
73
73
|
|
|
74
|
-
beforeAll(() => {
|
|
75
|
-
// As dialog is rendered through a Portal, we have to add the DOM element in which the dialog will be rendered.
|
|
76
|
-
const modalExclude = document.createElement('div');
|
|
77
|
-
modalExclude.setAttribute('id', 'modal-exclude');
|
|
78
|
-
document.body.appendChild(modalExclude);
|
|
79
|
-
});
|
|
80
|
-
|
|
81
74
|
beforeEach(() => {
|
|
82
75
|
// JoanieSessionProvider requests
|
|
83
76
|
fetchMock.get('https://joanie.test/api/v1.0/addresses/', []);
|
|
@@ -29,7 +29,7 @@ frontend/i18n/locales/pt-PT.json,sha256=01gz1z8D4gy_A-dunKXjbJed4liqTU_UF00YM5pF
|
|
|
29
29
|
frontend/i18n/locales/ru-RU.json,sha256=NH1g2engTLnzB5uTSf6eveesyfvKlSZl71MSDNRtggE,83844
|
|
30
30
|
frontend/i18n/locales/vi-VN.json,sha256=VpAQVbjtkDmPzK_-QwtIeY7UJh8b2N5smZSSRaNT9jQ,81205
|
|
31
31
|
frontend/jest/resolver.js,sha256=4z7-wQkCnESJaYqydt6N6YWXt9NMpU4XnmU4yjYEZ-E,1537
|
|
32
|
-
frontend/jest/setup.ts,sha256=
|
|
32
|
+
frontend/jest/setup.ts,sha256=HxjhHWrbEn8z1XDSSNhS6lgPYAf9N6IWbSZUPgmWRgI,1257
|
|
33
33
|
frontend/js/index.tsx,sha256=dGLR5CGfkrNUHoVeZaIpZSG3RiiZ-xeMHldid8_3pXY,5310
|
|
34
34
|
frontend/js/mockServiceWorker.js,sha256=BY7UoAMYNurVdR_7pjvJr28sweeSS1gnqKIpNSeYAQA,8196
|
|
35
35
|
frontend/js/settings.dev.dist.ts,sha256=ogD8HXCS-1GScZwc4tJA_QO9PR-45sIGFgrz8FYEgWk,112
|
|
@@ -81,7 +81,7 @@ frontend/js/components/Badge/index.tsx,sha256=VjbN3ijNtCOhQkR3Z5r0XbgD4pCLFpVMBL
|
|
|
81
81
|
frontend/js/components/Banner/index.spec.tsx,sha256=phIllm_buSpppMpXoxz6spGeh62tSi4MRZGEwLMixvY,1113
|
|
82
82
|
frontend/js/components/Banner/index.stories.tsx,sha256=6_8yv8_WLlca2W-gRF1xyrmVXWcYK587OxErRt-QtjQ,563
|
|
83
83
|
frontend/js/components/Banner/index.tsx,sha256=k9OL3fLXVsTWT0CKSYlih-1Ahh1iHsKe1MzdbaMIrjw,812
|
|
84
|
-
frontend/js/components/ContractFrame/AbstractContractFrame.spec.tsx,sha256=
|
|
84
|
+
frontend/js/components/ContractFrame/AbstractContractFrame.spec.tsx,sha256=l9fjaJ5STEFKy5mUA6AsyH_RSbsTorzwXqntMocNJW0,11993
|
|
85
85
|
frontend/js/components/ContractFrame/AbstractContractFrame.tsx,sha256=OkVwzsMKf1mtqRfVpbGCbZUGU4e0c8H-6pWEyWrdxoU,9255
|
|
86
86
|
frontend/js/components/ContractFrame/LearnerContractFrame.spec.tsx,sha256=iQVHJCN0jgJtDNfNo3ROBAE19TF9tDvfANmjDOYbOgY,4703
|
|
87
87
|
frontend/js/components/ContractFrame/LearnerContractFrame.tsx,sha256=tC18BtdzKWqE8GMO99ijKepN2v05emrlkhrfMLtdGyQ,1341
|
|
@@ -102,7 +102,7 @@ frontend/js/components/CourseGlimpseList/index.spec.tsx,sha256=brdHhBYRE2mA6Lgl7
|
|
|
102
102
|
frontend/js/components/CourseGlimpseList/index.stories.tsx,sha256=oO2bHuZlEnRH_0NJEyIUaetmCzoJKQurbMPuJXNZVYs,593
|
|
103
103
|
frontend/js/components/CourseGlimpseList/index.tsx,sha256=a6ocNzF6OJKYa25T-gKfGrMbzij3dIyQj3Ycx9IJ-Jo,2681
|
|
104
104
|
frontend/js/components/CourseGlimpseList/utils.ts,sha256=KtEIklf4VLNQJHKi0IQTc7LkBmAvbkqEiQuExk0XMho,549
|
|
105
|
-
frontend/js/components/DjangoCMSTemplate/index.spec.tsx,sha256
|
|
105
|
+
frontend/js/components/DjangoCMSTemplate/index.spec.tsx,sha256=ivRDRHeiRQ-4NJtGO5JeNpMOdi-9z_x_GB0oxBSpucM,1543
|
|
106
106
|
frontend/js/components/DjangoCMSTemplate/index.tsx,sha256=htAjYdk2N_7kn0SeRAZu2hsykiFDRDv-oy30vs2p9HU,1400
|
|
107
107
|
frontend/js/components/DownloadCertificateButton/index.tsx,sha256=LDCSyJtUNA21NtXUorxSeKw4FJ6tcuXW5Gss2EU8nc4,1671
|
|
108
108
|
frontend/js/components/DownloadContractButton/index.spec.tsx,sha256=6JIoZ4ep_joSmUmLONE_xHNogZax0A0m61GjdNSlFDU,5496
|
|
@@ -123,7 +123,7 @@ frontend/js/components/Icon/index.spec.tsx,sha256=8c4vDeXy369o96Flk4UujsO31ovHMY
|
|
|
123
123
|
frontend/js/components/Icon/index.stories.tsx,sha256=S-IeSi14f3xlt4gvrPKo5SljMO1SnwVMZVk16ELHU6c,2809
|
|
124
124
|
frontend/js/components/Icon/index.tsx,sha256=8rg00u3sfbGbKJ3OvhzVu3foUMDnykvIET6_Km3VhPE,2370
|
|
125
125
|
frontend/js/components/Modal/_styles.scss,sha256=5h-8Iirm_WOevg_L7LNJey2-CsVHL0TzMZiarhQderc,1574
|
|
126
|
-
frontend/js/components/Modal/index.spec.tsx,sha256=
|
|
126
|
+
frontend/js/components/Modal/index.spec.tsx,sha256=AAMUX5_vXEd_ia_4UJaVnm0PLZXnHDwDUWi5bPv3oGE,2753
|
|
127
127
|
frontend/js/components/Modal/index.stories.tsx,sha256=mD7qzbTnwmToN1-jxHEl_P-Zi9wiSER_ALB4LIvGnKY,915
|
|
128
128
|
frontend/js/components/Modal/index.tsx,sha256=uugQWU-i4QHdQwL31JFp-sZ-zN1BO2biIhEuba4CaKw,3011
|
|
129
129
|
frontend/js/components/Pagination/index.spec.tsx,sha256=AwsmPYQ2dGY9hIIejPxXBWxX3XdD1FP7pgyUN7haOe8,8621
|
|
@@ -137,7 +137,7 @@ frontend/js/components/PaymentButton/components/PaymentInterfaces/index.spec.tsx
|
|
|
137
137
|
frontend/js/components/PaymentButton/components/PaymentInterfaces/index.tsx,sha256=Tbu06nMUJcsGpvhH83YuMeQ88nMXCLBqR8559Jaca2Y,1407
|
|
138
138
|
frontend/js/components/PaymentButton/components/PaymentInterfaces/__mocks__/index.tsx,sha256=yOwib4Bq2QjtApflnscDHJUvEzcM5QmA0CYjbZOUJuk,708
|
|
139
139
|
frontend/js/components/PaymentButton/hooks/useTerms.tsx,sha256=ZFxB12tXbwZvntynEc0benEiPZZP3Npgqk4faYBKs9E,2317
|
|
140
|
-
frontend/js/components/PurchaseButton/index.spec.tsx,sha256=
|
|
140
|
+
frontend/js/components/PurchaseButton/index.spec.tsx,sha256=eUmOi_xLUESQxHc7SS6kYZp5gFxmfM-GlxtHhD2fZP4,12470
|
|
141
141
|
frontend/js/components/PurchaseButton/index.stories.tsx,sha256=3RpmgeAztFP7LDZjtEsfycFKRmcmpBdaUNwrzj5GJxc,410
|
|
142
142
|
frontend/js/components/PurchaseButton/index.tsx,sha256=jPN7j-7PWW8tKO128se7qAVt-99B81FAUQk8n_iEEcg,5590
|
|
143
143
|
frontend/js/components/PurchaseButton/styles.scss,sha256=UiQjhf_faL4HELXmNax8X7cZdUVtwV2yGYClCR8AzPE,191
|
|
@@ -147,7 +147,7 @@ frontend/js/components/RegisteredAddress/index.stories.tsx,sha256=zNbtZceN642ot0
|
|
|
147
147
|
frontend/js/components/RegisteredAddress/index.tsx,sha256=VwcclF1GY4BsulD99IAIWr0kbGqQyQVYfk-ng62DVXo,3883
|
|
148
148
|
frontend/js/components/SaleTunnel/_styles.scss,sha256=ojni3VvKsNq9Tbp17bOMN_qla--bS00TRxrl9d2Hby8,176
|
|
149
149
|
frontend/js/components/SaleTunnel/context.tsx,sha256=RLJRRW7Cmhz8MqGhCe7qW7Rm5m8NKGiKBCuK-nwtkLM,1142
|
|
150
|
-
frontend/js/components/SaleTunnel/index.spec.tsx,sha256=
|
|
150
|
+
frontend/js/components/SaleTunnel/index.spec.tsx,sha256=FyBLEkz3iJLO0XgdTmFjgEQZmoK9Fx1vofBga2Pbaz4,5151
|
|
151
151
|
frontend/js/components/SaleTunnel/index.tsx,sha256=XLlEbmvQ5AQV2sZRcDEvZ-M4e13HemS4uIIF77YDXpE,6365
|
|
152
152
|
frontend/js/components/SaleTunnel/components/RegisteredCreditCard/_styles.scss,sha256=ARvb3TRxtiU8Yj9KCIYkBA7vP3D8Sgq8LyuE7GTNl50,667
|
|
153
153
|
frontend/js/components/SaleTunnel/components/RegisteredCreditCard/index.spec.tsx,sha256=Kq3M_zheKSm0Q2Fa28k_1ToixqDY2AP5SVa08N_5WeQ,2783
|
|
@@ -169,8 +169,8 @@ frontend/js/components/SaleTunnel/components/StepBreadcrumb/index.tsx,sha256=APD
|
|
|
169
169
|
frontend/js/components/SearchInput/_styles.scss,sha256=8yhJcI4ZBZGNtn_KbqnsxQsDmvInbAXc3dA485cDQv4,345
|
|
170
170
|
frontend/js/components/SearchInput/index.spec.tsx,sha256=4o_YdeWkLlaxmDHqfX26FtqDGRtV-cZOKIZp0RTGuYE,1285
|
|
171
171
|
frontend/js/components/SearchInput/index.tsx,sha256=6Pd1nFJidWGe-6nKiAkciFOMtypf4Y1n__zA4Qpuna4,1437
|
|
172
|
-
frontend/js/components/SignContractButton/index.omniscientOrders.spec.tsx,sha256=
|
|
173
|
-
frontend/js/components/SignContractButton/index.spec.tsx,sha256=
|
|
172
|
+
frontend/js/components/SignContractButton/index.omniscientOrders.spec.tsx,sha256=Wwa1pcSgYMCuF8LVoHEH2Qj4AWMhrwt9gqkF2J2Z0hw,4768
|
|
173
|
+
frontend/js/components/SignContractButton/index.spec.tsx,sha256=zGP46EeNJX6BlQYbSYEMu8oWoT3-s7ShcAkFXgaCx_k,8398
|
|
174
174
|
frontend/js/components/SignContractButton/index.tsx,sha256=bP0yuS6AIkTu7NNIgscBBgW2nQwuCXWj-4Dx4wqXeTE,3406
|
|
175
175
|
frontend/js/components/Spinner/_styles.scss,sha256=0SOyJxsNU3cGK4k3lUn3xnrLmsi_dxbXIBRKAHxtQQk,940
|
|
176
176
|
frontend/js/components/Spinner/index.stories.tsx,sha256=FYVTK1XxvKee5fVQ2alAC99yrbdlxuTonWPK_kw3U6c,436
|
|
@@ -268,7 +268,7 @@ frontend/js/pages/DashboardCertificates/_styles.scss,sha256=6kcG1-rQNEvEzpt-7A7W
|
|
|
268
268
|
frontend/js/pages/DashboardCertificates/index.spec.tsx,sha256=HwSojV0lGezqPaXmD0N5ICRRuB_CXfawfIDAqiLpONw,6360
|
|
269
269
|
frontend/js/pages/DashboardCertificates/index.tsx,sha256=X75oZCX9v4WX6lx16JIblKcBX30htvRJ9Ec8U2smMww,2568
|
|
270
270
|
frontend/js/pages/DashboardContracts/_styles.scss,sha256=jr_KUqAPad7MZrZni8X1m8WsiVI__9Dd_2W3jH7Gf-A,127
|
|
271
|
-
frontend/js/pages/DashboardContracts/index.spec.tsx,sha256=
|
|
271
|
+
frontend/js/pages/DashboardContracts/index.spec.tsx,sha256=mGyo9816J4ODJ2quZzWbQMgqHIOc0vy9TGNv0U85eeE,4958
|
|
272
272
|
frontend/js/pages/DashboardContracts/index.tsx,sha256=jOotbntCevSBShQUYZU3my3rw4U13_iKQoNz323xSr8,2594
|
|
273
273
|
frontend/js/pages/DashboardCourses/_styles.scss,sha256=8LrtjWUetvjDKp8Sq3kusXB-R53hm6b9_O1YJKbQzN4,386
|
|
274
274
|
frontend/js/pages/DashboardCourses/index.spec.tsx,sha256=6FsNpxQy1p9h1GJPa4LjSZ61Cjd7rqA0kCyJ7kSdk4M,11159
|
|
@@ -286,24 +286,24 @@ frontend/js/pages/DashboardCreditCardsManagement/index.spec.tsx,sha256=GqDeedyjK
|
|
|
286
286
|
frontend/js/pages/DashboardCreditCardsManagement/index.stories.tsx,sha256=8QXdkd1WNy0k8Bah1t8-8o-kT6BE1fjAlRHBK21G6Ww,633
|
|
287
287
|
frontend/js/pages/DashboardCreditCardsManagement/index.tsx,sha256=Vplbc14IygiNhkeisQOifvc0oUxNVlIwbyeE2a6LP_M,3048
|
|
288
288
|
frontend/js/pages/DashboardOrderLayout/_styles.scss,sha256=AcmSmDHP5sQsMmPM5_1enIj-Kz282DIllQS1rhuyXYM,75
|
|
289
|
-
frontend/js/pages/DashboardOrderLayout/index.spec.tsx,sha256=
|
|
289
|
+
frontend/js/pages/DashboardOrderLayout/index.spec.tsx,sha256=2I0z46DGx2JbvTWK7ZMni1CKdqD2B_zCAh1iQAjjZmU,2860
|
|
290
290
|
frontend/js/pages/DashboardOrderLayout/index.tsx,sha256=t_gHshUgr3lBnANLP91EsCKB-xJnLe3LqXt7jS5J0co,1895
|
|
291
291
|
frontend/js/pages/DashboardPreferences/_styles.scss,sha256=s51zjGYiSwVItgOcSc3ticyQyRldQudj2-Q0EEeAtjU,83
|
|
292
292
|
frontend/js/pages/DashboardPreferences/index.tsx,sha256=Krymqhr4LLH_E_tOTE3a02S6NDtm1ah0UlZ8rHFrDcw,1075
|
|
293
293
|
frontend/js/pages/TeacherDashboardContractsLayout/index.ts,sha256=aTOe8e4-hn5oVlCRCxjA84a0zS4dCY_4rBNReXcgrWM,206
|
|
294
294
|
frontend/js/pages/TeacherDashboardContractsLayout/styles.scss,sha256=Oj_orCo25_FGFM8Mlb6zuHfkXr6OAvxMaEvkCKzMc_E,266
|
|
295
|
-
frontend/js/pages/TeacherDashboardContractsLayout/TeacherDashboardContracts/index.spec.tsx,sha256=
|
|
295
|
+
frontend/js/pages/TeacherDashboardContractsLayout/TeacherDashboardContracts/index.spec.tsx,sha256=WAo0OpllWxuk-WUWmQFGwsoxsWWelv0PlhjHw6MPCNg,13583
|
|
296
296
|
frontend/js/pages/TeacherDashboardContractsLayout/TeacherDashboardContracts/index.tsx,sha256=EgSANYrbTX5TXnxteJCf-_GQYxM1GIL566KW9QSJedo,4536
|
|
297
297
|
frontend/js/pages/TeacherDashboardContractsLayout/TeacherDashboardCourseContractsLayout/index.tsx,sha256=B7FMfhsTnbj5a8NjkkGJk8MRqPsdcVJ7IWArXKal2CE,944
|
|
298
298
|
frontend/js/pages/TeacherDashboardContractsLayout/TeacherDashboardOrganizationContractsLayout/index.tsx,sha256=o4QA7ie02_TYLOt51lIT3K8bLhX3mhfKSF6l7C8AfOg,978
|
|
299
299
|
frontend/js/pages/TeacherDashboardContractsLayout/components/BulkDownloadContractButton/index.spec.tsx,sha256=5xwRCsN17yTSHgs79erCHzlC28qcCz0fpNAm1QL17G4,4869
|
|
300
300
|
frontend/js/pages/TeacherDashboardContractsLayout/components/BulkDownloadContractButton/index.timer.spec.tsx,sha256=vkJmsD84gcdWB7pyy0ZVj_Y7V_lGiYbLpRWLlaDpdvc,4996
|
|
301
301
|
frontend/js/pages/TeacherDashboardContractsLayout/components/BulkDownloadContractButton/index.tsx,sha256=IEbWo8wGZqyf3fjo2hOynNhh-ml0a5Eb6WfBtVs0f5s,2678
|
|
302
|
-
frontend/js/pages/TeacherDashboardContractsLayout/components/ContractActionsBar/index.spec.tsx,sha256=
|
|
302
|
+
frontend/js/pages/TeacherDashboardContractsLayout/components/ContractActionsBar/index.spec.tsx,sha256=9mmEKj8S4U06KDzWNcMnHuhRCw--W4y3Q7KhwVmSYRk,6369
|
|
303
303
|
frontend/js/pages/TeacherDashboardContractsLayout/components/ContractActionsBar/index.tsx,sha256=wcZYQvoogE1QhcWgGS05fJsMdVJpGqKjDEv0aixWhrM,2037
|
|
304
304
|
frontend/js/pages/TeacherDashboardContractsLayout/components/ContractFiltersBar/index.spec.tsx,sha256=8V5J86iL_b6WLGWnSU3B8xZeQ2ojRW-aKxiIdjLGcxI,6394
|
|
305
305
|
frontend/js/pages/TeacherDashboardContractsLayout/components/ContractFiltersBar/index.tsx,sha256=ZIElTQwTOODS-oN-tf79-Fd1tbah0yexM4VcRR2_YyY,2688
|
|
306
|
-
frontend/js/pages/TeacherDashboardContractsLayout/components/SignOrganizationContractButton/index.spec.tsx,sha256=
|
|
306
|
+
frontend/js/pages/TeacherDashboardContractsLayout/components/SignOrganizationContractButton/index.spec.tsx,sha256=LalMIqAJhW99r6g4wfCSddkk30xuMyFbV7OBo7KPjjA,3740
|
|
307
307
|
frontend/js/pages/TeacherDashboardContractsLayout/components/SignOrganizationContractButton/index.tsx,sha256=lMlHXgKEJaAcYCVUOtrdFdA2OfgPTEvJN_3adKHUnP4,1793
|
|
308
308
|
frontend/js/pages/TeacherDashboardContractsLayout/hooks/useTeacherContractsToSign.tsx,sha256=kUblppRSWCYRCYR_QRwVuuTXpjDHm4zwJ1WglScGY3w,1148
|
|
309
309
|
frontend/js/pages/TeacherDashboardContractsLayout/hooks/useCheckContractArchiveExists/index.spec.tsx,sha256=OAVFRfkQdj0dpjXe_8WuP4-l7o70zbNO89z2q-jarmM,3947
|
|
@@ -423,6 +423,7 @@ frontend/js/utils/test/expectUrlMatchLocationDisplayed.ts,sha256=0Tx4oBG2tQ8a5_m
|
|
|
423
423
|
frontend/js/utils/test/isTestEnv.ts,sha256=FdSI-V2m9alzTN4iAN8nAw5zWP9OeQ-2pU2aVJAr9l4,77
|
|
424
424
|
frontend/js/utils/test/mockCourseProductWithOrder.ts,sha256=KPpkR8uxHivyGYP9JzDB-9TvAmimAszhYQUYPfuiVtk,813
|
|
425
425
|
frontend/js/utils/test/mockPaginatedResponse.ts,sha256=RN7QuIlvomI9fthxTrUikXX-ZI8nP0AaZOW5YzVFXOQ,367
|
|
426
|
+
frontend/js/utils/test/render.tsx,sha256=akp5aBuVi0xV8zjdbuz236s2zhSzesWotRWreCiNYyI,2591
|
|
426
427
|
frontend/js/utils/test/factories/factories.spec.ts,sha256=iSsPjYN7KlNAikl9s41-LCz5f4bq2v9wZ4ji-aeE-xU,4846
|
|
427
428
|
frontend/js/utils/test/factories/factories.ts,sha256=Cnsy8nymW-44jxOKTORykreaMACPCwBGxq9cHqrWc3I,2707
|
|
428
429
|
frontend/js/utils/test/factories/helper.spec.ts,sha256=vmq4eBedGzoUwuw-ZFQgaGtvf80b2DIhOgBg1t2K5YY,2368
|
|
@@ -431,6 +432,12 @@ frontend/js/utils/test/factories/joanie.spec.ts,sha256=SoLhAU1HVN6LJTbPcCGtV_zmU
|
|
|
431
432
|
frontend/js/utils/test/factories/joanie.ts,sha256=I0i0OcKnul8uYRUlrzrknjJ_jMoXkRdDcmUafoqdWQw,13411
|
|
432
433
|
frontend/js/utils/test/factories/reactQuery.ts,sha256=zo9qKB1LQeTZahdy5OZbLVC-__8PeqD2igODO5E3t2o,1546
|
|
433
434
|
frontend/js/utils/test/factories/richie.ts,sha256=nvQBVESdq2pLp82p3bvgB5AnFcvoLmX07pW_3k1dv2k,6872
|
|
435
|
+
frontend/js/utils/test/wrappers/IntlWrapper.tsx,sha256=PfwVv9cWwP7shG2PeEbSV34fU5d5g5CIGqi4at74SZM,677
|
|
436
|
+
frontend/js/utils/test/wrappers/JoanieAppWrapper.tsx,sha256=C2YB6dwYB4QlPhIHGy6eyWqpVhk_2CcJjB5ku3nJQjg,1457
|
|
437
|
+
frontend/js/utils/test/wrappers/PresentationalAppWrapper.tsx,sha256=ff9xYWKwX83zc2UkLGjdOHzUhE6QfbDb7hdJuMIKM5s,606
|
|
438
|
+
frontend/js/utils/test/wrappers/ReactQueryWrapper.tsx,sha256=KEijJe4v5ykq0mLFLY_SMW4a5UmYLpMU72pZE2NGbeg,542
|
|
439
|
+
frontend/js/utils/test/wrappers/RouterWrapper.tsx,sha256=6eOXiyiqpBAWlqbRt9lvKyWw6AeaOFWWTwb2Vm2wHoU,702
|
|
440
|
+
frontend/js/utils/test/wrappers/types.ts,sha256=SatBYwX7fJfweHllBpcX2YdIkpQ2t18AqcA4Gr8udNk,1070
|
|
434
441
|
frontend/js/widgets/index.spec.tsx,sha256=e_Hdz4mjMSEmNsa6K2nTuS7a9tSn8PPSYyf3PmWf0dw,4839
|
|
435
442
|
frontend/js/widgets/index.tsx,sha256=vmXFg5KQGjOyDXivpg3oLFnSmZo_TThbBCu731BOp80,4297
|
|
436
443
|
frontend/js/widgets/Dashboard/_styles.scss,sha256=WYer6DwHhhsDZvAP4e8EzR3j6gUwelVgHECU6JcpX0Q,91
|
|
@@ -465,7 +472,7 @@ frontend/js/widgets/Dashboard/components/DashboardItem/Certificate/index.tsx,sha
|
|
|
465
472
|
frontend/js/widgets/Dashboard/components/DashboardItem/CertificateStatus/index.spec.tsx,sha256=JFLDFBO2eW4EVykVa31lxk5Mv6ohg2Xk_8Os7lm9tX0,2401
|
|
466
473
|
frontend/js/widgets/Dashboard/components/DashboardItem/CertificateStatus/index.tsx,sha256=7LNZtzh_Cnw666szxUORKwAg-cgWA-IvBHozieA-y14,2144
|
|
467
474
|
frontend/js/widgets/Dashboard/components/DashboardItem/Contract/_styles.scss,sha256=w0qZ2JARxKrr__dt6FrslU89QYwmIob9qFLFgQBrJ_c,514
|
|
468
|
-
frontend/js/widgets/Dashboard/components/DashboardItem/Contract/index.spec.tsx,sha256=
|
|
475
|
+
frontend/js/widgets/Dashboard/components/DashboardItem/Contract/index.spec.tsx,sha256=RzKTPD-UHyNz7QL1ieft4Gw2-n_zWP_PDrHjlmWOiuc,6977
|
|
469
476
|
frontend/js/widgets/Dashboard/components/DashboardItem/Contract/index.stories.tsx,sha256=pHr5--fLV2spJ3U0kkikg4DYg8GaBZitHaDTnUyJjBE,1128
|
|
470
477
|
frontend/js/widgets/Dashboard/components/DashboardItem/Contract/index.tsx,sha256=5Fbp0tcltsroQsyvfg5qtrSBmQN-5cNPo1Iq2lpIK5g,1605
|
|
471
478
|
frontend/js/widgets/Dashboard/components/DashboardItem/CourseEnrolling/index.spec.tsx,sha256=fzvkWGLDl_jfJQ2222J4firQbNDg1f5TEY8ZaSSJ3ag,5893
|
|
@@ -475,12 +482,12 @@ frontend/js/widgets/Dashboard/components/DashboardItem/CourseEnrolling/hooks/use
|
|
|
475
482
|
frontend/js/widgets/Dashboard/components/DashboardItem/Enrollment/DashboardItemEnrollment.spec.tsx,sha256=rJ4X8M3aTMdguKrv2cxi4J71LP36OrDPZ9zMW72D-7M,4072
|
|
476
483
|
frontend/js/widgets/Dashboard/components/DashboardItem/Enrollment/DashboardItemEnrollment.stories.tsx,sha256=gXWvOUMcyM4kSTJ_CCXVQ9pjhpZZhEKpDm_A0HNlJBk,776
|
|
477
484
|
frontend/js/widgets/Dashboard/components/DashboardItem/Enrollment/DashboardItemEnrollment.tsx,sha256=ju0uUObgpNVrq_s-2Eux3Ba8e47tR1qcxrmbRKLFtHc,1416
|
|
478
|
-
frontend/js/widgets/Dashboard/components/DashboardItem/Enrollment/ProductCertificateFooter/index.spec.tsx,sha256=
|
|
485
|
+
frontend/js/widgets/Dashboard/components/DashboardItem/Enrollment/ProductCertificateFooter/index.spec.tsx,sha256=B5kqlifXCoSGdRf5ru8_V8Ij876GsqctgLMQ7EItsXc,8918
|
|
479
486
|
frontend/js/widgets/Dashboard/components/DashboardItem/Enrollment/ProductCertificateFooter/index.tsx,sha256=yOKlawda2h3yRsg53VBDcWntjoYOyqGqROVyF1zJKdc,3622
|
|
480
|
-
frontend/js/widgets/Dashboard/components/DashboardItem/Order/DashboardItemOrder.spec.tsx,sha256=
|
|
487
|
+
frontend/js/widgets/Dashboard/components/DashboardItem/Order/DashboardItemOrder.spec.tsx,sha256=dq66GGQXcbO3LLp44WqSK-FnejgXCwUpx97lSpWGrnY,33178
|
|
481
488
|
frontend/js/widgets/Dashboard/components/DashboardItem/Order/DashboardItemOrder.tsx,sha256=kWi2E3uOsYVQkydGdrsowjqVIhki14KEQ2QFF7CntWk,7038
|
|
482
|
-
frontend/js/widgets/Dashboard/components/DashboardItem/Order/DashboardItemOrderContract.spec.tsx,sha256=
|
|
483
|
-
frontend/js/widgets/Dashboard/components/DashboardItem/Order/DashboardItemOrderContract.useUnionResource.cache.spec.tsx,sha256=
|
|
489
|
+
frontend/js/widgets/Dashboard/components/DashboardItem/Order/DashboardItemOrderContract.spec.tsx,sha256=WrFJ3cW1vW5I0Gupr8LWU2kcMXULw8TYMLK0AMm6dFc,11622
|
|
490
|
+
frontend/js/widgets/Dashboard/components/DashboardItem/Order/DashboardItemOrderContract.useUnionResource.cache.spec.tsx,sha256=64LqlgtLMekYr-EG0TpCpQRryiEzfslkW9apZGWbm1U,10961
|
|
484
491
|
frontend/js/widgets/Dashboard/components/DashboardItem/Order/DashboardItemOrderReadonly.stories.tsx,sha256=do7d5TsmNw2P2UqZp20QP2LUY09nsWwhSSPF9xEjwCk,2079
|
|
485
492
|
frontend/js/widgets/Dashboard/components/DashboardItem/Order/DashboardItemOrderWritable.stories.tsx,sha256=Dwh6J4Rd3ffJjs6o2O9YrqUwIER_x2vhUXeOatLLqeg,2196
|
|
486
493
|
frontend/js/widgets/Dashboard/components/DashboardItem/Order/_styles.scss,sha256=JpV1ZjVFUwxhdvNMdCHk_Wob58UNEld9aYgvEjnnAxs,791
|
|
@@ -508,7 +515,7 @@ frontend/js/widgets/Dashboard/components/FilterOrganization/index.tsx,sha256=Ny3
|
|
|
508
515
|
frontend/js/widgets/Dashboard/components/FiltersBar/index.tsx,sha256=XL5AL_mjUXRDLzXag8n3CstvPoGmFS6v6Jhy2z-nSeQ,250
|
|
509
516
|
frontend/js/widgets/Dashboard/components/LearnerDashboardSidebar/index.stories.tsx,sha256=xGOrjq7zlaA3kzUi05c5onUSvESycputfo5s6m7YbmI,802
|
|
510
517
|
frontend/js/widgets/Dashboard/components/LearnerDashboardSidebar/index.tsx,sha256=bS6jfzrY-irJ9YYDc3GdcR1WE01DfS3xazkZ1iuxKqs,1696
|
|
511
|
-
frontend/js/widgets/Dashboard/components/NavigateWithParams/index.spec.tsx,sha256=
|
|
518
|
+
frontend/js/widgets/Dashboard/components/NavigateWithParams/index.spec.tsx,sha256=UpCB5dJuyOo5evTMlS3BqlGkmCeoInEmTOAgt20yp3Y,1677
|
|
512
519
|
frontend/js/widgets/Dashboard/components/NavigateWithParams/index.tsx,sha256=VAaAeE82vtKgwgdb0Agq-abwq3jw79DsT7eBetzmDmA,399
|
|
513
520
|
frontend/js/widgets/Dashboard/components/ProtectedOutlet/AuthenticatedOutlet.spec.tsx,sha256=KZp8il4hp1Iwse_lKDYlrxjpMijYZ1wugxjXvTScyqo,3150
|
|
514
521
|
frontend/js/widgets/Dashboard/components/ProtectedOutlet/AuthenticatedOutlet.tsx,sha256=ihz08OV--yL_lkzjZ-bmAEEoCfFk9n9mUHWp8wsEQGI,539
|
|
@@ -528,11 +535,11 @@ frontend/js/widgets/Dashboard/components/TeacherDashboardCourseSidebar/utils.ts,
|
|
|
528
535
|
frontend/js/widgets/Dashboard/components/TeacherDashboardOrganizationSidebar/index.spec.tsx,sha256=nHvNOHi4zdbG4MbvRR8wMWdcxZvdGFwqmBRJnT0goek,5988
|
|
529
536
|
frontend/js/widgets/Dashboard/components/TeacherDashboardOrganizationSidebar/index.stories.tsx,sha256=SNtqfdnY217R6zkSlljvI7QNYT6NUhaQkNOJjbCElAc,1622
|
|
530
537
|
frontend/js/widgets/Dashboard/components/TeacherDashboardOrganizationSidebar/index.tsx,sha256=pQVFMGdLgsFBEY9tnCLIKXdMlJJOXVAu7mffAWWd0Ts,2809
|
|
531
|
-
frontend/js/widgets/Dashboard/components/TeacherDashboardProfileSidebar/index.spec.tsx,sha256=
|
|
538
|
+
frontend/js/widgets/Dashboard/components/TeacherDashboardProfileSidebar/index.spec.tsx,sha256=ZV0d_JCyr-twbFg2yoZYmBOzRsfwqRqtxasX4v-DbZU,3353
|
|
532
539
|
frontend/js/widgets/Dashboard/components/TeacherDashboardProfileSidebar/index.stories.tsx,sha256=mrb3Jm-8p5abdvQ3vr5OoeMGIhENmku8feOJxXT90AQ,851
|
|
533
540
|
frontend/js/widgets/Dashboard/components/TeacherDashboardProfileSidebar/index.tsx,sha256=wFT2euTVub7dknTkE-6b0AYGDSCD0lr2mcFExkYv024,1582
|
|
534
541
|
frontend/js/widgets/Dashboard/components/TeacherDashboardProfileSidebar/components/OrganizationLinks/_styles.scss,sha256=rzJlbzXvrCO6kGrAgrqGThXnSE2NgcWuPW2Val8MFcI,1536
|
|
535
|
-
frontend/js/widgets/Dashboard/components/TeacherDashboardProfileSidebar/components/OrganizationLinks/index.spec.tsx,sha256=
|
|
542
|
+
frontend/js/widgets/Dashboard/components/TeacherDashboardProfileSidebar/components/OrganizationLinks/index.spec.tsx,sha256=w4p0x7L6qkvipjSAXTyflXDkVya7QjPVBQMeJMZxnn8,1963
|
|
536
543
|
frontend/js/widgets/Dashboard/components/TeacherDashboardProfileSidebar/components/OrganizationLinks/index.tsx,sha256=Fa6htqfin5xc1fPZFnkOweJp-ZRck1pYYsqa8wwEuak,2511
|
|
537
544
|
frontend/js/widgets/Dashboard/contexts/DashboardBreadcrumbsContext.tsx,sha256=xI6AwOM4bAoysj1-Qmo_11_q5Y2lOEQ8Qv9vP3SFGd8,1517
|
|
538
545
|
frontend/js/widgets/Dashboard/hooks/useDashboardRouter/getDashboardBasename.ts,sha256=46x5ut5dccVlIfitc8qsiX24FjZznwnDq5PnZrfYQ_k,271
|
|
@@ -561,10 +568,10 @@ frontend/js/widgets/Search/components/FiltersPaneCloseButton.tsx,sha256=hH7HB_PX
|
|
|
561
568
|
frontend/js/widgets/Search/components/PaginateCourseSearch/index.spec.tsx,sha256=2Hh82UpliOvBpwAfnlzY528Qivqg_7Z7J_ODFpr6t5A,6528
|
|
562
569
|
frontend/js/widgets/Search/components/PaginateCourseSearch/index.tsx,sha256=S7RcLMCnbacEew7-SEk4cA_GGDRMceMWBjNED1jmSoU,1375
|
|
563
570
|
frontend/js/widgets/Search/components/SearchFilterGroup/_styles.scss,sha256=yHtoKlNHDo1LfiBQ9KunTXidAmd8QNq8OMr_QJogRO8,372
|
|
564
|
-
frontend/js/widgets/Search/components/SearchFilterGroup/index.spec.tsx,sha256=
|
|
571
|
+
frontend/js/widgets/Search/components/SearchFilterGroup/index.spec.tsx,sha256=5MOalPWnuD_tkeoxbZig_kXm7-RHSdaPZdShZVCsPks,3012
|
|
565
572
|
frontend/js/widgets/Search/components/SearchFilterGroup/index.tsx,sha256=wWORb1vtHOEcsL3onAqNoF069O8ie_71GvH61mpKJF8,1194
|
|
566
573
|
frontend/js/widgets/Search/components/SearchFilterGroupModal/_styles.scss,sha256=U5bn8RN2S-fyGEujTwnAPHOKD16o32vJUaPDSmTRmx8,1478
|
|
567
|
-
frontend/js/widgets/Search/components/SearchFilterGroupModal/index.spec.tsx,sha256=
|
|
574
|
+
frontend/js/widgets/Search/components/SearchFilterGroupModal/index.spec.tsx,sha256=_yKClATZqNJiNrecwHzFgfWc5WgI8frcb4tk4euOTk0,20503
|
|
568
575
|
frontend/js/widgets/Search/components/SearchFilterGroupModal/index.tsx,sha256=1MnqtYbguWsGS8W3zqauCiSg1oM7Ob1TkZ4PmrYb30U,9695
|
|
569
576
|
frontend/js/widgets/Search/components/SearchFilterValueLeaf/index.spec.tsx,sha256=WS-gbQfjSje1n2FJbwbd1DBt_dHLGxMQMdqPvnKgku8,6491
|
|
570
577
|
frontend/js/widgets/Search/components/SearchFilterValueLeaf/index.tsx,sha256=D1r8iImzYsw7KWHqKZjYDNeQef6qbr8sANkwPMpsvLQ,1273
|
|
@@ -586,7 +593,7 @@ frontend/js/widgets/SearchSuggestField/index.tsx,sha256=mQtTuveQtBhN2SDK88WE_AD4
|
|
|
586
593
|
frontend/js/widgets/SyllabusCourseRunsList/index.spec.tsx,sha256=Bs5LwgGW71KJlXGjECnJ6cuepFdTqoaPMktJD4-rb5Y,25578
|
|
587
594
|
frontend/js/widgets/SyllabusCourseRunsList/index.tsx,sha256=-dMeLQ3byLLdVLRi0JIoG1eBpT2JFBKZDLpFcR2foyY,4094
|
|
588
595
|
frontend/js/widgets/SyllabusCourseRunsList/components/CourseProductItem/_styles.scss,sha256=VtdcIlNGjkoqZiK5JughtXw6_7oNWmJlgHn6cJIsWzc,3256
|
|
589
|
-
frontend/js/widgets/SyllabusCourseRunsList/components/CourseProductItem/index.spec.tsx,sha256=
|
|
596
|
+
frontend/js/widgets/SyllabusCourseRunsList/components/CourseProductItem/index.spec.tsx,sha256=ZC_yr2-c_TwKEY8pvpL17MDJB3E3-3mkxHrvdd9mV7Q,33487
|
|
590
597
|
frontend/js/widgets/SyllabusCourseRunsList/components/CourseProductItem/index.stories.tsx,sha256=bqVATEIPoJFoNFnVx2VqOL1tMUr5HQdwfDCA_gB87hw,2923
|
|
591
598
|
frontend/js/widgets/SyllabusCourseRunsList/components/CourseProductItem/index.tsx,sha256=U6iUfLu_RS2V9p9V2bJ6l0Gv8kYGLRQJY3RICyk610g,8483
|
|
592
599
|
frontend/js/widgets/SyllabusCourseRunsList/components/CourseProductItem/CourseProductItemFooter/index.tsx,sha256=-fb6NAy6KnPG23piiWJWL2OqKrq_mf38Myq_1CLeT8s,2009
|
|
@@ -2335,9 +2342,9 @@ richie/static/richie/js/build/9986.4f8226b1f37372f99368.index.js,sha256=YZTuD2Zq
|
|
|
2335
2342
|
richie/static/richie/js/build/99953.4f8226b1f37372f99368.index.js,sha256=OWoLPJnHrmvF3HBQPgXooAGo5E0yJpJ7QTFHFghJpI8,135
|
|
2336
2343
|
richie/static/richie/js/build/99962.4f8226b1f37372f99368.index.js,sha256=I84MIDhCYN2K4npCXyaDNnfTXb2xsBIzpZVnlTknM2s,8366
|
|
2337
2344
|
richie/static/richie/js/build/index.js,sha256=UVlwvREYQJJZdtYaef_euQTd0tGDIyK89eiSuwAaySU,1128515
|
|
2338
|
-
richie-2.25.0b2.
|
|
2339
|
-
richie-2.25.0b2.
|
|
2340
|
-
richie-2.25.0b2.
|
|
2341
|
-
richie-2.25.0b2.
|
|
2342
|
-
richie-2.25.0b2.
|
|
2343
|
-
richie-2.25.0b2.
|
|
2345
|
+
richie-2.25.0b2.dev101.dist-info/LICENSE,sha256=5LKjFIE1kpKzBfR2iwq_RGHhHM5XawdlfZrcHTsCLpA,1079
|
|
2346
|
+
richie-2.25.0b2.dev101.dist-info/METADATA,sha256=pfeC4kIvgEKH8wpeCIMvyiJuBCe0HGkwWb1HkE-ZXGs,6740
|
|
2347
|
+
richie-2.25.0b2.dev101.dist-info/WHEEL,sha256=-G_t0oGuE7UD0DrSpVZnq1hHMBV9DD2XkS5v7XpmTnk,110
|
|
2348
|
+
richie-2.25.0b2.dev101.dist-info/top_level.txt,sha256=WJvFAAHtUQ5T5MOuG6jRynDJG9kVfl4jtuf1qxIXND8,16
|
|
2349
|
+
richie-2.25.0b2.dev101.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
2350
|
+
richie-2.25.0b2.dev101.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|