integration tests
This commit is contained in:
@@ -0,0 +1,116 @@
|
||||
import { beforeEach, describe, expect, it } from 'vitest';
|
||||
import { LeaguesTestContext } from '../LeaguesTestContext';
|
||||
import { League } from '../../../../core/racing/domain/entities/League';
|
||||
import { Season } from '../../../../core/racing/domain/entities/season/Season';
|
||||
import { SeasonSponsorship } from '../../../../core/racing/domain/entities/season/SeasonSponsorship';
|
||||
import { Money } from '../../../../core/racing/domain/value-objects/Money';
|
||||
|
||||
describe('League Sponsorships - Sponsorship Management', () => {
|
||||
let context: LeaguesTestContext;
|
||||
|
||||
beforeEach(() => {
|
||||
context = new LeaguesTestContext();
|
||||
context.clear();
|
||||
});
|
||||
|
||||
const seedLeagueAndSeason = async (params: { leagueId: string; seasonId: string }) => {
|
||||
const league = League.create({
|
||||
id: params.leagueId,
|
||||
name: 'League 1',
|
||||
description: 'League used for sponsorship integration tests',
|
||||
ownerId: 'owner-1',
|
||||
});
|
||||
await context.racingLeagueRepository.create(league);
|
||||
|
||||
const season = Season.create({
|
||||
id: params.seasonId,
|
||||
leagueId: params.leagueId,
|
||||
gameId: 'iracing',
|
||||
name: 'Season 1',
|
||||
status: 'active',
|
||||
startDate: new Date('2025-01-01T00:00:00.000Z'),
|
||||
endDate: new Date('2025-02-01T00:00:00.000Z'),
|
||||
});
|
||||
await context.seasonRepository.create(season);
|
||||
|
||||
return { league, season };
|
||||
};
|
||||
|
||||
it('adds a season sponsorship to the repository', async () => {
|
||||
const leagueId = 'league-1';
|
||||
const seasonId = 'season-1';
|
||||
|
||||
await seedLeagueAndSeason({ leagueId, seasonId });
|
||||
|
||||
const sponsorship = SeasonSponsorship.create({
|
||||
id: 'sponsorship-1',
|
||||
seasonId,
|
||||
leagueId,
|
||||
sponsorId: 'sponsor-1',
|
||||
tier: 'main',
|
||||
pricing: Money.create(1000, 'USD'),
|
||||
status: 'active',
|
||||
});
|
||||
|
||||
await context.seasonSponsorshipRepository.create(sponsorship);
|
||||
|
||||
const found = await context.seasonSponsorshipRepository.findById('sponsorship-1');
|
||||
expect(found).not.toBeNull();
|
||||
expect(found?.id).toBe('sponsorship-1');
|
||||
expect(found?.seasonId).toBe(seasonId);
|
||||
expect(found?.leagueId).toBe(leagueId);
|
||||
});
|
||||
|
||||
it('edits sponsorship pricing via repository update', async () => {
|
||||
const leagueId = 'league-1';
|
||||
const seasonId = 'season-1';
|
||||
|
||||
await seedLeagueAndSeason({ leagueId, seasonId });
|
||||
|
||||
const sponsorship = SeasonSponsorship.create({
|
||||
id: 'sponsorship-1',
|
||||
seasonId,
|
||||
leagueId,
|
||||
sponsorId: 'sponsor-1',
|
||||
tier: 'main',
|
||||
pricing: Money.create(1000, 'USD'),
|
||||
status: 'active',
|
||||
});
|
||||
|
||||
await context.seasonSponsorshipRepository.create(sponsorship);
|
||||
|
||||
const updated = sponsorship.withPricing(Money.create(1500, 'USD'));
|
||||
await context.seasonSponsorshipRepository.update(updated);
|
||||
|
||||
const found = await context.seasonSponsorshipRepository.findById('sponsorship-1');
|
||||
expect(found).not.toBeNull();
|
||||
expect(found?.pricing.amount).toBe(1500);
|
||||
expect(found?.pricing.currency).toBe('USD');
|
||||
});
|
||||
|
||||
it('deletes a sponsorship from the repository', async () => {
|
||||
const leagueId = 'league-1';
|
||||
const seasonId = 'season-1';
|
||||
|
||||
await seedLeagueAndSeason({ leagueId, seasonId });
|
||||
|
||||
const sponsorship = SeasonSponsorship.create({
|
||||
id: 'sponsorship-1',
|
||||
seasonId,
|
||||
leagueId,
|
||||
sponsorId: 'sponsor-1',
|
||||
tier: 'main',
|
||||
pricing: Money.create(1000, 'USD'),
|
||||
status: 'active',
|
||||
});
|
||||
|
||||
await context.seasonSponsorshipRepository.create(sponsorship);
|
||||
expect(await context.seasonSponsorshipRepository.exists('sponsorship-1')).toBe(true);
|
||||
|
||||
await context.seasonSponsorshipRepository.delete('sponsorship-1');
|
||||
|
||||
expect(await context.seasonSponsorshipRepository.exists('sponsorship-1')).toBe(false);
|
||||
const found = await context.seasonSponsorshipRepository.findById('sponsorship-1');
|
||||
expect(found).toBeNull();
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user