large mock refector hopefully done + no errors?
All checks were successful
Deploy to Test Environment / deploy-to-test (push) Successful in 1h13m59s
All checks were successful
Deploy to Test Environment / deploy-to-test (push) Successful in 1h13m59s
This commit is contained in:
@@ -71,7 +71,7 @@ describe('useAuth Hook and AuthProvider', () => {
|
||||
// We verify that it starts in a loading state or quickly resolves to signed out
|
||||
// depending on the execution speed.
|
||||
// To avoid flakiness, we just ensure it is in a valid state structure.
|
||||
expect(result.current.user).toBeNull();
|
||||
expect(result.current.userProfile).toBeNull();
|
||||
// It should eventually settle
|
||||
await waitFor(() => {
|
||||
expect(result.current.isLoading).toBe(false);
|
||||
@@ -87,8 +87,7 @@ describe('useAuth Hook and AuthProvider', () => {
|
||||
});
|
||||
|
||||
expect(result.current.authStatus).toBe('SIGNED_OUT');
|
||||
expect(result.current.user).toBeNull();
|
||||
expect(result.current.profile).toBeNull();
|
||||
expect(result.current.userProfile).toBeNull();
|
||||
});
|
||||
|
||||
it('sets state to AUTHENTICATED if a valid token is found', async () => {
|
||||
@@ -106,8 +105,7 @@ describe('useAuth Hook and AuthProvider', () => {
|
||||
});
|
||||
|
||||
expect(result.current.authStatus).toBe('AUTHENTICATED');
|
||||
expect(result.current.user).toEqual(mockUser);
|
||||
expect(result.current.profile).toEqual(mockProfile);
|
||||
expect(result.current.userProfile).toEqual(mockProfile);
|
||||
|
||||
// Check that it was called at least once.
|
||||
// React 18 Strict Mode might call effects twice in dev/test environment.
|
||||
@@ -125,8 +123,7 @@ describe('useAuth Hook and AuthProvider', () => {
|
||||
});
|
||||
|
||||
expect(result.current.authStatus).toBe('SIGNED_OUT');
|
||||
expect(result.current.user).toBeNull();
|
||||
expect(result.current.profile).toBeNull();
|
||||
expect(result.current.userProfile).toBeNull();
|
||||
expect(localStorageMock.removeItem).toHaveBeenCalledWith('authToken');
|
||||
});
|
||||
});
|
||||
@@ -156,7 +153,7 @@ describe('useAuth Hook and AuthProvider', () => {
|
||||
// 2. Perform login
|
||||
await act(async () => {
|
||||
console.log('[TEST-DEBUG] Calling login function...');
|
||||
await result.current.login(mockUser, 'new-valid-token');
|
||||
await result.current.login('new-valid-token', mockProfile);
|
||||
console.log('[TEST-DEBUG] Login function promise resolved.');
|
||||
});
|
||||
|
||||
@@ -172,8 +169,7 @@ describe('useAuth Hook and AuthProvider', () => {
|
||||
});
|
||||
|
||||
console.log('[TEST-DEBUG] Final state after successful login:', result.current);
|
||||
expect(result.current.user).toEqual(mockUser);
|
||||
expect(result.current.profile).toEqual(mockProfile);
|
||||
expect(result.current.userProfile).toEqual(mockProfile);
|
||||
});
|
||||
|
||||
it('logs out and throws an error if profile fetch fails after login', async () => {
|
||||
@@ -186,15 +182,15 @@ describe('useAuth Hook and AuthProvider', () => {
|
||||
|
||||
// The login function should reject the promise it returns.
|
||||
await act(async () => {
|
||||
await expect(result.current.login(mockUser, 'new-token')).rejects.toThrow(
|
||||
await expect(result.current.login('new-token')).rejects.toThrow(
|
||||
/Login succeeded, but failed to fetch your data/
|
||||
);
|
||||
});
|
||||
|
||||
// Should trigger the logout flow
|
||||
expect(localStorageMock.removeItem).toHaveBeenCalledWith('authToken');
|
||||
expect(result.current.authStatus).toBe('SIGNED_OUT');
|
||||
expect(result.current.user).toBeNull();
|
||||
expect(result.current.authStatus).toBe('SIGNED_OUT'); // This was a duplicate, fixed.
|
||||
expect(result.current.userProfile).toBeNull();
|
||||
});
|
||||
});
|
||||
|
||||
@@ -211,7 +207,7 @@ describe('useAuth Hook and AuthProvider', () => {
|
||||
const { result } = renderHook(() => useAuth(), { wrapper });
|
||||
await waitFor(() => expect(result.current.authStatus).toBe('AUTHENTICATED'));
|
||||
|
||||
expect(result.current.user).not.toBeNull();
|
||||
expect(result.current.userProfile).not.toBeNull();
|
||||
|
||||
act(() => {
|
||||
result.current.logout();
|
||||
@@ -219,8 +215,7 @@ describe('useAuth Hook and AuthProvider', () => {
|
||||
|
||||
expect(localStorageMock.removeItem).toHaveBeenCalledWith('authToken');
|
||||
expect(result.current.authStatus).toBe('SIGNED_OUT');
|
||||
expect(result.current.user).toBeNull();
|
||||
expect(result.current.profile).toBeNull();
|
||||
expect(result.current.userProfile).toBeNull();
|
||||
});
|
||||
});
|
||||
|
||||
@@ -237,7 +232,7 @@ describe('useAuth Hook and AuthProvider', () => {
|
||||
const { result } = renderHook(() => useAuth(), { wrapper });
|
||||
await waitFor(() => expect(result.current.authStatus).toBe('AUTHENTICATED'));
|
||||
|
||||
expect(result.current.profile?.full_name).toBe('Test User');
|
||||
expect(result.current.userProfile?.full_name).toBe('Test User');
|
||||
|
||||
const updatedData: Partial<UserProfile> = {
|
||||
full_name: 'Test User Updated',
|
||||
@@ -248,10 +243,30 @@ describe('useAuth Hook and AuthProvider', () => {
|
||||
result.current.updateProfile(updatedData);
|
||||
});
|
||||
|
||||
expect(result.current.profile?.full_name).toBe('Test User Updated');
|
||||
expect(result.current.profile?.points).toBe(150);
|
||||
expect(result.current.userProfile?.full_name).toBe('Test User Updated');
|
||||
expect(result.current.userProfile?.points).toBe(150);
|
||||
// Ensure other data was not overwritten
|
||||
expect(result.current.profile?.role).toBe('user');
|
||||
expect(result.current.userProfile?.role).toBe('user');
|
||||
});
|
||||
|
||||
it('should not update profile if user is not authenticated', async () => {
|
||||
const { result } = renderHook(() => useAuth(), { wrapper });
|
||||
|
||||
// Wait for initial check to complete
|
||||
await waitFor(() => {
|
||||
expect(result.current.isLoading).toBe(false);
|
||||
});
|
||||
|
||||
expect(result.current.authStatus).toBe('SIGNED_OUT');
|
||||
expect(result.current.userProfile).toBeNull();
|
||||
|
||||
const updatedData: Partial<UserProfile> = {
|
||||
full_name: 'Should Not Update',
|
||||
};
|
||||
|
||||
act(() => result.current.updateProfile(updatedData));
|
||||
|
||||
expect(result.current.userProfile).toBeNull();
|
||||
});
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user