@@ -2,25 +2,29 @@ import { describe, it, expect, vi, beforeEach } from 'vitest'
22import { render , screen } from '@testing-library/react'
33import { StaffList } from './staff-list'
44import { ThemeProvider , createTheme } from '@mui/material'
5- import { BrowserRouter } from 'react-router-dom'
65import * as staffHooks from '@/features/staff/hooks'
6+ import { BrowserRouter } from 'react-router-dom'
7+ import { QueryClient , QueryClientProvider } from '@tanstack/react-query'
78import React from 'react'
89
9- // Mock dos hooks
1010vi . mock ( '@/features/staff/hooks' , ( ) => ( {
1111 useStaffs : vi . fn ( ) ,
1212 useSyncPending : vi . fn ( ) ,
1313 useDeleteStaff : vi . fn ( ) ,
1414} ) )
1515
1616const theme = createTheme ( )
17+ const queryClient = new QueryClient ( {
18+ defaultOptions : { queries : { retry : false } } ,
19+ } )
20+
1721const renderWithProviders = ( ui : React . ReactElement ) => {
1822 return render (
19- < ThemeProvider theme = { theme } >
23+ < QueryClientProvider client = { queryClient } >
2024 < BrowserRouter >
21- { ui }
25+ < ThemeProvider theme = { theme } > { ui } </ ThemeProvider >
2226 </ BrowserRouter >
23- </ ThemeProvider >
27+ </ QueryClientProvider >
2428 )
2529}
2630
@@ -29,38 +33,27 @@ describe('StaffList Component', () => {
2933 vi . clearAllMocks ( )
3034 vi . mocked ( staffHooks . useSyncPending ) . mockReturnValue ( {
3135 pendingCount : 0 ,
32- sync : vi . fn ( ) ,
36+ sync : vi . fn ( ) . mockResolvedValue ( true ) ,
3337 } )
34- vi . mocked ( staffHooks . useDeleteStaff ) . mockReturnValue ( {
35- mutateAsync : vi . fn ( ) ,
36- isPending : false ,
37- } as any )
3838 } )
3939
4040 it ( 'deve exibir Skeletons durante o carregamento' , ( ) => {
4141 vi . mocked ( staffHooks . useStaffs ) . mockReturnValue ( {
42- data : undefined ,
4342 isLoading : true ,
44- isError : false ,
4543 } as any )
4644
4745 renderWithProviders ( < StaffList /> )
48-
49- // MUI Skeleton usa a classe MuiSkeleton-root
50- const skeletons = document . querySelectorAll ( '.MuiSkeleton-root' )
51- expect ( skeletons . length ) . toBeGreaterThan ( 0 )
46+ expect ( screen . getAllByRole ( 'row' ) ) . toHaveLength ( 6 ) // Header + 5 skeletons
5247 } )
5348
5449 it ( 'deve exibir mensagem de erro quando falhar' , ( ) => {
5550 vi . mocked ( staffHooks . useStaffs ) . mockReturnValue ( {
56- data : undefined ,
57- isLoading : false ,
5851 isError : true ,
52+ isLoading : false ,
5953 } as any )
6054
6155 renderWithProviders ( < StaffList /> )
62-
63- expect ( screen . getByText ( / N ã o f o i p o s s í v e l c a r r e g a r o s c o l a b o r a d o r e s / i) ) . toBeDefined ( )
56+ expect ( screen . getByText ( / N ã o c o n s e g u i m o s c a r r e g a r a l i s t a / i) ) . toBeInTheDocument ( )
6457 } )
6558
6659 it ( 'deve exibir mensagem de lista vazia' , ( ) => {
@@ -71,23 +64,26 @@ describe('StaffList Component', () => {
7164 } as any )
7265
7366 renderWithProviders ( < StaffList /> )
74-
75- expect ( screen . getByText ( / N e n h u m c o l a b o r a d o r c a d a s t r a d o a i n d a / i) ) . toBeDefined ( )
67+ expect ( screen . getByText ( / N e n h u m c o l a b o r a d o r e n c o n t r a d o / i) ) . toBeInTheDocument ( )
7668 } )
7769
7870 it ( 'deve renderizar a tabela com dados dos colaboradores' , ( ) => {
79- const mockStaffs = [
80- { id : '1' , name : 'João Silva' , email : 'joao@test.com' , department : 'TI' , status : 'ACTIVE' }
81- ]
8271 vi . mocked ( staffHooks . useStaffs ) . mockReturnValue ( {
83- data : mockStaffs ,
72+ data : [
73+ {
74+ id : '1' ,
75+ name : 'João Silva' ,
76+ email : 'joao@teste.com' ,
77+ department : 'TI' ,
78+ status : 'ACTIVE' ,
79+ } ,
80+ ] ,
8481 isLoading : false ,
8582 isError : false ,
8683 } as any )
8784
8885 renderWithProviders ( < StaffList /> )
89-
90- expect ( screen . getByText ( 'João Silva' ) ) . toBeDefined ( )
91- expect ( screen . getByText ( 'joao@test.com' ) ) . toBeDefined ( )
86+ expect ( screen . getByText ( 'João Silva' ) ) . toBeInTheDocument ( )
87+ expect ( screen . getByText ( 'joao@teste.com' ) ) . toBeInTheDocument ( )
9288 } )
9389} )
0 commit comments