diff --git a/core/analytics/domain/entities/AnalyticsSnapshot.test.ts b/core/analytics/domain/entities/AnalyticsSnapshot.test.ts new file mode 100644 index 000000000..f32ac18f7 --- /dev/null +++ b/core/analytics/domain/entities/AnalyticsSnapshot.test.ts @@ -0,0 +1,118 @@ +import { AnalyticsSnapshot, type SnapshotEntityType, type SnapshotPeriod } from '@core/analytics/domain/entities/AnalyticsSnapshot'; + +describe('AnalyticsSnapshot', () => { + const startDate = new Date('2025-01-01T12:00:00.000Z'); + const endDate = new Date('2025-01-02T12:00:00.000Z'); + + const validMetrics = { + pageViews: 10, + uniqueVisitors: 3, + avgSessionDuration: 180_000, + bounceRate: 25, + engagementScore: 60, + sponsorClicks: 2, + sponsorUrlClicks: 1, + socialShares: 4, + leagueJoins: 0, + raceRegistrations: 0, + exposureValue: 0, + }; + + const createValid = (overrides?: Partial[0]>) => { + return AnalyticsSnapshot.create({ + id: 'snapshot-1', + entityType: 'league', + entityId: 'entity_123', + period: 'monthly', + startDate, + endDate, + metrics: validMetrics, + ...overrides, + }); + }; + + it('creates a snapshot with trimmed entityId', () => { + const snapshot = createValid({ entityId: ' entity_456 ' }); + + expect(snapshot.entityId).toBe('entity_456'); + }); + + it('throws if id is missing', () => { + expect(() => createValid({ id: '' })).toThrow(Error); + expect(() => createValid({ id: ' ' })).toThrow(Error); + }); + + it('throws if entityType is missing', () => { + expect(() => createValid({ entityType: undefined as unknown as SnapshotEntityType })).toThrow(Error); + }); + + it('throws if entityId is missing', () => { + expect(() => createValid({ entityId: '' })).toThrow(Error); + expect(() => createValid({ entityId: ' ' })).toThrow(Error); + }); + + it('throws if period is missing', () => { + expect(() => createValid({ period: undefined as unknown as SnapshotPeriod })).toThrow(Error); + }); + + it('throws if endDate is before startDate', () => { + expect(() => createValid({ startDate: endDate, endDate: startDate })).toThrow(Error); + }); + + it('createEmpty initializes metrics to zero', () => { + const snapshot = AnalyticsSnapshot.createEmpty( + 'snapshot-empty', + 'league', + 'entity_1', + 'weekly', + startDate, + endDate, + ); + + expect(snapshot.metrics.pageViews).toBe(0); + expect(snapshot.metrics.uniqueVisitors).toBe(0); + expect(snapshot.metrics.sponsorClicks).toBe(0); + expect(snapshot.metrics.sponsorUrlClicks).toBe(0); + expect(snapshot.metrics.socialShares).toBe(0); + }); + + it('calculates exposure score using weighted metrics', () => { + const snapshot = createValid({ + metrics: { + ...validMetrics, + pageViews: 10, + uniqueVisitors: 3, + sponsorClicks: 2, + sponsorUrlClicks: 1, + socialShares: 4, + }, + }); + + expect(snapshot.calculateExposureScore()).toBe(81); + }); + + it('returns trust indicator high/medium/low based on thresholds', () => { + expect( + createValid({ + metrics: { ...validMetrics, bounceRate: 25, avgSessionDuration: 180_000, engagementScore: 60 }, + }).getTrustIndicator(), + ).toBe('high'); + + expect( + createValid({ + metrics: { ...validMetrics, bounceRate: 50, avgSessionDuration: 60_000, engagementScore: 30 }, + }).getTrustIndicator(), + ).toBe('medium'); + + expect( + createValid({ + metrics: { ...validMetrics, bounceRate: 90, avgSessionDuration: 10_000, engagementScore: 0 }, + }).getTrustIndicator(), + ).toBe('low'); + }); + + it('formats period labels (monthly includes year)', () => { + expect(createValid({ period: 'monthly' }).getPeriodLabel()).toBe('Jan 1, 2025 - Jan 2, 2025'); + expect(createValid({ period: 'weekly' }).getPeriodLabel()).toBe('Jan 1 - Jan 2'); + }); +}); \ No newline at end of file diff --git a/core/analytics/domain/entities/EngagementEvent.test.ts b/core/analytics/domain/entities/EngagementEvent.test.ts new file mode 100644 index 000000000..46fe596e5 --- /dev/null +++ b/core/analytics/domain/entities/EngagementEvent.test.ts @@ -0,0 +1,129 @@ +import { EngagementEvent, type EngagementAction, type EngagementEntityType } from '@core/analytics/domain/entities/EngagementEvent'; + +describe('EngagementEvent', () => { + const baseProps = (): Parameters[0] => ({ + id: 'event-1', + action: 'click_sponsor_logo', + entityType: 'league', + entityId: 'entity_123', + actorType: 'anonymous', + sessionId: 'session-1', + metadata: { source: 'test', count: 1, ok: true }, + }); + + it('creates an event with trimmed entityId', () => { + const event = EngagementEvent.create({ + id: 'event-1', + action: 'view_schedule', + entityType: 'league', + entityId: ' entity_456 ', + actorType: 'driver', + actorId: 'driver-1', + sessionId: 'session-1', + }); + + expect(event.entityId).toBe('entity_456'); + }); + + it('throws if id is missing', () => { + expect(() => EngagementEvent.create({ ...baseProps(), id: '' })).toThrow(Error); + expect(() => EngagementEvent.create({ ...baseProps(), id: ' ' })).toThrow(Error); + }); + + it('throws if action is missing', () => { + expect(() => + EngagementEvent.create({ ...baseProps(), action: undefined } as unknown as Parameters< + typeof EngagementEvent.create + >[0]), + ).toThrow(Error); + }); + + it('throws if entityType is missing', () => { + expect(() => + EngagementEvent.create({ ...baseProps(), entityType: undefined as unknown as EngagementEntityType }), + ).toThrow(Error); + }); + + it('throws if entityId is missing', () => { + expect(() => EngagementEvent.create({ ...baseProps(), entityId: '' })).toThrow(Error); + expect(() => EngagementEvent.create({ ...baseProps(), entityId: ' ' })).toThrow(Error); + }); + + it('throws if sessionId is missing', () => { + expect(() => EngagementEvent.create({ ...baseProps(), sessionId: '' })).toThrow(Error); + expect(() => EngagementEvent.create({ ...baseProps(), sessionId: ' ' })).toThrow(Error); + }); + + it('detects sponsor engagement', () => { + expect(EngagementEvent.create(baseProps()).isSponsorEngagement()).toBe(true); + + const sponsorEntity = EngagementEvent.create({ + id: 'event-2', + action: 'view_schedule', + entityType: 'sponsor', + entityId: 'sponsor-1', + actorType: 'anonymous', + sessionId: 'session-2', + }); + expect(sponsorEntity.isSponsorEngagement()).toBe(true); + + const nonSponsor = EngagementEvent.create({ + id: 'event-3', + action: 'view_standings', + entityType: 'league', + entityId: 'league-1', + actorType: 'anonymous', + sessionId: 'session-3', + }); + expect(nonSponsor.isSponsorEngagement()).toBe(false); + }); + + it('detects conversion events', () => { + const join = EngagementEvent.create({ + id: 'event-4', + action: 'join_league', + entityType: 'league', + entityId: 'league-1', + actorType: 'driver', + actorId: 'driver-1', + sessionId: 'session-4', + }); + expect(join.isConversionEvent()).toBe(true); + + const view = EngagementEvent.create({ + id: 'event-5', + action: 'view_schedule', + entityType: 'league', + entityId: 'league-1', + actorType: 'anonymous', + sessionId: 'session-5', + }); + expect(view.isConversionEvent()).toBe(false); + }); + + it('returns configured engagement weights', () => { + const weights: Array<{ action: EngagementAction; expected: number }> = [ + { action: 'click_sponsor_logo', expected: 2 }, + { action: 'click_sponsor_url', expected: 5 }, + { action: 'download_livery_pack', expected: 3 }, + { action: 'join_league', expected: 10 }, + { action: 'register_race', expected: 8 }, + { action: 'view_standings', expected: 1 }, + { action: 'view_schedule', expected: 1 }, + { action: 'share_social', expected: 4 }, + { action: 'contact_sponsor', expected: 15 }, + ]; + + for (const { action, expected } of weights) { + const event = EngagementEvent.create({ + id: `event-${action}`, + action, + entityType: 'league', + entityId: 'league-1', + actorType: 'anonymous', + sessionId: 'session-1', + }); + expect(event.getEngagementWeight()).toBe(expected); + } + }); +}); \ No newline at end of file diff --git a/core/analytics/domain/entities/PageView.test.ts b/core/analytics/domain/entities/PageView.test.ts new file mode 100644 index 000000000..5b0c35a79 --- /dev/null +++ b/core/analytics/domain/entities/PageView.test.ts @@ -0,0 +1,76 @@ +import { PageView, type EntityType } from '@core/analytics/domain/entities/PageView'; + +describe('PageView', () => { + const now = new Date('2025-01-01T12:00:00.000Z'); + + const createValid = (overrides?: Partial[0]>) => { + return PageView.create({ + id: 'pv_1', + entityType: 'league', + entityId: 'entity_123', + visitorType: 'anonymous', + sessionId: 'session_1', + timestamp: now, + ...overrides, + }); + }; + + it('creates a PageView and exposes value-object values', () => { + const pv = createValid({ + id: ' pv_123 ', + entityId: ' entity_456 ', + sessionId: ' session_789 ', + }); + + expect(pv.id).toBe('pv_123'); + expect(pv.entityId).toBe('entity_456'); + expect(pv.sessionId).toBe('session_789'); + expect(pv.timestamp).toEqual(now); + }); + + it('throws if id is missing', () => { + expect(() => createValid({ id: '' })).toThrow(Error); + expect(() => createValid({ id: ' ' })).toThrow(Error); + }); + + it('throws if entityType is missing', () => { + expect(() => createValid({ entityType: undefined as unknown as EntityType })).toThrow(Error); + }); + + it('throws if entityId is missing', () => { + expect(() => createValid({ entityId: '' })).toThrow(Error); + expect(() => createValid({ entityId: ' ' })).toThrow(Error); + }); + + it('throws if sessionId is missing', () => { + expect(() => createValid({ sessionId: '' })).toThrow(Error); + expect(() => createValid({ sessionId: ' ' })).toThrow(Error); + }); + + it('withDuration returns a new PageView with duration', () => { + const pv = createValid({ visitorId: 'visitor-1' }); + + const pv2 = pv.withDuration(12_345); + + expect(pv2).not.toBe(pv); + expect(pv2.durationMs).toBe(12_345); + expect(pv2.id).toBe(pv.id); + expect(pv2.sessionId).toBe(pv.sessionId); + }); + + it('withDuration throws for negative durations', () => { + const pv = createValid(); + expect(() => pv.withDuration(-1)).toThrow(Error); + }); + + it('isMeaningfulView is true for 5s+ duration', () => { + expect(createValid({ durationMs: 4999 }).isMeaningfulView()).toBe(false); + expect(createValid({ durationMs: 5000 }).isMeaningfulView()).toBe(true); + }); + + it('isExternalReferral checks referrer domain', () => { + expect(createValid().isExternalReferral()).toBe(false); + expect(createValid({ referrer: 'https://gridpilot.example/path' }).isExternalReferral()).toBe(false); + expect(createValid({ referrer: 'https://example.com/path' }).isExternalReferral()).toBe(true); + }); +}); \ No newline at end of file diff --git a/core/identity/domain/entities/Achievement.test.ts b/core/identity/domain/entities/Achievement.test.ts new file mode 100644 index 000000000..b3edbc2b0 --- /dev/null +++ b/core/identity/domain/entities/Achievement.test.ts @@ -0,0 +1,62 @@ +import { Achievement } from '@core/identity/domain/entities/Achievement'; + +describe('Achievement', () => { + const baseProps = () => ({ + id: 'ach-1', + name: 'First Win', + description: 'Win your first race', + category: 'driver' as const, + rarity: 'common' as const, + points: 10, + requirements: [{ type: 'wins' as const, value: 1, operator: '>=' as const }], + isSecret: false, + }); + + it('creates an Achievement with default iconUrl', () => { + const a = Achievement.create(baseProps()); + + expect(a.id).toBe('ach-1'); + expect(a.iconUrl).toBe(''); + expect(a.createdAt).toBeInstanceOf(Date); + }); + + it('throws if id is missing', () => { + expect(() => Achievement.create({ ...baseProps(), id: '' })).toThrow(Error); + expect(() => Achievement.create({ ...baseProps(), id: ' ' })).toThrow(Error); + }); + + it('throws if name is missing', () => { + expect(() => Achievement.create({ ...baseProps(), name: '' })).toThrow(Error); + expect(() => Achievement.create({ ...baseProps(), name: ' ' })).toThrow(Error); + }); + + it('throws if requirements is empty', () => { + expect(() => Achievement.create({ ...baseProps(), requirements: [] })).toThrow(Error); + }); + + it('checkRequirements evaluates all requirements', () => { + const a = Achievement.create({ + ...baseProps(), + requirements: [ + { type: 'wins', value: 2, operator: '>=' }, + { type: 'podiums', value: 1, operator: '>=' }, + ], + }); + + expect(a.checkRequirements({ wins: 2, podiums: 1 })).toBe(true); + expect(a.checkRequirements({ wins: 1, podiums: 1 })).toBe(false); + expect(a.checkRequirements({ wins: 2 })).toBe(false); + }); + + it('getRarityColor returns the configured color', () => { + expect(Achievement.create({ ...baseProps(), rarity: 'common' }).getRarityColor()).toBe('#9CA3AF'); + expect(Achievement.create({ ...baseProps(), rarity: 'legendary' }).getRarityColor()).toBe('#F59E0B'); + }); + + it('hides name/description when secret', () => { + const a = Achievement.create({ ...baseProps(), isSecret: true }); + + expect(a.getDisplayName()).toBe('???'); + expect(a.getDisplayDescription()).toContain('secret'); + }); +}); \ No newline at end of file diff --git a/core/identity/domain/entities/SponsorAccount.test.ts b/core/identity/domain/entities/SponsorAccount.test.ts new file mode 100644 index 000000000..8775fda90 --- /dev/null +++ b/core/identity/domain/entities/SponsorAccount.test.ts @@ -0,0 +1,7 @@ +import * as mod from '@core/identity/domain/entities/SponsorAccount'; + +describe('identity/domain/entities/SponsorAccount.ts', () => { + it('imports', () => { + expect(mod).toBeTruthy(); + }); +}); diff --git a/core/identity/domain/entities/User.test.ts b/core/identity/domain/entities/User.test.ts new file mode 100644 index 000000000..94ef189f8 --- /dev/null +++ b/core/identity/domain/entities/User.test.ts @@ -0,0 +1,7 @@ +import * as mod from '@core/identity/domain/entities/User'; + +describe('identity/domain/entities/User.ts', () => { + it('imports', () => { + expect(mod).toBeTruthy(); + }); +}); diff --git a/core/identity/domain/entities/UserAchievement.test.ts b/core/identity/domain/entities/UserAchievement.test.ts new file mode 100644 index 000000000..7777171e0 --- /dev/null +++ b/core/identity/domain/entities/UserAchievement.test.ts @@ -0,0 +1,7 @@ +import * as mod from '@core/identity/domain/entities/UserAchievement'; + +describe('identity/domain/entities/UserAchievement.ts', () => { + it('imports', () => { + expect(mod).toBeTruthy(); + }); +}); diff --git a/core/identity/domain/value-objects/EmailAddress.test.ts b/core/identity/domain/value-objects/EmailAddress.test.ts new file mode 100644 index 000000000..3363bdb9f --- /dev/null +++ b/core/identity/domain/value-objects/EmailAddress.test.ts @@ -0,0 +1,7 @@ +import * as mod from '@core/identity/domain/value-objects/EmailAddress'; + +describe('identity/domain/value-objects/EmailAddress.ts', () => { + it('imports', () => { + expect(mod).toBeTruthy(); + }); +}); diff --git a/core/identity/domain/value-objects/PasswordHash.test.ts b/core/identity/domain/value-objects/PasswordHash.test.ts new file mode 100644 index 000000000..cc2d49b80 --- /dev/null +++ b/core/identity/domain/value-objects/PasswordHash.test.ts @@ -0,0 +1,7 @@ +import * as mod from '@core/identity/domain/value-objects/PasswordHash'; + +describe('identity/domain/value-objects/PasswordHash.ts', () => { + it('imports', () => { + expect(mod).toBeTruthy(); + }); +}); diff --git a/core/identity/domain/value-objects/UserId.test.ts b/core/identity/domain/value-objects/UserId.test.ts new file mode 100644 index 000000000..73f7b44b4 --- /dev/null +++ b/core/identity/domain/value-objects/UserId.test.ts @@ -0,0 +1,7 @@ +import * as mod from '@core/identity/domain/value-objects/UserId'; + +describe('identity/domain/value-objects/UserId.ts', () => { + it('imports', () => { + expect(mod).toBeTruthy(); + }); +}); diff --git a/core/identity/domain/value-objects/UserRating.test.ts b/core/identity/domain/value-objects/UserRating.test.ts new file mode 100644 index 000000000..bc92cbcef --- /dev/null +++ b/core/identity/domain/value-objects/UserRating.test.ts @@ -0,0 +1,7 @@ +import * as mod from '@core/identity/domain/value-objects/UserRating'; + +describe('identity/domain/value-objects/UserRating.ts', () => { + it('imports', () => { + expect(mod).toBeTruthy(); + }); +}); diff --git a/core/media/domain/entities/Avatar.test.ts b/core/media/domain/entities/Avatar.test.ts new file mode 100644 index 000000000..7b32ffc14 --- /dev/null +++ b/core/media/domain/entities/Avatar.test.ts @@ -0,0 +1,7 @@ +import * as mod from '@core/media/domain/entities/Avatar'; + +describe('media/domain/entities/Avatar.ts', () => { + it('imports', () => { + expect(mod).toBeTruthy(); + }); +}); diff --git a/core/media/domain/entities/AvatarGenerationRequest.test.ts b/core/media/domain/entities/AvatarGenerationRequest.test.ts new file mode 100644 index 000000000..348e56c87 --- /dev/null +++ b/core/media/domain/entities/AvatarGenerationRequest.test.ts @@ -0,0 +1,7 @@ +import * as mod from '@core/media/domain/entities/AvatarGenerationRequest'; + +describe('media/domain/entities/AvatarGenerationRequest.ts', () => { + it('imports', () => { + expect(mod).toBeTruthy(); + }); +}); diff --git a/core/media/domain/entities/Media.test.ts b/core/media/domain/entities/Media.test.ts new file mode 100644 index 000000000..c741c2570 --- /dev/null +++ b/core/media/domain/entities/Media.test.ts @@ -0,0 +1,7 @@ +import * as mod from '@core/media/domain/entities/Media'; + +describe('media/domain/entities/Media.ts', () => { + it('imports', () => { + expect(mod).toBeTruthy(); + }); +}); diff --git a/core/media/domain/value-objects/AvatarId.test.ts b/core/media/domain/value-objects/AvatarId.test.ts new file mode 100644 index 000000000..2d4b0e36d --- /dev/null +++ b/core/media/domain/value-objects/AvatarId.test.ts @@ -0,0 +1,7 @@ +import * as mod from '@core/media/domain/value-objects/AvatarId'; + +describe('media/domain/value-objects/AvatarId.ts', () => { + it('imports', () => { + expect(mod).toBeTruthy(); + }); +}); diff --git a/core/notifications/domain/entities/Notification.test.ts b/core/notifications/domain/entities/Notification.test.ts new file mode 100644 index 000000000..6e8dddf0d --- /dev/null +++ b/core/notifications/domain/entities/Notification.test.ts @@ -0,0 +1,7 @@ +import * as mod from '@core/notifications/domain/entities/Notification'; + +describe('notifications/domain/entities/Notification.ts', () => { + it('imports', () => { + expect(mod).toBeTruthy(); + }); +}); diff --git a/core/notifications/domain/entities/NotificationPreference.test.ts b/core/notifications/domain/entities/NotificationPreference.test.ts new file mode 100644 index 000000000..15d225675 --- /dev/null +++ b/core/notifications/domain/entities/NotificationPreference.test.ts @@ -0,0 +1,7 @@ +import * as mod from '@core/notifications/domain/entities/NotificationPreference'; + +describe('notifications/domain/entities/NotificationPreference.ts', () => { + it('imports', () => { + expect(mod).toBeTruthy(); + }); +}); diff --git a/core/payments/domain/entities/MemberPayment.test.ts b/core/payments/domain/entities/MemberPayment.test.ts new file mode 100644 index 000000000..5eb26f327 --- /dev/null +++ b/core/payments/domain/entities/MemberPayment.test.ts @@ -0,0 +1,7 @@ +import * as mod from '@core/payments/domain/entities/MemberPayment'; + +describe('payments/domain/entities/MemberPayment.ts', () => { + it('imports', () => { + expect(mod).toBeTruthy(); + }); +}); diff --git a/core/payments/domain/entities/MembershipFee.test.ts b/core/payments/domain/entities/MembershipFee.test.ts new file mode 100644 index 000000000..b70ed1723 --- /dev/null +++ b/core/payments/domain/entities/MembershipFee.test.ts @@ -0,0 +1,7 @@ +import * as mod from '@core/payments/domain/entities/MembershipFee'; + +describe('payments/domain/entities/MembershipFee.ts', () => { + it('imports', () => { + expect(mod).toBeTruthy(); + }); +}); diff --git a/core/payments/domain/entities/Payment.test.ts b/core/payments/domain/entities/Payment.test.ts new file mode 100644 index 000000000..e6866f16b --- /dev/null +++ b/core/payments/domain/entities/Payment.test.ts @@ -0,0 +1,7 @@ +import * as mod from '@core/payments/domain/entities/Payment'; + +describe('payments/domain/entities/Payment.ts', () => { + it('imports', () => { + expect(mod).toBeTruthy(); + }); +}); diff --git a/core/payments/domain/entities/Prize.test.ts b/core/payments/domain/entities/Prize.test.ts new file mode 100644 index 000000000..9300c1fef --- /dev/null +++ b/core/payments/domain/entities/Prize.test.ts @@ -0,0 +1,7 @@ +import * as mod from '@core/payments/domain/entities/Prize'; + +describe('payments/domain/entities/Prize.ts', () => { + it('imports', () => { + expect(mod).toBeTruthy(); + }); +}); diff --git a/core/payments/domain/entities/Wallet.test.ts b/core/payments/domain/entities/Wallet.test.ts new file mode 100644 index 000000000..45e7fbc3e --- /dev/null +++ b/core/payments/domain/entities/Wallet.test.ts @@ -0,0 +1,7 @@ +import * as mod from '@core/payments/domain/entities/Wallet'; + +describe('payments/domain/entities/Wallet.ts', () => { + it('imports', () => { + expect(mod).toBeTruthy(); + }); +}); diff --git a/core/payments/domain/entities/index.test.ts b/core/payments/domain/entities/index.test.ts new file mode 100644 index 000000000..3e3e6ccd2 --- /dev/null +++ b/core/payments/domain/entities/index.test.ts @@ -0,0 +1,7 @@ +import * as mod from '@core/payments/domain/entities/index'; + +describe('payments/domain/entities/index.ts', () => { + it('imports', () => { + expect(mod).toBeTruthy(); + }); +}); diff --git a/core/racing/domain/entities/CarClass.test.ts b/core/racing/domain/entities/CarClass.test.ts new file mode 100644 index 000000000..1d0b2b40f --- /dev/null +++ b/core/racing/domain/entities/CarClass.test.ts @@ -0,0 +1,7 @@ +import * as mod from '@core/racing/domain/entities/CarClass'; + +describe('racing/domain/entities/CarClass.ts', () => { + it('imports', () => { + expect(mod).toBeTruthy(); + }); +}); diff --git a/core/racing/domain/entities/CarId.test.ts b/core/racing/domain/entities/CarId.test.ts new file mode 100644 index 000000000..cbe440dd1 --- /dev/null +++ b/core/racing/domain/entities/CarId.test.ts @@ -0,0 +1,7 @@ +import * as mod from '@core/racing/domain/entities/CarId'; + +describe('racing/domain/entities/CarId.ts', () => { + it('imports', () => { + expect(mod).toBeTruthy(); + }); +}); diff --git a/core/racing/domain/entities/CarLicense.test.ts b/core/racing/domain/entities/CarLicense.test.ts new file mode 100644 index 000000000..049b7633a --- /dev/null +++ b/core/racing/domain/entities/CarLicense.test.ts @@ -0,0 +1,7 @@ +import * as mod from '@core/racing/domain/entities/CarLicense'; + +describe('racing/domain/entities/CarLicense.ts', () => { + it('imports', () => { + expect(mod).toBeTruthy(); + }); +}); diff --git a/core/racing/domain/entities/CarName.test.ts b/core/racing/domain/entities/CarName.test.ts new file mode 100644 index 000000000..64ebc87ee --- /dev/null +++ b/core/racing/domain/entities/CarName.test.ts @@ -0,0 +1,7 @@ +import * as mod from '@core/racing/domain/entities/CarName'; + +describe('racing/domain/entities/CarName.ts', () => { + it('imports', () => { + expect(mod).toBeTruthy(); + }); +}); diff --git a/core/racing/domain/entities/DecisionNotes.test.ts b/core/racing/domain/entities/DecisionNotes.test.ts new file mode 100644 index 000000000..8c11a9cef --- /dev/null +++ b/core/racing/domain/entities/DecisionNotes.test.ts @@ -0,0 +1,7 @@ +import * as mod from '@core/racing/domain/entities/DecisionNotes'; + +describe('racing/domain/entities/DecisionNotes.ts', () => { + it('imports', () => { + expect(mod).toBeTruthy(); + }); +}); diff --git a/core/racing/domain/entities/DefenseRequestedAt.test.ts b/core/racing/domain/entities/DefenseRequestedAt.test.ts new file mode 100644 index 000000000..baacb5dd5 --- /dev/null +++ b/core/racing/domain/entities/DefenseRequestedAt.test.ts @@ -0,0 +1,7 @@ +import * as mod from '@core/racing/domain/entities/DefenseRequestedAt'; + +describe('racing/domain/entities/DefenseRequestedAt.ts', () => { + it('imports', () => { + expect(mod).toBeTruthy(); + }); +}); diff --git a/core/racing/domain/entities/DefenseStatement.test.ts b/core/racing/domain/entities/DefenseStatement.test.ts new file mode 100644 index 000000000..61dc2453b --- /dev/null +++ b/core/racing/domain/entities/DefenseStatement.test.ts @@ -0,0 +1,7 @@ +import * as mod from '@core/racing/domain/entities/DefenseStatement'; + +describe('racing/domain/entities/DefenseStatement.ts', () => { + it('imports', () => { + expect(mod).toBeTruthy(); + }); +}); diff --git a/core/racing/domain/entities/FiledAt.test.ts b/core/racing/domain/entities/FiledAt.test.ts new file mode 100644 index 000000000..7678b7564 --- /dev/null +++ b/core/racing/domain/entities/FiledAt.test.ts @@ -0,0 +1,7 @@ +import * as mod from '@core/racing/domain/entities/FiledAt'; + +describe('racing/domain/entities/FiledAt.ts', () => { + it('imports', () => { + expect(mod).toBeTruthy(); + }); +}); diff --git a/core/racing/domain/entities/GameId.test.ts b/core/racing/domain/entities/GameId.test.ts new file mode 100644 index 000000000..df2cee010 --- /dev/null +++ b/core/racing/domain/entities/GameId.test.ts @@ -0,0 +1,7 @@ +import * as mod from '@core/racing/domain/entities/GameId'; + +describe('racing/domain/entities/GameId.ts', () => { + it('imports', () => { + expect(mod).toBeTruthy(); + }); +}); diff --git a/core/racing/domain/entities/GameName.test.ts b/core/racing/domain/entities/GameName.test.ts new file mode 100644 index 000000000..fb1b7ab11 --- /dev/null +++ b/core/racing/domain/entities/GameName.test.ts @@ -0,0 +1,7 @@ +import * as mod from '@core/racing/domain/entities/GameName'; + +describe('racing/domain/entities/GameName.ts', () => { + it('imports', () => { + expect(mod).toBeTruthy(); + }); +}); diff --git a/core/racing/domain/entities/Horsepower.test.ts b/core/racing/domain/entities/Horsepower.test.ts new file mode 100644 index 000000000..e42dbf97b --- /dev/null +++ b/core/racing/domain/entities/Horsepower.test.ts @@ -0,0 +1,7 @@ +import * as mod from '@core/racing/domain/entities/Horsepower'; + +describe('racing/domain/entities/Horsepower.ts', () => { + it('imports', () => { + expect(mod).toBeTruthy(); + }); +}); diff --git a/core/racing/domain/entities/ImageUrl.test.ts b/core/racing/domain/entities/ImageUrl.test.ts new file mode 100644 index 000000000..053d3cc91 --- /dev/null +++ b/core/racing/domain/entities/ImageUrl.test.ts @@ -0,0 +1,7 @@ +import * as mod from '@core/racing/domain/entities/ImageUrl'; + +describe('racing/domain/entities/ImageUrl.ts', () => { + it('imports', () => { + expect(mod).toBeTruthy(); + }); +}); diff --git a/core/racing/domain/entities/IncidentDescription.test.ts b/core/racing/domain/entities/IncidentDescription.test.ts new file mode 100644 index 000000000..a1c5e058f --- /dev/null +++ b/core/racing/domain/entities/IncidentDescription.test.ts @@ -0,0 +1,7 @@ +import * as mod from '@core/racing/domain/entities/IncidentDescription'; + +describe('racing/domain/entities/IncidentDescription.ts', () => { + it('imports', () => { + expect(mod).toBeTruthy(); + }); +}); diff --git a/core/racing/domain/entities/JoinRequest.test.ts b/core/racing/domain/entities/JoinRequest.test.ts new file mode 100644 index 000000000..c403ba4a5 --- /dev/null +++ b/core/racing/domain/entities/JoinRequest.test.ts @@ -0,0 +1,7 @@ +import * as mod from '@core/racing/domain/entities/JoinRequest'; + +describe('racing/domain/entities/JoinRequest.ts', () => { + it('imports', () => { + expect(mod).toBeTruthy(); + }); +}); diff --git a/core/racing/domain/entities/LapNumber.test.ts b/core/racing/domain/entities/LapNumber.test.ts new file mode 100644 index 000000000..3cb78768f --- /dev/null +++ b/core/racing/domain/entities/LapNumber.test.ts @@ -0,0 +1,7 @@ +import * as mod from '@core/racing/domain/entities/LapNumber'; + +describe('racing/domain/entities/LapNumber.ts', () => { + it('imports', () => { + expect(mod).toBeTruthy(); + }); +}); diff --git a/core/racing/domain/entities/LeagueCreatedAt.test.ts b/core/racing/domain/entities/LeagueCreatedAt.test.ts new file mode 100644 index 000000000..c11270446 --- /dev/null +++ b/core/racing/domain/entities/LeagueCreatedAt.test.ts @@ -0,0 +1,7 @@ +import * as mod from '@core/racing/domain/entities/LeagueCreatedAt'; + +describe('racing/domain/entities/LeagueCreatedAt.ts', () => { + it('imports', () => { + expect(mod).toBeTruthy(); + }); +}); diff --git a/core/racing/domain/entities/LeagueDescription.test.ts b/core/racing/domain/entities/LeagueDescription.test.ts new file mode 100644 index 000000000..ffabd6c9d --- /dev/null +++ b/core/racing/domain/entities/LeagueDescription.test.ts @@ -0,0 +1,7 @@ +import * as mod from '@core/racing/domain/entities/LeagueDescription'; + +describe('racing/domain/entities/LeagueDescription.ts', () => { + it('imports', () => { + expect(mod).toBeTruthy(); + }); +}); diff --git a/core/racing/domain/entities/LeagueId.test.ts b/core/racing/domain/entities/LeagueId.test.ts new file mode 100644 index 000000000..6f231fade --- /dev/null +++ b/core/racing/domain/entities/LeagueId.test.ts @@ -0,0 +1,7 @@ +import * as mod from '@core/racing/domain/entities/LeagueId'; + +describe('racing/domain/entities/LeagueId.ts', () => { + it('imports', () => { + expect(mod).toBeTruthy(); + }); +}); diff --git a/core/racing/domain/entities/LeagueName.test.ts b/core/racing/domain/entities/LeagueName.test.ts new file mode 100644 index 000000000..b452667be --- /dev/null +++ b/core/racing/domain/entities/LeagueName.test.ts @@ -0,0 +1,7 @@ +import * as mod from '@core/racing/domain/entities/LeagueName'; + +describe('racing/domain/entities/LeagueName.ts', () => { + it('imports', () => { + expect(mod).toBeTruthy(); + }); +}); diff --git a/core/racing/domain/entities/LeagueOwnerId.test.ts b/core/racing/domain/entities/LeagueOwnerId.test.ts new file mode 100644 index 000000000..40411299d --- /dev/null +++ b/core/racing/domain/entities/LeagueOwnerId.test.ts @@ -0,0 +1,7 @@ +import * as mod from '@core/racing/domain/entities/LeagueOwnerId'; + +describe('racing/domain/entities/LeagueOwnerId.ts', () => { + it('imports', () => { + expect(mod).toBeTruthy(); + }); +}); diff --git a/core/racing/domain/entities/LeagueSocialLinks.test.ts b/core/racing/domain/entities/LeagueSocialLinks.test.ts new file mode 100644 index 000000000..8f7e0c64c --- /dev/null +++ b/core/racing/domain/entities/LeagueSocialLinks.test.ts @@ -0,0 +1,7 @@ +import * as mod from '@core/racing/domain/entities/LeagueSocialLinks'; + +describe('racing/domain/entities/LeagueSocialLinks.ts', () => { + it('imports', () => { + expect(mod).toBeTruthy(); + }); +}); diff --git a/core/racing/domain/entities/LiveryTemplateCreatedAt.test.ts b/core/racing/domain/entities/LiveryTemplateCreatedAt.test.ts new file mode 100644 index 000000000..436c3355a --- /dev/null +++ b/core/racing/domain/entities/LiveryTemplateCreatedAt.test.ts @@ -0,0 +1,7 @@ +import * as mod from '@core/racing/domain/entities/LiveryTemplateCreatedAt'; + +describe('racing/domain/entities/LiveryTemplateCreatedAt.ts', () => { + it('imports', () => { + expect(mod).toBeTruthy(); + }); +}); diff --git a/core/racing/domain/entities/LiveryTemplateId.test.ts b/core/racing/domain/entities/LiveryTemplateId.test.ts new file mode 100644 index 000000000..7b0a31e78 --- /dev/null +++ b/core/racing/domain/entities/LiveryTemplateId.test.ts @@ -0,0 +1,7 @@ +import * as mod from '@core/racing/domain/entities/LiveryTemplateId'; + +describe('racing/domain/entities/LiveryTemplateId.ts', () => { + it('imports', () => { + expect(mod).toBeTruthy(); + }); +}); diff --git a/core/racing/domain/entities/LiveryTemplateUpdatedAt.test.ts b/core/racing/domain/entities/LiveryTemplateUpdatedAt.test.ts new file mode 100644 index 000000000..0116ef6d7 --- /dev/null +++ b/core/racing/domain/entities/LiveryTemplateUpdatedAt.test.ts @@ -0,0 +1,7 @@ +import * as mod from '@core/racing/domain/entities/LiveryTemplateUpdatedAt'; + +describe('racing/domain/entities/LiveryTemplateUpdatedAt.ts', () => { + it('imports', () => { + expect(mod).toBeTruthy(); + }); +}); diff --git a/core/racing/domain/entities/Manufacturer.test.ts b/core/racing/domain/entities/Manufacturer.test.ts new file mode 100644 index 000000000..054d6f22c --- /dev/null +++ b/core/racing/domain/entities/Manufacturer.test.ts @@ -0,0 +1,7 @@ +import * as mod from '@core/racing/domain/entities/Manufacturer'; + +describe('racing/domain/entities/Manufacturer.ts', () => { + it('imports', () => { + expect(mod).toBeTruthy(); + }); +}); diff --git a/core/racing/domain/entities/MembershipRole.test.ts b/core/racing/domain/entities/MembershipRole.test.ts new file mode 100644 index 000000000..efd1144b1 --- /dev/null +++ b/core/racing/domain/entities/MembershipRole.test.ts @@ -0,0 +1,7 @@ +import * as mod from '@core/racing/domain/entities/MembershipRole'; + +describe('racing/domain/entities/MembershipRole.ts', () => { + it('imports', () => { + expect(mod).toBeTruthy(); + }); +}); diff --git a/core/racing/domain/entities/MembershipStatus.test.ts b/core/racing/domain/entities/MembershipStatus.test.ts new file mode 100644 index 000000000..3ba4b8100 --- /dev/null +++ b/core/racing/domain/entities/MembershipStatus.test.ts @@ -0,0 +1,7 @@ +import * as mod from '@core/racing/domain/entities/MembershipStatus'; + +describe('racing/domain/entities/MembershipStatus.ts', () => { + it('imports', () => { + expect(mod).toBeTruthy(); + }); +}); diff --git a/core/racing/domain/entities/ProtestComment.test.ts b/core/racing/domain/entities/ProtestComment.test.ts new file mode 100644 index 000000000..53c1596e2 --- /dev/null +++ b/core/racing/domain/entities/ProtestComment.test.ts @@ -0,0 +1,7 @@ +import * as mod from '@core/racing/domain/entities/ProtestComment'; + +describe('racing/domain/entities/ProtestComment.ts', () => { + it('imports', () => { + expect(mod).toBeTruthy(); + }); +}); diff --git a/core/racing/domain/entities/ProtestDefense.test.ts b/core/racing/domain/entities/ProtestDefense.test.ts new file mode 100644 index 000000000..3beb9e7c4 --- /dev/null +++ b/core/racing/domain/entities/ProtestDefense.test.ts @@ -0,0 +1,7 @@ +import * as mod from '@core/racing/domain/entities/ProtestDefense'; + +describe('racing/domain/entities/ProtestDefense.ts', () => { + it('imports', () => { + expect(mod).toBeTruthy(); + }); +}); diff --git a/core/racing/domain/entities/ProtestIncident.test.ts b/core/racing/domain/entities/ProtestIncident.test.ts new file mode 100644 index 000000000..bd4388c69 --- /dev/null +++ b/core/racing/domain/entities/ProtestIncident.test.ts @@ -0,0 +1,7 @@ +import * as mod from '@core/racing/domain/entities/ProtestIncident'; + +describe('racing/domain/entities/ProtestIncident.ts', () => { + it('imports', () => { + expect(mod).toBeTruthy(); + }); +}); diff --git a/core/racing/domain/entities/ProtestStatus.test.ts b/core/racing/domain/entities/ProtestStatus.test.ts new file mode 100644 index 000000000..d7de7a3a7 --- /dev/null +++ b/core/racing/domain/entities/ProtestStatus.test.ts @@ -0,0 +1,7 @@ +import * as mod from '@core/racing/domain/entities/ProtestStatus'; + +describe('racing/domain/entities/ProtestStatus.ts', () => { + it('imports', () => { + expect(mod).toBeTruthy(); + }); +}); diff --git a/core/racing/domain/entities/ResultWithIncidents.test.ts b/core/racing/domain/entities/ResultWithIncidents.test.ts new file mode 100644 index 000000000..d17c51d31 --- /dev/null +++ b/core/racing/domain/entities/ResultWithIncidents.test.ts @@ -0,0 +1,7 @@ +import * as mod from '@core/racing/domain/entities/ResultWithIncidents'; + +describe('racing/domain/entities/ResultWithIncidents.ts', () => { + it('imports', () => { + expect(mod).toBeTruthy(); + }); +}); diff --git a/core/racing/domain/entities/ReviewedAt.test.ts b/core/racing/domain/entities/ReviewedAt.test.ts new file mode 100644 index 000000000..304a838a2 --- /dev/null +++ b/core/racing/domain/entities/ReviewedAt.test.ts @@ -0,0 +1,7 @@ +import * as mod from '@core/racing/domain/entities/ReviewedAt'; + +describe('racing/domain/entities/ReviewedAt.ts', () => { + it('imports', () => { + expect(mod).toBeTruthy(); + }); +}); diff --git a/core/racing/domain/entities/ScoringPresetId.test.ts b/core/racing/domain/entities/ScoringPresetId.test.ts new file mode 100644 index 000000000..e35f48508 --- /dev/null +++ b/core/racing/domain/entities/ScoringPresetId.test.ts @@ -0,0 +1,7 @@ +import * as mod from '@core/racing/domain/entities/ScoringPresetId'; + +describe('racing/domain/entities/ScoringPresetId.ts', () => { + it('imports', () => { + expect(mod).toBeTruthy(); + }); +}); diff --git a/core/racing/domain/entities/SubmittedAt.test.ts b/core/racing/domain/entities/SubmittedAt.test.ts new file mode 100644 index 000000000..0dbe8a6cf --- /dev/null +++ b/core/racing/domain/entities/SubmittedAt.test.ts @@ -0,0 +1,7 @@ +import * as mod from '@core/racing/domain/entities/SubmittedAt'; + +describe('racing/domain/entities/SubmittedAt.ts', () => { + it('imports', () => { + expect(mod).toBeTruthy(); + }); +}); diff --git a/core/racing/domain/entities/TimeInRace.test.ts b/core/racing/domain/entities/TimeInRace.test.ts new file mode 100644 index 000000000..712fe3dbc --- /dev/null +++ b/core/racing/domain/entities/TimeInRace.test.ts @@ -0,0 +1,7 @@ +import * as mod from '@core/racing/domain/entities/TimeInRace'; + +describe('racing/domain/entities/TimeInRace.ts', () => { + it('imports', () => { + expect(mod).toBeTruthy(); + }); +}); diff --git a/core/racing/domain/entities/VideoUrl.test.ts b/core/racing/domain/entities/VideoUrl.test.ts new file mode 100644 index 000000000..e3fae4e66 --- /dev/null +++ b/core/racing/domain/entities/VideoUrl.test.ts @@ -0,0 +1,7 @@ +import * as mod from '@core/racing/domain/entities/VideoUrl'; + +describe('racing/domain/entities/VideoUrl.ts', () => { + it('imports', () => { + expect(mod).toBeTruthy(); + }); +}); diff --git a/core/racing/domain/entities/Weight.test.ts b/core/racing/domain/entities/Weight.test.ts new file mode 100644 index 000000000..12bd5053e --- /dev/null +++ b/core/racing/domain/entities/Weight.test.ts @@ -0,0 +1,7 @@ +import * as mod from '@core/racing/domain/entities/Weight'; + +describe('racing/domain/entities/Weight.ts', () => { + it('imports', () => { + expect(mod).toBeTruthy(); + }); +}); diff --git a/core/racing/domain/entities/Year.test.ts b/core/racing/domain/entities/Year.test.ts new file mode 100644 index 000000000..57264f1ce --- /dev/null +++ b/core/racing/domain/entities/Year.test.ts @@ -0,0 +1,7 @@ +import * as mod from '@core/racing/domain/entities/Year'; + +describe('racing/domain/entities/Year.ts', () => { + it('imports', () => { + expect(mod).toBeTruthy(); + }); +}); diff --git a/core/racing/domain/entities/season/SeasonId.test.ts b/core/racing/domain/entities/season/SeasonId.test.ts new file mode 100644 index 000000000..44d42cbcc --- /dev/null +++ b/core/racing/domain/entities/season/SeasonId.test.ts @@ -0,0 +1,7 @@ +import * as mod from '@core/racing/domain/entities/season/SeasonId'; + +describe('racing/domain/entities/season/SeasonId.ts', () => { + it('imports', () => { + expect(mod).toBeTruthy(); + }); +}); diff --git a/core/racing/domain/entities/season/index.test.ts b/core/racing/domain/entities/season/index.test.ts new file mode 100644 index 000000000..bbae50264 --- /dev/null +++ b/core/racing/domain/entities/season/index.test.ts @@ -0,0 +1,7 @@ +import * as mod from '@core/racing/domain/entities/season/index'; + +describe('racing/domain/entities/season/index.ts', () => { + it('imports', () => { + expect(mod).toBeTruthy(); + }); +}); diff --git a/core/racing/domain/entities/sponsor/Sponsor.test.ts b/core/racing/domain/entities/sponsor/Sponsor.test.ts new file mode 100644 index 000000000..f88339625 --- /dev/null +++ b/core/racing/domain/entities/sponsor/Sponsor.test.ts @@ -0,0 +1,7 @@ +import * as mod from '@core/racing/domain/entities/sponsor/Sponsor'; + +describe('racing/domain/entities/sponsor/Sponsor.ts', () => { + it('imports', () => { + expect(mod).toBeTruthy(); + }); +}); diff --git a/core/racing/domain/entities/sponsor/SponsorCreatedAt.test.ts b/core/racing/domain/entities/sponsor/SponsorCreatedAt.test.ts new file mode 100644 index 000000000..549750ebf --- /dev/null +++ b/core/racing/domain/entities/sponsor/SponsorCreatedAt.test.ts @@ -0,0 +1,7 @@ +import * as mod from '@core/racing/domain/entities/sponsor/SponsorCreatedAt'; + +describe('racing/domain/entities/sponsor/SponsorCreatedAt.ts', () => { + it('imports', () => { + expect(mod).toBeTruthy(); + }); +}); diff --git a/core/racing/domain/entities/sponsor/SponsorEmail.test.ts b/core/racing/domain/entities/sponsor/SponsorEmail.test.ts new file mode 100644 index 000000000..cdf5cbf6c --- /dev/null +++ b/core/racing/domain/entities/sponsor/SponsorEmail.test.ts @@ -0,0 +1,7 @@ +import * as mod from '@core/racing/domain/entities/sponsor/SponsorEmail'; + +describe('racing/domain/entities/sponsor/SponsorEmail.ts', () => { + it('imports', () => { + expect(mod).toBeTruthy(); + }); +}); diff --git a/core/racing/domain/entities/sponsor/SponsorId.test.ts b/core/racing/domain/entities/sponsor/SponsorId.test.ts new file mode 100644 index 000000000..6dd1df8b2 --- /dev/null +++ b/core/racing/domain/entities/sponsor/SponsorId.test.ts @@ -0,0 +1,7 @@ +import * as mod from '@core/racing/domain/entities/sponsor/SponsorId'; + +describe('racing/domain/entities/sponsor/SponsorId.ts', () => { + it('imports', () => { + expect(mod).toBeTruthy(); + }); +}); diff --git a/core/racing/domain/entities/sponsor/SponsorName.test.ts b/core/racing/domain/entities/sponsor/SponsorName.test.ts new file mode 100644 index 000000000..65401abe1 --- /dev/null +++ b/core/racing/domain/entities/sponsor/SponsorName.test.ts @@ -0,0 +1,7 @@ +import * as mod from '@core/racing/domain/entities/sponsor/SponsorName'; + +describe('racing/domain/entities/sponsor/SponsorName.ts', () => { + it('imports', () => { + expect(mod).toBeTruthy(); + }); +}); diff --git a/core/racing/domain/entities/sponsor/Url.test.ts b/core/racing/domain/entities/sponsor/Url.test.ts new file mode 100644 index 000000000..0b668ad2e --- /dev/null +++ b/core/racing/domain/entities/sponsor/Url.test.ts @@ -0,0 +1,7 @@ +import * as mod from '@core/racing/domain/entities/sponsor/Url'; + +describe('racing/domain/entities/sponsor/Url.ts', () => { + it('imports', () => { + expect(mod).toBeTruthy(); + }); +}); diff --git a/core/racing/domain/value-objects/RecurrenceStrategyFactory.test.ts b/core/racing/domain/value-objects/RecurrenceStrategyFactory.test.ts new file mode 100644 index 000000000..b296e24cf --- /dev/null +++ b/core/racing/domain/value-objects/RecurrenceStrategyFactory.test.ts @@ -0,0 +1,7 @@ +import * as mod from '@core/racing/domain/value-objects/RecurrenceStrategyFactory'; + +describe('racing/domain/value-objects/RecurrenceStrategyFactory.ts', () => { + it('imports', () => { + expect(mod).toBeTruthy(); + }); +}); diff --git a/core/racing/domain/value-objects/WeekdaySet.test.ts b/core/racing/domain/value-objects/WeekdaySet.test.ts new file mode 100644 index 000000000..54fdca777 --- /dev/null +++ b/core/racing/domain/value-objects/WeekdaySet.test.ts @@ -0,0 +1,7 @@ +import * as mod from '@core/racing/domain/value-objects/WeekdaySet'; + +describe('racing/domain/value-objects/WeekdaySet.ts', () => { + it('imports', () => { + expect(mod).toBeTruthy(); + }); +});