1- import { MemoryRouter } from 'react-router-dom' ;
2- import { QueryClientProvider } from '@tanstack/react-query' ;
3- import { render , screen } from '@testing-library/react' ;
1+ import { screen } from '@testing-library/react' ;
42import fetchMock from 'fetch-mock' ;
5- import { IntlProvider } from 'react-intl' ;
63
74import { CourseListItem } from 'types/Joanie' ;
8- import {
9- RichieContextFactory as mockRichieContextFactory ,
10- UserFactory ,
11- } from 'utils/test/factories/richie' ;
12- import JoanieSessionProvider from 'contexts/SessionContext/JoanieSessionProvider' ;
5+ import { RichieContextFactory as mockRichieContextFactory } from 'utils/test/factories/richie' ;
136import { CourseListItemFactory } from 'utils/test/factories/joanieLegacy' ;
14- import { createTestQueryClient } from 'utils/test/createTestQueryClient' ;
157import { mockPaginatedResponse } from 'utils/test/mockPaginatedResponse' ;
168import { expectNoSpinner } from 'utils/test/expectSpinner' ;
179import { PER_PAGE } from 'settings' ;
10+ import { setupJoanieSession } from 'utils/test/wrappers/JoanieAppWrapper' ;
11+ import { render } from 'utils/test/render' ;
1812import TeacherDashboardCourseList from '.' ;
1913
2014jest . mock ( 'utils/context' , ( ) => ( {
@@ -40,14 +34,9 @@ jest.mock('hooks/useIntersectionObserver', () => ({
4034describe ( 'components/TeacherDashboardCourseList' , ( ) => {
4135 const perPage = PER_PAGE . useCourseProductUnion ;
4236 let nbApiCalls : number ;
37+ const joanieSessionData = setupJoanieSession ( ) ;
4338 beforeEach ( ( ) => {
44- fetchMock . get ( 'https://joanie.endpoint/api/v1.0/orders/' , [ ] , { overwriteRoutes : true } ) ;
45- fetchMock . get ( 'https://joanie.endpoint/api/v1.0/credit-cards/' , [ ] , { overwriteRoutes : true } ) ;
46- fetchMock . get ( 'https://joanie.endpoint/api/v1.0/addresses/' , [ ] , { overwriteRoutes : true } ) ;
47- nbApiCalls = 3 ;
48- } ) ;
49- afterEach ( ( ) => {
50- fetchMock . restore ( ) ;
39+ nbApiCalls = joanieSessionData . nbSessionApiRequest ;
5140 } ) ;
5241
5342 it ( 'should render' , async ( ) => {
@@ -72,18 +61,7 @@ describe('components/TeacherDashboardCourseList', () => {
7261 mockPaginatedResponse ( [ productCooking , productDancing ] , 15 , false ) ,
7362 ) ;
7463
75- const user = UserFactory ( ) . one ( ) ;
76- render (
77- < IntlProvider locale = "en" >
78- < QueryClientProvider client = { createTestQueryClient ( { user } ) } >
79- < JoanieSessionProvider >
80- < MemoryRouter >
81- < TeacherDashboardCourseList titleTranslated = "TeacherDashboardCourseList test title" />
82- </ MemoryRouter >
83- </ JoanieSessionProvider >
84- </ QueryClientProvider >
85- </ IntlProvider > ,
86- ) ;
64+ render ( < TeacherDashboardCourseList titleTranslated = "TeacherDashboardCourseList test title" /> ) ;
8765 nbApiCalls += 1 ; // courses api call
8866 nbApiCalls += 1 ; // course-product-relations api call
8967
@@ -131,31 +109,21 @@ describe('components/TeacherDashboardCourseList', () => {
131109 } ,
132110 ) ;
133111
134- const user = UserFactory ( ) . one ( ) ;
135- render (
136- < IntlProvider locale = "en" >
137- < QueryClientProvider client = { createTestQueryClient ( { user } ) } >
138- < JoanieSessionProvider >
139- < MemoryRouter >
140- < TeacherDashboardCourseList titleTranslated = "TeacherDashboardCourseList test title" />
141- </ MemoryRouter >
142- </ JoanieSessionProvider >
143- </ QueryClientProvider >
144- </ IntlProvider > ,
145- ) ;
112+ render ( < TeacherDashboardCourseList titleTranslated = "TeacherDashboardCourseList test title" /> ) ;
146113 nbApiCalls += 1 ; // courses api call
147114 nbApiCalls += 1 ; // course-product-relations api call
115+ await expectNoSpinner ( 'Loading courses...' ) ;
148116
149117 expect ( await screen . getByRole ( 'heading' , { name : / T e a c h e r D a s h b o a r d C o u r s e L i s t t e s t t i t l e / } ) ) ;
150118
151119 const calledUrls = fetchMock . calls ( ) . map ( ( call ) => call [ 0 ] ) ;
152- expect ( calledUrls ) . toHaveLength ( nbApiCalls ) ;
153120 expect ( calledUrls ) . toContain (
154121 `https://joanie.endpoint/api/v1.0/courses/?has_listed_course_runs=true&page=1&page_size=${ perPage } ` ,
155122 ) ;
156123 expect ( calledUrls ) . toContain (
157124 `https://joanie.endpoint/api/v1.0/course-product-relations/?product_type=credential&page=1&page_size=${ perPage } ` ,
158125 ) ;
126+ expect ( calledUrls ) . toHaveLength ( nbApiCalls ) ;
159127
160128 expect ( await screen . findByText ( 'You have no courses yet.' ) ) . toBeInTheDocument ( ) ;
161129 } ) ;
0 commit comments