add tests to core
This commit is contained in:
118
core/analytics/domain/entities/AnalyticsSnapshot.test.ts
Normal file
118
core/analytics/domain/entities/AnalyticsSnapshot.test.ts
Normal file
@@ -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<Parameters<typeof AnalyticsSnapshot.create>[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');
|
||||
});
|
||||
});
|
||||
129
core/analytics/domain/entities/EngagementEvent.test.ts
Normal file
129
core/analytics/domain/entities/EngagementEvent.test.ts
Normal file
@@ -0,0 +1,129 @@
|
||||
import { EngagementEvent, type EngagementAction, type EngagementEntityType } from '@core/analytics/domain/entities/EngagementEvent';
|
||||
|
||||
describe('EngagementEvent', () => {
|
||||
const baseProps = (): Parameters<typeof EngagementEvent.create>[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);
|
||||
}
|
||||
});
|
||||
});
|
||||
76
core/analytics/domain/entities/PageView.test.ts
Normal file
76
core/analytics/domain/entities/PageView.test.ts
Normal file
@@ -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<Parameters<typeof PageView.create>[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);
|
||||
});
|
||||
});
|
||||
62
core/identity/domain/entities/Achievement.test.ts
Normal file
62
core/identity/domain/entities/Achievement.test.ts
Normal file
@@ -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');
|
||||
});
|
||||
});
|
||||
7
core/identity/domain/entities/SponsorAccount.test.ts
Normal file
7
core/identity/domain/entities/SponsorAccount.test.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
import * as mod from '@core/identity/domain/entities/SponsorAccount';
|
||||
|
||||
describe('identity/domain/entities/SponsorAccount.ts', () => {
|
||||
it('imports', () => {
|
||||
expect(mod).toBeTruthy();
|
||||
});
|
||||
});
|
||||
7
core/identity/domain/entities/User.test.ts
Normal file
7
core/identity/domain/entities/User.test.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
import * as mod from '@core/identity/domain/entities/User';
|
||||
|
||||
describe('identity/domain/entities/User.ts', () => {
|
||||
it('imports', () => {
|
||||
expect(mod).toBeTruthy();
|
||||
});
|
||||
});
|
||||
7
core/identity/domain/entities/UserAchievement.test.ts
Normal file
7
core/identity/domain/entities/UserAchievement.test.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
import * as mod from '@core/identity/domain/entities/UserAchievement';
|
||||
|
||||
describe('identity/domain/entities/UserAchievement.ts', () => {
|
||||
it('imports', () => {
|
||||
expect(mod).toBeTruthy();
|
||||
});
|
||||
});
|
||||
7
core/identity/domain/value-objects/EmailAddress.test.ts
Normal file
7
core/identity/domain/value-objects/EmailAddress.test.ts
Normal file
@@ -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();
|
||||
});
|
||||
});
|
||||
7
core/identity/domain/value-objects/PasswordHash.test.ts
Normal file
7
core/identity/domain/value-objects/PasswordHash.test.ts
Normal file
@@ -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();
|
||||
});
|
||||
});
|
||||
7
core/identity/domain/value-objects/UserId.test.ts
Normal file
7
core/identity/domain/value-objects/UserId.test.ts
Normal file
@@ -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();
|
||||
});
|
||||
});
|
||||
7
core/identity/domain/value-objects/UserRating.test.ts
Normal file
7
core/identity/domain/value-objects/UserRating.test.ts
Normal file
@@ -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();
|
||||
});
|
||||
});
|
||||
7
core/media/domain/entities/Avatar.test.ts
Normal file
7
core/media/domain/entities/Avatar.test.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
import * as mod from '@core/media/domain/entities/Avatar';
|
||||
|
||||
describe('media/domain/entities/Avatar.ts', () => {
|
||||
it('imports', () => {
|
||||
expect(mod).toBeTruthy();
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,7 @@
|
||||
import * as mod from '@core/media/domain/entities/AvatarGenerationRequest';
|
||||
|
||||
describe('media/domain/entities/AvatarGenerationRequest.ts', () => {
|
||||
it('imports', () => {
|
||||
expect(mod).toBeTruthy();
|
||||
});
|
||||
});
|
||||
7
core/media/domain/entities/Media.test.ts
Normal file
7
core/media/domain/entities/Media.test.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
import * as mod from '@core/media/domain/entities/Media';
|
||||
|
||||
describe('media/domain/entities/Media.ts', () => {
|
||||
it('imports', () => {
|
||||
expect(mod).toBeTruthy();
|
||||
});
|
||||
});
|
||||
7
core/media/domain/value-objects/AvatarId.test.ts
Normal file
7
core/media/domain/value-objects/AvatarId.test.ts
Normal file
@@ -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();
|
||||
});
|
||||
});
|
||||
7
core/notifications/domain/entities/Notification.test.ts
Normal file
7
core/notifications/domain/entities/Notification.test.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
import * as mod from '@core/notifications/domain/entities/Notification';
|
||||
|
||||
describe('notifications/domain/entities/Notification.ts', () => {
|
||||
it('imports', () => {
|
||||
expect(mod).toBeTruthy();
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,7 @@
|
||||
import * as mod from '@core/notifications/domain/entities/NotificationPreference';
|
||||
|
||||
describe('notifications/domain/entities/NotificationPreference.ts', () => {
|
||||
it('imports', () => {
|
||||
expect(mod).toBeTruthy();
|
||||
});
|
||||
});
|
||||
7
core/payments/domain/entities/MemberPayment.test.ts
Normal file
7
core/payments/domain/entities/MemberPayment.test.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
import * as mod from '@core/payments/domain/entities/MemberPayment';
|
||||
|
||||
describe('payments/domain/entities/MemberPayment.ts', () => {
|
||||
it('imports', () => {
|
||||
expect(mod).toBeTruthy();
|
||||
});
|
||||
});
|
||||
7
core/payments/domain/entities/MembershipFee.test.ts
Normal file
7
core/payments/domain/entities/MembershipFee.test.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
import * as mod from '@core/payments/domain/entities/MembershipFee';
|
||||
|
||||
describe('payments/domain/entities/MembershipFee.ts', () => {
|
||||
it('imports', () => {
|
||||
expect(mod).toBeTruthy();
|
||||
});
|
||||
});
|
||||
7
core/payments/domain/entities/Payment.test.ts
Normal file
7
core/payments/domain/entities/Payment.test.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
import * as mod from '@core/payments/domain/entities/Payment';
|
||||
|
||||
describe('payments/domain/entities/Payment.ts', () => {
|
||||
it('imports', () => {
|
||||
expect(mod).toBeTruthy();
|
||||
});
|
||||
});
|
||||
7
core/payments/domain/entities/Prize.test.ts
Normal file
7
core/payments/domain/entities/Prize.test.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
import * as mod from '@core/payments/domain/entities/Prize';
|
||||
|
||||
describe('payments/domain/entities/Prize.ts', () => {
|
||||
it('imports', () => {
|
||||
expect(mod).toBeTruthy();
|
||||
});
|
||||
});
|
||||
7
core/payments/domain/entities/Wallet.test.ts
Normal file
7
core/payments/domain/entities/Wallet.test.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
import * as mod from '@core/payments/domain/entities/Wallet';
|
||||
|
||||
describe('payments/domain/entities/Wallet.ts', () => {
|
||||
it('imports', () => {
|
||||
expect(mod).toBeTruthy();
|
||||
});
|
||||
});
|
||||
7
core/payments/domain/entities/index.test.ts
Normal file
7
core/payments/domain/entities/index.test.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
import * as mod from '@core/payments/domain/entities/index';
|
||||
|
||||
describe('payments/domain/entities/index.ts', () => {
|
||||
it('imports', () => {
|
||||
expect(mod).toBeTruthy();
|
||||
});
|
||||
});
|
||||
7
core/racing/domain/entities/CarClass.test.ts
Normal file
7
core/racing/domain/entities/CarClass.test.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
import * as mod from '@core/racing/domain/entities/CarClass';
|
||||
|
||||
describe('racing/domain/entities/CarClass.ts', () => {
|
||||
it('imports', () => {
|
||||
expect(mod).toBeTruthy();
|
||||
});
|
||||
});
|
||||
7
core/racing/domain/entities/CarId.test.ts
Normal file
7
core/racing/domain/entities/CarId.test.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
import * as mod from '@core/racing/domain/entities/CarId';
|
||||
|
||||
describe('racing/domain/entities/CarId.ts', () => {
|
||||
it('imports', () => {
|
||||
expect(mod).toBeTruthy();
|
||||
});
|
||||
});
|
||||
7
core/racing/domain/entities/CarLicense.test.ts
Normal file
7
core/racing/domain/entities/CarLicense.test.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
import * as mod from '@core/racing/domain/entities/CarLicense';
|
||||
|
||||
describe('racing/domain/entities/CarLicense.ts', () => {
|
||||
it('imports', () => {
|
||||
expect(mod).toBeTruthy();
|
||||
});
|
||||
});
|
||||
7
core/racing/domain/entities/CarName.test.ts
Normal file
7
core/racing/domain/entities/CarName.test.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
import * as mod from '@core/racing/domain/entities/CarName';
|
||||
|
||||
describe('racing/domain/entities/CarName.ts', () => {
|
||||
it('imports', () => {
|
||||
expect(mod).toBeTruthy();
|
||||
});
|
||||
});
|
||||
7
core/racing/domain/entities/DecisionNotes.test.ts
Normal file
7
core/racing/domain/entities/DecisionNotes.test.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
import * as mod from '@core/racing/domain/entities/DecisionNotes';
|
||||
|
||||
describe('racing/domain/entities/DecisionNotes.ts', () => {
|
||||
it('imports', () => {
|
||||
expect(mod).toBeTruthy();
|
||||
});
|
||||
});
|
||||
7
core/racing/domain/entities/DefenseRequestedAt.test.ts
Normal file
7
core/racing/domain/entities/DefenseRequestedAt.test.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
import * as mod from '@core/racing/domain/entities/DefenseRequestedAt';
|
||||
|
||||
describe('racing/domain/entities/DefenseRequestedAt.ts', () => {
|
||||
it('imports', () => {
|
||||
expect(mod).toBeTruthy();
|
||||
});
|
||||
});
|
||||
7
core/racing/domain/entities/DefenseStatement.test.ts
Normal file
7
core/racing/domain/entities/DefenseStatement.test.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
import * as mod from '@core/racing/domain/entities/DefenseStatement';
|
||||
|
||||
describe('racing/domain/entities/DefenseStatement.ts', () => {
|
||||
it('imports', () => {
|
||||
expect(mod).toBeTruthy();
|
||||
});
|
||||
});
|
||||
7
core/racing/domain/entities/FiledAt.test.ts
Normal file
7
core/racing/domain/entities/FiledAt.test.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
import * as mod from '@core/racing/domain/entities/FiledAt';
|
||||
|
||||
describe('racing/domain/entities/FiledAt.ts', () => {
|
||||
it('imports', () => {
|
||||
expect(mod).toBeTruthy();
|
||||
});
|
||||
});
|
||||
7
core/racing/domain/entities/GameId.test.ts
Normal file
7
core/racing/domain/entities/GameId.test.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
import * as mod from '@core/racing/domain/entities/GameId';
|
||||
|
||||
describe('racing/domain/entities/GameId.ts', () => {
|
||||
it('imports', () => {
|
||||
expect(mod).toBeTruthy();
|
||||
});
|
||||
});
|
||||
7
core/racing/domain/entities/GameName.test.ts
Normal file
7
core/racing/domain/entities/GameName.test.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
import * as mod from '@core/racing/domain/entities/GameName';
|
||||
|
||||
describe('racing/domain/entities/GameName.ts', () => {
|
||||
it('imports', () => {
|
||||
expect(mod).toBeTruthy();
|
||||
});
|
||||
});
|
||||
7
core/racing/domain/entities/Horsepower.test.ts
Normal file
7
core/racing/domain/entities/Horsepower.test.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
import * as mod from '@core/racing/domain/entities/Horsepower';
|
||||
|
||||
describe('racing/domain/entities/Horsepower.ts', () => {
|
||||
it('imports', () => {
|
||||
expect(mod).toBeTruthy();
|
||||
});
|
||||
});
|
||||
7
core/racing/domain/entities/ImageUrl.test.ts
Normal file
7
core/racing/domain/entities/ImageUrl.test.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
import * as mod from '@core/racing/domain/entities/ImageUrl';
|
||||
|
||||
describe('racing/domain/entities/ImageUrl.ts', () => {
|
||||
it('imports', () => {
|
||||
expect(mod).toBeTruthy();
|
||||
});
|
||||
});
|
||||
7
core/racing/domain/entities/IncidentDescription.test.ts
Normal file
7
core/racing/domain/entities/IncidentDescription.test.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
import * as mod from '@core/racing/domain/entities/IncidentDescription';
|
||||
|
||||
describe('racing/domain/entities/IncidentDescription.ts', () => {
|
||||
it('imports', () => {
|
||||
expect(mod).toBeTruthy();
|
||||
});
|
||||
});
|
||||
7
core/racing/domain/entities/JoinRequest.test.ts
Normal file
7
core/racing/domain/entities/JoinRequest.test.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
import * as mod from '@core/racing/domain/entities/JoinRequest';
|
||||
|
||||
describe('racing/domain/entities/JoinRequest.ts', () => {
|
||||
it('imports', () => {
|
||||
expect(mod).toBeTruthy();
|
||||
});
|
||||
});
|
||||
7
core/racing/domain/entities/LapNumber.test.ts
Normal file
7
core/racing/domain/entities/LapNumber.test.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
import * as mod from '@core/racing/domain/entities/LapNumber';
|
||||
|
||||
describe('racing/domain/entities/LapNumber.ts', () => {
|
||||
it('imports', () => {
|
||||
expect(mod).toBeTruthy();
|
||||
});
|
||||
});
|
||||
7
core/racing/domain/entities/LeagueCreatedAt.test.ts
Normal file
7
core/racing/domain/entities/LeagueCreatedAt.test.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
import * as mod from '@core/racing/domain/entities/LeagueCreatedAt';
|
||||
|
||||
describe('racing/domain/entities/LeagueCreatedAt.ts', () => {
|
||||
it('imports', () => {
|
||||
expect(mod).toBeTruthy();
|
||||
});
|
||||
});
|
||||
7
core/racing/domain/entities/LeagueDescription.test.ts
Normal file
7
core/racing/domain/entities/LeagueDescription.test.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
import * as mod from '@core/racing/domain/entities/LeagueDescription';
|
||||
|
||||
describe('racing/domain/entities/LeagueDescription.ts', () => {
|
||||
it('imports', () => {
|
||||
expect(mod).toBeTruthy();
|
||||
});
|
||||
});
|
||||
7
core/racing/domain/entities/LeagueId.test.ts
Normal file
7
core/racing/domain/entities/LeagueId.test.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
import * as mod from '@core/racing/domain/entities/LeagueId';
|
||||
|
||||
describe('racing/domain/entities/LeagueId.ts', () => {
|
||||
it('imports', () => {
|
||||
expect(mod).toBeTruthy();
|
||||
});
|
||||
});
|
||||
7
core/racing/domain/entities/LeagueName.test.ts
Normal file
7
core/racing/domain/entities/LeagueName.test.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
import * as mod from '@core/racing/domain/entities/LeagueName';
|
||||
|
||||
describe('racing/domain/entities/LeagueName.ts', () => {
|
||||
it('imports', () => {
|
||||
expect(mod).toBeTruthy();
|
||||
});
|
||||
});
|
||||
7
core/racing/domain/entities/LeagueOwnerId.test.ts
Normal file
7
core/racing/domain/entities/LeagueOwnerId.test.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
import * as mod from '@core/racing/domain/entities/LeagueOwnerId';
|
||||
|
||||
describe('racing/domain/entities/LeagueOwnerId.ts', () => {
|
||||
it('imports', () => {
|
||||
expect(mod).toBeTruthy();
|
||||
});
|
||||
});
|
||||
7
core/racing/domain/entities/LeagueSocialLinks.test.ts
Normal file
7
core/racing/domain/entities/LeagueSocialLinks.test.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
import * as mod from '@core/racing/domain/entities/LeagueSocialLinks';
|
||||
|
||||
describe('racing/domain/entities/LeagueSocialLinks.ts', () => {
|
||||
it('imports', () => {
|
||||
expect(mod).toBeTruthy();
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,7 @@
|
||||
import * as mod from '@core/racing/domain/entities/LiveryTemplateCreatedAt';
|
||||
|
||||
describe('racing/domain/entities/LiveryTemplateCreatedAt.ts', () => {
|
||||
it('imports', () => {
|
||||
expect(mod).toBeTruthy();
|
||||
});
|
||||
});
|
||||
7
core/racing/domain/entities/LiveryTemplateId.test.ts
Normal file
7
core/racing/domain/entities/LiveryTemplateId.test.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
import * as mod from '@core/racing/domain/entities/LiveryTemplateId';
|
||||
|
||||
describe('racing/domain/entities/LiveryTemplateId.ts', () => {
|
||||
it('imports', () => {
|
||||
expect(mod).toBeTruthy();
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,7 @@
|
||||
import * as mod from '@core/racing/domain/entities/LiveryTemplateUpdatedAt';
|
||||
|
||||
describe('racing/domain/entities/LiveryTemplateUpdatedAt.ts', () => {
|
||||
it('imports', () => {
|
||||
expect(mod).toBeTruthy();
|
||||
});
|
||||
});
|
||||
7
core/racing/domain/entities/Manufacturer.test.ts
Normal file
7
core/racing/domain/entities/Manufacturer.test.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
import * as mod from '@core/racing/domain/entities/Manufacturer';
|
||||
|
||||
describe('racing/domain/entities/Manufacturer.ts', () => {
|
||||
it('imports', () => {
|
||||
expect(mod).toBeTruthy();
|
||||
});
|
||||
});
|
||||
7
core/racing/domain/entities/MembershipRole.test.ts
Normal file
7
core/racing/domain/entities/MembershipRole.test.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
import * as mod from '@core/racing/domain/entities/MembershipRole';
|
||||
|
||||
describe('racing/domain/entities/MembershipRole.ts', () => {
|
||||
it('imports', () => {
|
||||
expect(mod).toBeTruthy();
|
||||
});
|
||||
});
|
||||
7
core/racing/domain/entities/MembershipStatus.test.ts
Normal file
7
core/racing/domain/entities/MembershipStatus.test.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
import * as mod from '@core/racing/domain/entities/MembershipStatus';
|
||||
|
||||
describe('racing/domain/entities/MembershipStatus.ts', () => {
|
||||
it('imports', () => {
|
||||
expect(mod).toBeTruthy();
|
||||
});
|
||||
});
|
||||
7
core/racing/domain/entities/ProtestComment.test.ts
Normal file
7
core/racing/domain/entities/ProtestComment.test.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
import * as mod from '@core/racing/domain/entities/ProtestComment';
|
||||
|
||||
describe('racing/domain/entities/ProtestComment.ts', () => {
|
||||
it('imports', () => {
|
||||
expect(mod).toBeTruthy();
|
||||
});
|
||||
});
|
||||
7
core/racing/domain/entities/ProtestDefense.test.ts
Normal file
7
core/racing/domain/entities/ProtestDefense.test.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
import * as mod from '@core/racing/domain/entities/ProtestDefense';
|
||||
|
||||
describe('racing/domain/entities/ProtestDefense.ts', () => {
|
||||
it('imports', () => {
|
||||
expect(mod).toBeTruthy();
|
||||
});
|
||||
});
|
||||
7
core/racing/domain/entities/ProtestIncident.test.ts
Normal file
7
core/racing/domain/entities/ProtestIncident.test.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
import * as mod from '@core/racing/domain/entities/ProtestIncident';
|
||||
|
||||
describe('racing/domain/entities/ProtestIncident.ts', () => {
|
||||
it('imports', () => {
|
||||
expect(mod).toBeTruthy();
|
||||
});
|
||||
});
|
||||
7
core/racing/domain/entities/ProtestStatus.test.ts
Normal file
7
core/racing/domain/entities/ProtestStatus.test.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
import * as mod from '@core/racing/domain/entities/ProtestStatus';
|
||||
|
||||
describe('racing/domain/entities/ProtestStatus.ts', () => {
|
||||
it('imports', () => {
|
||||
expect(mod).toBeTruthy();
|
||||
});
|
||||
});
|
||||
7
core/racing/domain/entities/ResultWithIncidents.test.ts
Normal file
7
core/racing/domain/entities/ResultWithIncidents.test.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
import * as mod from '@core/racing/domain/entities/ResultWithIncidents';
|
||||
|
||||
describe('racing/domain/entities/ResultWithIncidents.ts', () => {
|
||||
it('imports', () => {
|
||||
expect(mod).toBeTruthy();
|
||||
});
|
||||
});
|
||||
7
core/racing/domain/entities/ReviewedAt.test.ts
Normal file
7
core/racing/domain/entities/ReviewedAt.test.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
import * as mod from '@core/racing/domain/entities/ReviewedAt';
|
||||
|
||||
describe('racing/domain/entities/ReviewedAt.ts', () => {
|
||||
it('imports', () => {
|
||||
expect(mod).toBeTruthy();
|
||||
});
|
||||
});
|
||||
7
core/racing/domain/entities/ScoringPresetId.test.ts
Normal file
7
core/racing/domain/entities/ScoringPresetId.test.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
import * as mod from '@core/racing/domain/entities/ScoringPresetId';
|
||||
|
||||
describe('racing/domain/entities/ScoringPresetId.ts', () => {
|
||||
it('imports', () => {
|
||||
expect(mod).toBeTruthy();
|
||||
});
|
||||
});
|
||||
7
core/racing/domain/entities/SubmittedAt.test.ts
Normal file
7
core/racing/domain/entities/SubmittedAt.test.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
import * as mod from '@core/racing/domain/entities/SubmittedAt';
|
||||
|
||||
describe('racing/domain/entities/SubmittedAt.ts', () => {
|
||||
it('imports', () => {
|
||||
expect(mod).toBeTruthy();
|
||||
});
|
||||
});
|
||||
7
core/racing/domain/entities/TimeInRace.test.ts
Normal file
7
core/racing/domain/entities/TimeInRace.test.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
import * as mod from '@core/racing/domain/entities/TimeInRace';
|
||||
|
||||
describe('racing/domain/entities/TimeInRace.ts', () => {
|
||||
it('imports', () => {
|
||||
expect(mod).toBeTruthy();
|
||||
});
|
||||
});
|
||||
7
core/racing/domain/entities/VideoUrl.test.ts
Normal file
7
core/racing/domain/entities/VideoUrl.test.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
import * as mod from '@core/racing/domain/entities/VideoUrl';
|
||||
|
||||
describe('racing/domain/entities/VideoUrl.ts', () => {
|
||||
it('imports', () => {
|
||||
expect(mod).toBeTruthy();
|
||||
});
|
||||
});
|
||||
7
core/racing/domain/entities/Weight.test.ts
Normal file
7
core/racing/domain/entities/Weight.test.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
import * as mod from '@core/racing/domain/entities/Weight';
|
||||
|
||||
describe('racing/domain/entities/Weight.ts', () => {
|
||||
it('imports', () => {
|
||||
expect(mod).toBeTruthy();
|
||||
});
|
||||
});
|
||||
7
core/racing/domain/entities/Year.test.ts
Normal file
7
core/racing/domain/entities/Year.test.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
import * as mod from '@core/racing/domain/entities/Year';
|
||||
|
||||
describe('racing/domain/entities/Year.ts', () => {
|
||||
it('imports', () => {
|
||||
expect(mod).toBeTruthy();
|
||||
});
|
||||
});
|
||||
7
core/racing/domain/entities/season/SeasonId.test.ts
Normal file
7
core/racing/domain/entities/season/SeasonId.test.ts
Normal file
@@ -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();
|
||||
});
|
||||
});
|
||||
7
core/racing/domain/entities/season/index.test.ts
Normal file
7
core/racing/domain/entities/season/index.test.ts
Normal file
@@ -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();
|
||||
});
|
||||
});
|
||||
7
core/racing/domain/entities/sponsor/Sponsor.test.ts
Normal file
7
core/racing/domain/entities/sponsor/Sponsor.test.ts
Normal file
@@ -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();
|
||||
});
|
||||
});
|
||||
@@ -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();
|
||||
});
|
||||
});
|
||||
7
core/racing/domain/entities/sponsor/SponsorEmail.test.ts
Normal file
7
core/racing/domain/entities/sponsor/SponsorEmail.test.ts
Normal file
@@ -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();
|
||||
});
|
||||
});
|
||||
7
core/racing/domain/entities/sponsor/SponsorId.test.ts
Normal file
7
core/racing/domain/entities/sponsor/SponsorId.test.ts
Normal file
@@ -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();
|
||||
});
|
||||
});
|
||||
7
core/racing/domain/entities/sponsor/SponsorName.test.ts
Normal file
7
core/racing/domain/entities/sponsor/SponsorName.test.ts
Normal file
@@ -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();
|
||||
});
|
||||
});
|
||||
7
core/racing/domain/entities/sponsor/Url.test.ts
Normal file
7
core/racing/domain/entities/sponsor/Url.test.ts
Normal file
@@ -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();
|
||||
});
|
||||
});
|
||||
@@ -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();
|
||||
});
|
||||
});
|
||||
7
core/racing/domain/value-objects/WeekdaySet.test.ts
Normal file
7
core/racing/domain/value-objects/WeekdaySet.test.ts
Normal file
@@ -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();
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user