66
77import React from 'react' ;
88import { render , screen , fireEvent } from '@testing-library/react' ;
9+ import { describe , it , expect , beforeEach , vi , type MockedFunction } from 'vitest' ;
910import LoginPage from '@/app/login/page' ;
1011import { useAuth } from '@/components/auth/AuthProvider' ;
1112
1213// Mock the auth context
13- jest . mock ( '@/components/auth/AuthProvider' , ( ) => ( {
14- useAuth : jest . fn ( ) ,
14+ vi . mock ( '@/components/auth/AuthProvider' , ( ) => ( {
15+ useAuth : vi . fn ( ) ,
1516} ) ) ;
1617
1718// Mock Next.js navigation
18- jest . mock ( 'next/navigation' , ( ) => ( {
19+ vi . mock ( 'next/navigation' , ( ) => ( {
1920 useRouter : ( ) => ( {
20- push : jest . fn ( ) ,
21+ push : vi . fn ( ) ,
2122 } ) ,
2223 useSearchParams : ( ) => new URLSearchParams ( ) ,
2324} ) ) ;
2425
25- const mockUseAuth = useAuth as jest . MockedFunction < typeof useAuth > ;
26+ const mockUseAuth = useAuth as MockedFunction < typeof useAuth > ;
2627
2728describe ( 'Login Page' , ( ) => {
2829 beforeEach ( ( ) => {
29- jest . clearAllMocks ( ) ;
30+ vi . clearAllMocks ( ) ;
3031 mockUseAuth . mockReturnValue ( {
3132 user : null ,
3233 accessToken : null ,
3334 isAuthenticated : false ,
3435 isLoading : false ,
3536 error : null ,
36- login : jest . fn ( ) ,
37- logout : jest . fn ( ) ,
38- refreshToken : jest . fn ( ) ,
39- setError : jest . fn ( ) ,
37+ login : vi . fn ( ) ,
38+ logout : vi . fn ( ) ,
39+ refreshToken : vi . fn ( ) ,
40+ setError : vi . fn ( ) ,
4041 } ) ;
4142 } ) ;
4243
@@ -74,22 +75,22 @@ describe('Login Page', () => {
7475
7576 describe ( 'Authentication States' , ( ) => {
7677 it ( 'should redirect to dashboard when already authenticated' , ( ) => {
77- const mockPush = jest . fn ( ) ;
78- jest . doMock ( 'next/navigation' , ( ) => ( {
78+ const mockPush = vi . fn ( ) ;
79+ vi . doMock ( 'next/navigation' , ( ) => ( {
7980 useRouter : ( ) => ( { push : mockPush } ) ,
8081 useSearchParams : ( ) => new URLSearchParams ( ) ,
8182 } ) ) ;
8283
8384 mockUseAuth . mockReturnValue ( {
84- user : { id : '1' , name : 'Test User' , email : 'test@example.com' } ,
85+ user : { id : '1' , name : 'Test User' , email : 'test@example.com' , avatar_url : '' , created_at : '2024-01-01T00:00:00Z' , last_sign_in_at : '2024-01-01T12:00:00Z' } ,
8586 accessToken : 'token' ,
8687 isAuthenticated : true ,
8788 isLoading : false ,
8889 error : null ,
89- login : jest . fn ( ) ,
90- logout : jest . fn ( ) ,
91- refreshToken : jest . fn ( ) ,
92- setError : jest . fn ( ) ,
90+ login : vi . fn ( ) ,
91+ logout : vi . fn ( ) ,
92+ refreshToken : vi . fn ( ) ,
93+ setError : vi . fn ( ) ,
9394 } ) ;
9495
9596 render ( < LoginPage /> ) ;
@@ -98,16 +99,16 @@ describe('Login Page', () => {
9899 } ) ;
99100
100101 it ( 'should show error message when authentication fails' , ( ) => {
101- const mockSetError = jest . fn ( ) ;
102+ const mockSetError = vi . fn ( ) ;
102103 mockUseAuth . mockReturnValue ( {
103104 user : null ,
104105 accessToken : null ,
105106 isAuthenticated : false ,
106107 isLoading : false ,
107108 error : 'Authentication failed' ,
108- login : jest . fn ( ) ,
109- logout : jest . fn ( ) ,
110- refreshToken : jest . fn ( ) ,
109+ login : vi . fn ( ) ,
110+ logout : vi . fn ( ) ,
111+ refreshToken : vi . fn ( ) ,
111112 setError : mockSetError ,
112113 } ) ;
113114
@@ -118,22 +119,22 @@ describe('Login Page', () => {
118119 } ) ;
119120
120121 it ( 'should handle OAuth errors from URL parameters' , ( ) => {
121- const mockSetError = jest . fn ( ) ;
122+ const mockSetError = vi . fn ( ) ;
122123 mockUseAuth . mockReturnValue ( {
123124 user : null ,
124125 accessToken : null ,
125126 isAuthenticated : false ,
126127 isLoading : false ,
127128 error : null ,
128- login : jest . fn ( ) ,
129- logout : jest . fn ( ) ,
130- refreshToken : jest . fn ( ) ,
129+ login : vi . fn ( ) ,
130+ logout : vi . fn ( ) ,
131+ refreshToken : vi . fn ( ) ,
131132 setError : mockSetError ,
132133 } ) ;
133134
134135 // Mock useSearchParams to return an error
135- jest . doMock ( 'next/navigation' , ( ) => ( {
136- useRouter : ( ) => ( { push : jest . fn ( ) } ) ,
136+ vi . doMock ( 'next/navigation' , ( ) => ( {
137+ useRouter : ( ) => ( { push : vi . fn ( ) } ) ,
137138 useSearchParams : ( ) => new URLSearchParams ( '?error=access_denied' ) ,
138139 } ) ) ;
139140
0 commit comments