import { describe, it, expect } from 'vitest'; import { CreateLeagueViewModel } from './CreateLeagueViewModel'; import type { CreateLeagueViewData } from '../view-data/CreateLeagueViewData'; const createViewData = (overrides: Partial = {}): CreateLeagueViewData => ({ leagueId: 'league-1', success: true, ...overrides, } as CreateLeagueViewData); describe('CreateLeagueViewModel', () => { describe('constructor', () => { it('should create instance with success flag', () => { const viewData: CreateLeagueViewData = { leagueId: 'league-123', success: true, successMessage: 'League created successfully!', }; const viewModel = new CreateLeagueViewModel(viewData); expect(viewModel.success).toBe(true); }); it('should create instance with leagueId', () => { const viewData: CreateLeagueViewData = { leagueId: 'league-123', success: true, successMessage: 'League created successfully!', }; const viewModel = new CreateLeagueViewModel(viewData); expect(viewModel.leagueId).toBe('league-123'); }); it('should create instance with all fields', () => { const viewData: CreateLeagueViewData = { leagueId: 'test-league', success: false, successMessage: 'Failed to create league.', }; const viewModel = new CreateLeagueViewModel(viewData); expect(viewModel.leagueId).toBe('test-league'); expect(viewModel.success).toBe(false); }); }); describe('UI-specific getters', () => { it('should expose isSuccessful as true when success is true', () => { const viewData: CreateLeagueViewData = { leagueId: 'league-123', success: true, successMessage: 'League created successfully!', }; const viewModel = new CreateLeagueViewModel(viewData); expect(viewModel.isSuccessful).toBe(true); }); it('should expose isSuccessful as false when success is false', () => { const viewData: CreateLeagueViewData = { leagueId: 'league-123', success: false, successMessage: 'Failed to create league.', }; const viewModel = new CreateLeagueViewModel(viewData); expect(viewModel.isSuccessful).toBe(false); }); }); describe('Display Object composition', () => { it('should derive successMessage from success', () => { const viewData: CreateLeagueViewData = { leagueId: 'league-123', success: true, successMessage: 'League created successfully!', }; const viewModel = new CreateLeagueViewModel(viewData); expect(viewModel.successMessage).toBe('League created successfully!'); }); it('should derive successMessage from failure', () => { const viewData: CreateLeagueViewData = { leagueId: 'league-123', success: false, successMessage: 'Failed to create league.', }; const viewModel = new CreateLeagueViewModel(viewData); expect(viewModel.successMessage).toBe('Failed to create league.'); }); }); });