Files
gridpilot.gg/apps/api/src/domain/league/presenters/PublishLeagueSeasonSchedulePresenter.test.ts
2026-01-08 16:30:15 +01:00

68 lines
1.7 KiB
TypeScript

import { describe, expect, it } from 'vitest';
import { PublishLeagueSeasonSchedulePresenter } from './LeagueSeasonScheduleMutationPresenters';
describe('PublishLeagueSeasonSchedulePresenter', () => {
it('presents publish result with success and published=true', () => {
const presenter = new PublishLeagueSeasonSchedulePresenter();
presenter.present({
success: true,
seasonId: 'season-1',
published: true,
});
const vm = presenter.getResponseModel();
expect(vm).not.toBeNull();
expect(vm!.success).toBe(true);
expect(vm!.published).toBe(true);
});
it('returns null before present is called', () => {
const presenter = new PublishLeagueSeasonSchedulePresenter();
const vm = presenter.getResponseModel();
expect(vm).toBeNull();
});
it('can be reset after presenting', () => {
const presenter = new PublishLeagueSeasonSchedulePresenter();
presenter.present({
success: true,
seasonId: 'season-1',
published: true,
});
expect(presenter.getResponseModel()).not.toBeNull();
presenter.reset();
expect(presenter.getResponseModel()).toBeNull();
});
it('can present multiple times with different results', () => {
const presenter = new PublishLeagueSeasonSchedulePresenter();
// First presentation
presenter.present({
success: true,
seasonId: 'season-1',
published: true,
});
let vm = presenter.getResponseModel();
expect(vm!.published).toBe(true);
// Second presentation (simulating reuse)
presenter.present({
success: true,
seasonId: 'season-2',
published: true,
});
vm = presenter.getResponseModel();
expect(vm!.published).toBe(true);
});
});