11import type { JSX } from 'solid-js' ;
22
33import { MetaProvider } from '@solidjs/meta' ;
4- import { Route , Router } from '@solidjs/router' ;
4+ import {
5+ Route ,
6+ Router ,
7+ MemoryRouter ,
8+ createMemoryHistory ,
9+ } from '@solidjs/router' ;
510import { render , renderHook , screen , waitFor } from '@solidjs/testing-library' ;
611import { QueryClient , QueryClientProvider } from '@tanstack/solid-query' ;
712import { HttpResponse , http } from 'msw' ;
813import toast from 'solid-toast' ;
914import { describe , expect , test , vi } from 'vitest' ;
1015
16+ import App from '@/App' ;
1117import PostList from '@/components/modules/PostList/PostList' ;
1218import useFetchPostList from '@/hooks/useFetchPostList' ;
1319import { server } from '@/mocks/server' ;
@@ -18,6 +24,7 @@ vi.mock('solid-toast', () => ({
1824 default : {
1925 error : vi . fn ( ) ,
2026 } ,
27+ Toaster : vi . fn ( ) ,
2128} ) ) ;
2229
2330describe ( 'PostList component' , ( ) => {
@@ -112,6 +119,46 @@ describe('PostList component', () => {
112119 } ) ;
113120 } ) ;
114121
122+ test ( 'should render post titles' , async ( ) => {
123+ // Mock window.ResizeObserver @ https://vitest.dev/guide/mocking.html#globals
124+ const ResizeObserverMock = vi . fn ( ( ) => ( {
125+ disconnect : vi . fn ( ) ,
126+ observe : vi . fn ( ) ,
127+ takeRecords : vi . fn ( ) ,
128+ unobserve : vi . fn ( ) ,
129+ } ) ) ;
130+ vi . stubGlobal ( 'ResizeObserver' , ResizeObserverMock ) ;
131+ // now you can access it as `ResizeObserver` or `window.ResizeObserver`
132+
133+ const queryClient = new QueryClient ( ) ;
134+
135+ // @see https://github.com/solidjs/solid-router/issues/335#issuecomment-1918115042
136+ const history = createMemoryHistory ( ) ;
137+ history . set ( { value : '/post' } ) ;
138+
139+ render ( ( ) => (
140+ < MetaProvider >
141+ < QueryClientProvider client = { queryClient } >
142+ < MemoryRouter root = { App } history = { history } >
143+ < Route path = "/post" component = { PostList } />
144+ </ MemoryRouter >
145+ </ QueryClientProvider >
146+ </ MetaProvider >
147+ ) ) ;
148+
149+ await waitFor ( async ( ) => {
150+ expect (
151+ screen . getByText (
152+ 'sunt aut facere repellat provident occaecati excepturi optio reprehenderit' ,
153+ ) ,
154+ ) . toBeInTheDocument ( ) ;
155+ } ) ;
156+
157+ await waitFor ( async ( ) => {
158+ expect ( screen . getByText ( 'nesciunt quas odio' ) ) . toBeInTheDocument ( ) ;
159+ } ) ;
160+ } ) ;
161+
115162 test ( 'should handle API call failure' , async ( ) => {
116163 const errorMessage = 'Failed to fetch data.' ;
117164 const toastErrorSpy = vi . spyOn ( toast , 'error' ) ;
0 commit comments