website refactor
This commit is contained in:
@@ -39,11 +39,13 @@ describe('AuthService', () => {
|
||||
const result = await service.signup(params);
|
||||
|
||||
expect(mockApiClient.signup).toHaveBeenCalledWith(params);
|
||||
expect(result).toBeInstanceOf(SessionViewModel);
|
||||
expect(result.userId).toBe('user-123');
|
||||
expect(result.email).toBe('test@example.com');
|
||||
expect(result.displayName).toBe('Test User');
|
||||
expect(result.isAuthenticated).toBe(true);
|
||||
expect(result.isOk()).toBe(true);
|
||||
const vm = result.unwrap();
|
||||
expect(vm).toBeInstanceOf(SessionViewModel);
|
||||
expect(vm.userId).toBe('user-123');
|
||||
expect(vm.email).toBe('test@example.com');
|
||||
expect(vm.displayName).toBe('Test User');
|
||||
expect(vm.isAuthenticated).toBe(true);
|
||||
});
|
||||
|
||||
it('should throw error when apiClient.signup fails', async () => {
|
||||
@@ -56,7 +58,9 @@ describe('AuthService', () => {
|
||||
const error = new Error('Signup failed');
|
||||
mockApiClient.signup.mockRejectedValue(error);
|
||||
|
||||
await expect(service.signup(params)).rejects.toThrow('Signup failed');
|
||||
const result = await service.signup(params);
|
||||
expect(result.isErr()).toBe(true);
|
||||
expect(result.getError().message).toBe('Signup failed');
|
||||
});
|
||||
});
|
||||
|
||||
@@ -81,11 +85,13 @@ describe('AuthService', () => {
|
||||
const result = await service.login(params);
|
||||
|
||||
expect(mockApiClient.login).toHaveBeenCalledWith(params);
|
||||
expect(result).toBeInstanceOf(SessionViewModel);
|
||||
expect(result.userId).toBe('user-123');
|
||||
expect(result.email).toBe('test@example.com');
|
||||
expect(result.displayName).toBe('Test User');
|
||||
expect(result.isAuthenticated).toBe(true);
|
||||
expect(result.isOk()).toBe(true);
|
||||
const vm = result.unwrap();
|
||||
expect(vm).toBeInstanceOf(SessionViewModel);
|
||||
expect(vm.userId).toBe('user-123');
|
||||
expect(vm.email).toBe('test@example.com');
|
||||
expect(vm.displayName).toBe('Test User');
|
||||
expect(vm.isAuthenticated).toBe(true);
|
||||
});
|
||||
|
||||
it('should throw error when apiClient.login fails', async () => {
|
||||
@@ -97,7 +103,9 @@ describe('AuthService', () => {
|
||||
const error = new Error('Login failed');
|
||||
mockApiClient.login.mockRejectedValue(error);
|
||||
|
||||
await expect(service.login(params)).rejects.toThrow('Login failed');
|
||||
const result = await service.login(params);
|
||||
expect(result.isErr()).toBe(true);
|
||||
expect(result.getError().message).toBe('Login failed');
|
||||
});
|
||||
});
|
||||
|
||||
@@ -105,16 +113,19 @@ describe('AuthService', () => {
|
||||
it('should call apiClient.logout', async () => {
|
||||
mockApiClient.logout.mockResolvedValue(undefined);
|
||||
|
||||
await service.logout();
|
||||
const result = await service.logout();
|
||||
|
||||
expect(mockApiClient.logout).toHaveBeenCalled();
|
||||
expect(result.isOk()).toBe(true);
|
||||
});
|
||||
|
||||
it('should throw error when apiClient.logout fails', async () => {
|
||||
const error = new Error('Logout failed');
|
||||
mockApiClient.logout.mockRejectedValue(error);
|
||||
|
||||
await expect(service.logout()).rejects.toThrow('Logout failed');
|
||||
const result = await service.logout();
|
||||
expect(result.isErr()).toBe(true);
|
||||
expect(result.getError().message).toBe('Logout failed');
|
||||
});
|
||||
});
|
||||
});
|
||||
@@ -1,4 +1,4 @@
|
||||
import { describe, it, expect, vi, Mocked } from 'vitest';
|
||||
import { describe, it, expect, vi, Mocked, beforeEach } from 'vitest';
|
||||
import { SessionService } from './SessionService';
|
||||
import { AuthApiClient } from '@/lib/api/auth/AuthApiClient';
|
||||
import { SessionViewModel } from '@/lib/view-models/SessionViewModel';
|
||||
@@ -31,11 +31,13 @@ describe('SessionService', () => {
|
||||
const result = await service.getSession();
|
||||
|
||||
expect(mockApiClient.getSession).toHaveBeenCalled();
|
||||
expect(result).toBeInstanceOf(SessionViewModel);
|
||||
expect(result?.userId).toBe('user-123');
|
||||
expect(result?.email).toBe('test@example.com');
|
||||
expect(result?.displayName).toBe('Test User');
|
||||
expect(result?.isAuthenticated).toBe(true);
|
||||
expect(result.isOk()).toBe(true);
|
||||
const vm = result.unwrap();
|
||||
expect(vm).toBeInstanceOf(SessionViewModel);
|
||||
expect(vm?.userId).toBe('user-123');
|
||||
expect(vm?.email).toBe('test@example.com');
|
||||
expect(vm?.displayName).toBe('Test User');
|
||||
expect(vm?.isAuthenticated).toBe(true);
|
||||
});
|
||||
|
||||
it('should return null when apiClient.getSession returns null', async () => {
|
||||
@@ -44,14 +46,17 @@ describe('SessionService', () => {
|
||||
const result = await service.getSession();
|
||||
|
||||
expect(mockApiClient.getSession).toHaveBeenCalled();
|
||||
expect(result).toBeNull();
|
||||
expect(result.isOk()).toBe(true);
|
||||
expect(result.unwrap()).toBeNull();
|
||||
});
|
||||
|
||||
it('should throw error when apiClient.getSession fails', async () => {
|
||||
const error = new Error('Get session failed');
|
||||
mockApiClient.getSession.mockRejectedValue(error);
|
||||
|
||||
await expect(service.getSession()).rejects.toThrow('Get session failed');
|
||||
const result = await service.getSession();
|
||||
expect(result.isErr()).toBe(true);
|
||||
expect(result.getError().message).toBe('Get session failed');
|
||||
});
|
||||
});
|
||||
});
|
||||
@@ -25,8 +25,9 @@ export class SessionService implements Service {
|
||||
async getSession(): Promise<Result<SessionViewModel | null, DomainError>> {
|
||||
try {
|
||||
const res = await this.authService.getSession();
|
||||
if (!res) return Result.ok(null);
|
||||
const data = (res as any).value || res;
|
||||
if (res.isErr()) return Result.err(res.getError());
|
||||
|
||||
const data = res.unwrap();
|
||||
if (!data || !data.user) return Result.ok(null);
|
||||
return Result.ok(new SessionViewModel(data.user));
|
||||
} catch (error: unknown) {
|
||||
|
||||
Reference in New Issue
Block a user