website refactor
This commit is contained in:
@@ -1,17 +1,17 @@
|
|||||||
import { Achievement, AchievementCategory, AchievementRequirement, AchievementProps } from '@core/identity/domain/entities/Achievement';
|
import { Achievement, AchievementCategory, AchievementProps, AchievementRequirement } from '@core/identity/domain/entities/Achievement';
|
||||||
import { UserAchievement } from '@core/identity/domain/entities/UserAchievement';
|
import { UserAchievement } from '@core/identity/domain/entities/UserAchievement';
|
||||||
|
|
||||||
import { AchievementOrmEntity } from '../entities/AchievementOrmEntity';
|
import { AchievementOrmEntity } from '../entities/AchievementOrmEntity';
|
||||||
import { UserAchievementOrmEntity } from '../entities/UserAchievementOrmEntity';
|
import { UserAchievementOrmEntity } from '../entities/UserAchievementOrmEntity';
|
||||||
import { TypeOrmPersistenceSchemaAdapter } from '../errors/TypeOrmPersistenceSchemaAdapterError';
|
import { TypeOrmPersistenceSchemaAdapter } from '../errors/TypeOrmPersistenceSchemaAdapterError';
|
||||||
import {
|
import {
|
||||||
assertArray,
|
assertArray,
|
||||||
assertBoolean,
|
assertBoolean,
|
||||||
assertDate,
|
assertDate,
|
||||||
assertEnumValue,
|
assertEnumValue,
|
||||||
assertInteger,
|
assertInteger,
|
||||||
assertNonEmptyString,
|
assertNonEmptyString,
|
||||||
assertOptionalStringOrNull,
|
assertOptionalStringOrNull,
|
||||||
} from '../schema/AchievementSchemaGuard';
|
} from '../schema/AchievementSchemaGuard';
|
||||||
|
|
||||||
const VALID_CATEGORIES = ['driver', 'steward', 'admin', 'community'] as const satisfies readonly AchievementCategory[];
|
const VALID_CATEGORIES = ['driver', 'steward', 'admin', 'community'] as const satisfies readonly AchievementCategory[];
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
import type { DataSource } from 'typeorm';
|
import type { DataSource } from 'typeorm';
|
||||||
|
|
||||||
import type { AchievementRepository } from '@core/identity/domain/repositories/AchievementRepository';
|
|
||||||
import type { AchievementCategory } from '@core/identity/domain/entities/Achievement';
|
import type { AchievementCategory } from '@core/identity/domain/entities/Achievement';
|
||||||
import { Achievement } from '@core/identity/domain/entities/Achievement';
|
import { Achievement } from '@core/identity/domain/entities/Achievement';
|
||||||
import { UserAchievement } from '@core/identity/domain/entities/UserAchievement';
|
import { UserAchievement } from '@core/identity/domain/entities/UserAchievement';
|
||||||
|
import type { AchievementRepository } from '@core/identity/domain/repositories/AchievementRepository';
|
||||||
|
|
||||||
import { AchievementOrmEntity } from '../entities/AchievementOrmEntity';
|
import { AchievementOrmEntity } from '../entities/AchievementOrmEntity';
|
||||||
import { UserAchievementOrmEntity } from '../entities/UserAchievementOrmEntity';
|
import { UserAchievementOrmEntity } from '../entities/UserAchievementOrmEntity';
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
* In-memory implementation of IAnalyticsSnapshotRepository for development/testing.
|
* In-memory implementation of IAnalyticsSnapshotRepository for development/testing.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { AnalyticsSnapshot, IAnalyticsSnapshotRepository, SnapshotEntityType, SnapshotPeriod } from '@core/analytics/application/repositories/PageViewRepository';
|
import { AnalyticsSnapshot, SnapshotPeriod } from '@core/analytics/application/repositories/PageViewRepository';
|
||||||
import { Logger } from '@core/shared/domain/Logger';
|
import { Logger } from '@core/shared/domain/Logger';
|
||||||
|
|
||||||
export class InMemoryAnalyticsSnapshotRepository implements AnalyticsSnapshotRepository {
|
export class InMemoryAnalyticsSnapshotRepository implements AnalyticsSnapshotRepository {
|
||||||
|
|||||||
@@ -4,8 +4,8 @@
|
|||||||
* In-memory implementation of IEngagementRepository for development/testing.
|
* In-memory implementation of IEngagementRepository for development/testing.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import type { EngagementRepository } from '@core/analytics/domain/repositories/EngagementRepository';
|
|
||||||
import { EngagementEvent, type EngagementAction, type EngagementEntityType } from '@core/analytics/domain/entities/EngagementEvent';
|
import { EngagementEvent, type EngagementAction, type EngagementEntityType } from '@core/analytics/domain/entities/EngagementEvent';
|
||||||
|
import type { EngagementRepository } from '@core/analytics/domain/repositories/EngagementRepository';
|
||||||
import { Logger } from '@core/shared/domain/Logger';
|
import { Logger } from '@core/shared/domain/Logger';
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import { AnalyticsSnapshot } from '@core/analytics/domain/entities/AnalyticsSnapshot';
|
import { AnalyticsSnapshot } from '@core/analytics/domain/entities/AnalyticsSnapshot';
|
||||||
import type { AnalyticsMetrics, SnapshotEntityType, SnapshotPeriod } from '@core/analytics/domain/types/AnalyticsSnapshot';
|
import type { AnalyticsMetrics, SnapshotEntityType, SnapshotPeriod } from '@core/analytics/domain/types/AnalyticsSnapshot';
|
||||||
|
|
||||||
import { TypeOrmAnalyticsSchemaError } from '../errors/TypeOrmAnalyticsSchemaError';
|
|
||||||
import { AnalyticsSnapshotOrmEntity } from '../entities/AnalyticsSnapshotOrmEntity';
|
import { AnalyticsSnapshotOrmEntity } from '../entities/AnalyticsSnapshotOrmEntity';
|
||||||
|
import { TypeOrmAnalyticsSchemaError } from '../errors/TypeOrmAnalyticsSchemaError';
|
||||||
import { assertDate, assertEnumValue, assertNonEmptyString, assertNumber, assertRecord } from '../schema/TypeOrmAnalyticsSchemaGuards';
|
import { assertDate, assertEnumValue, assertNonEmptyString, assertNumber, assertRecord } from '../schema/TypeOrmAnalyticsSchemaGuards';
|
||||||
|
|
||||||
const VALID_ENTITY_TYPES: readonly SnapshotEntityType[] = ['league', 'driver', 'team', 'race', 'sponsor'] as const;
|
const VALID_ENTITY_TYPES: readonly SnapshotEntityType[] = ['league', 'driver', 'team', 'race', 'sponsor'] as const;
|
||||||
|
|||||||
@@ -1,14 +1,14 @@
|
|||||||
import { EngagementEvent } from '@core/analytics/domain/entities/EngagementEvent';
|
import { EngagementEvent } from '@core/analytics/domain/entities/EngagementEvent';
|
||||||
import type { EngagementAction, EngagementEntityType } from '@core/analytics/domain/types/EngagementEvent';
|
import type { EngagementAction, EngagementEntityType } from '@core/analytics/domain/types/EngagementEvent';
|
||||||
|
|
||||||
import { TypeOrmAnalyticsSchemaError } from '../errors/TypeOrmAnalyticsSchemaError';
|
|
||||||
import { EngagementEventOrmEntity } from '../entities/EngagementEventOrmEntity';
|
import { EngagementEventOrmEntity } from '../entities/EngagementEventOrmEntity';
|
||||||
|
import { TypeOrmAnalyticsSchemaError } from '../errors/TypeOrmAnalyticsSchemaError';
|
||||||
import {
|
import {
|
||||||
assertDate,
|
assertDate,
|
||||||
assertEnumValue,
|
assertEnumValue,
|
||||||
assertNonEmptyString,
|
assertNonEmptyString,
|
||||||
assertOptionalStringOrNull,
|
assertOptionalStringOrNull,
|
||||||
assertRecord,
|
assertRecord,
|
||||||
} from '../schema/TypeOrmAnalyticsSchemaGuards';
|
} from '../schema/TypeOrmAnalyticsSchemaGuards';
|
||||||
|
|
||||||
const VALID_ACTIONS: readonly EngagementAction[] = [
|
const VALID_ACTIONS: readonly EngagementAction[] = [
|
||||||
|
|||||||
@@ -2,8 +2,8 @@ import { describe, expect, it } from 'vitest';
|
|||||||
|
|
||||||
import { PageView } from '@core/analytics/domain/entities/PageView';
|
import { PageView } from '@core/analytics/domain/entities/PageView';
|
||||||
|
|
||||||
import { TypeOrmAnalyticsSchemaError } from '../errors/TypeOrmAnalyticsSchemaError';
|
|
||||||
import { PageViewOrmEntity } from '../entities/PageViewOrmEntity';
|
import { PageViewOrmEntity } from '../entities/PageViewOrmEntity';
|
||||||
|
import { TypeOrmAnalyticsSchemaError } from '../errors/TypeOrmAnalyticsSchemaError';
|
||||||
import { PageViewOrmMapper } from './PageViewOrmMapper';
|
import { PageViewOrmMapper } from './PageViewOrmMapper';
|
||||||
|
|
||||||
describe('PageViewOrmMapper', () => {
|
describe('PageViewOrmMapper', () => {
|
||||||
|
|||||||
@@ -1,14 +1,14 @@
|
|||||||
import { PageView } from '@core/analytics/domain/entities/PageView';
|
import { PageView } from '@core/analytics/domain/entities/PageView';
|
||||||
import type { EntityType, VisitorType } from '@core/analytics/domain/types/PageView';
|
import type { EntityType, VisitorType } from '@core/analytics/domain/types/PageView';
|
||||||
|
|
||||||
import { TypeOrmAnalyticsSchemaError } from '../errors/TypeOrmAnalyticsSchemaError';
|
|
||||||
import { PageViewOrmEntity } from '../entities/PageViewOrmEntity';
|
import { PageViewOrmEntity } from '../entities/PageViewOrmEntity';
|
||||||
|
import { TypeOrmAnalyticsSchemaError } from '../errors/TypeOrmAnalyticsSchemaError';
|
||||||
import {
|
import {
|
||||||
assertDate,
|
assertDate,
|
||||||
assertEnumValue,
|
assertEnumValue,
|
||||||
assertNonEmptyString,
|
assertNonEmptyString,
|
||||||
assertOptionalIntegerOrNull,
|
assertOptionalIntegerOrNull,
|
||||||
assertOptionalStringOrNull,
|
assertOptionalStringOrNull,
|
||||||
} from '../schema/TypeOrmAnalyticsSchemaGuards';
|
} from '../schema/TypeOrmAnalyticsSchemaGuards';
|
||||||
|
|
||||||
const VALID_ENTITY_TYPES: readonly EntityType[] = ['league', 'driver', 'team', 'race', 'sponsor'] as const;
|
const VALID_ENTITY_TYPES: readonly EntityType[] = ['league', 'driver', 'team', 'race', 'sponsor'] as const;
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import { type Repository } from 'typeorm';
|
import { type Repository } from 'typeorm';
|
||||||
|
|
||||||
|
import { AnalyticsSnapshot } from '@core/analytics/domain/entities/AnalyticsSnapshot';
|
||||||
import type { AnalyticsSnapshotRepository } from '@core/analytics/domain/repositories/AnalyticsSnapshotRepository';
|
import type { AnalyticsSnapshotRepository } from '@core/analytics/domain/repositories/AnalyticsSnapshotRepository';
|
||||||
import type { SnapshotEntityType, SnapshotPeriod } from '@core/analytics/domain/types/AnalyticsSnapshot';
|
import type { SnapshotEntityType, SnapshotPeriod } from '@core/analytics/domain/types/AnalyticsSnapshot';
|
||||||
import { AnalyticsSnapshot } from '@core/analytics/domain/entities/AnalyticsSnapshot';
|
|
||||||
|
|
||||||
import { AnalyticsSnapshotOrmEntity } from '../entities/AnalyticsSnapshotOrmEntity';
|
import { AnalyticsSnapshotOrmEntity } from '../entities/AnalyticsSnapshotOrmEntity';
|
||||||
import { AnalyticsSnapshotOrmMapper } from '../mappers/AnalyticsSnapshotOrmMapper';
|
import { AnalyticsSnapshotOrmMapper } from '../mappers/AnalyticsSnapshotOrmMapper';
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import { Between, MoreThanOrEqual, type FindOptionsWhere, type Repository } from 'typeorm';
|
import { Between, MoreThanOrEqual, type FindOptionsWhere, type Repository } from 'typeorm';
|
||||||
|
|
||||||
|
import { EngagementEvent } from '@core/analytics/domain/entities/EngagementEvent';
|
||||||
import type { EngagementRepository } from '@core/analytics/domain/repositories/EngagementRepository';
|
import type { EngagementRepository } from '@core/analytics/domain/repositories/EngagementRepository';
|
||||||
import type { EngagementAction, EngagementEntityType } from '@core/analytics/domain/types/EngagementEvent';
|
import type { EngagementAction, EngagementEntityType } from '@core/analytics/domain/types/EngagementEvent';
|
||||||
import { EngagementEvent } from '@core/analytics/domain/entities/EngagementEvent';
|
|
||||||
|
|
||||||
import { EngagementEventOrmEntity } from '../entities/EngagementEventOrmEntity';
|
import { EngagementEventOrmEntity } from '../entities/EngagementEventOrmEntity';
|
||||||
import { EngagementEventOrmMapper } from '../mappers/EngagementEventOrmMapper';
|
import { EngagementEventOrmMapper } from '../mappers/EngagementEventOrmMapper';
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { describe, expect, it, vi } from 'vitest';
|
|
||||||
import type { Repository } from 'typeorm';
|
import type { Repository } from 'typeorm';
|
||||||
|
import { describe, expect, it, vi } from 'vitest';
|
||||||
|
|
||||||
import { PageView } from '@core/analytics/domain/entities/PageView';
|
import { PageView } from '@core/analytics/domain/entities/PageView';
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import { Between, MoreThanOrEqual, type Repository } from 'typeorm';
|
import { Between, MoreThanOrEqual, type Repository } from 'typeorm';
|
||||||
|
|
||||||
import type { PageViewRepository } from '@core/analytics/application/repositories/PageViewRepository';
|
import type { PageViewRepository } from '@core/analytics/application/repositories/PageViewRepository';
|
||||||
import type { EntityType } from '@core/analytics/domain/types/PageView';
|
|
||||||
import { PageView } from '@core/analytics/domain/entities/PageView';
|
import { PageView } from '@core/analytics/domain/entities/PageView';
|
||||||
|
import type { EntityType } from '@core/analytics/domain/types/PageView';
|
||||||
|
|
||||||
import { PageViewOrmEntity } from '../entities/PageViewOrmEntity';
|
import { PageViewOrmEntity } from '../entities/PageViewOrmEntity';
|
||||||
import { PageViewOrmMapper } from '../mappers/PageViewOrmMapper';
|
import { PageViewOrmMapper } from '../mappers/PageViewOrmMapper';
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
import { PointsTable } from '@core/racing/domain/value-objects/PointsTable';
|
|
||||||
import type { ChampionshipConfig } from '@core/racing/domain/types/ChampionshipConfig';
|
|
||||||
import type { SessionType } from '@core/racing/domain/types/SessionType';
|
|
||||||
import type { BonusRule } from '@core/racing/domain/types/BonusRule';
|
|
||||||
import type { DropScorePolicy } from '@core/racing/domain/types/DropScorePolicy';
|
|
||||||
import type { ChampionshipType } from '@core/racing/domain/types/ChampionshipType';
|
|
||||||
import { LeagueScoringConfig } from '@core/racing/domain/entities/LeagueScoringConfig';
|
import { LeagueScoringConfig } from '@core/racing/domain/entities/LeagueScoringConfig';
|
||||||
|
import type { BonusRule } from '@core/racing/domain/types/BonusRule';
|
||||||
|
import type { ChampionshipConfig } from '@core/racing/domain/types/ChampionshipConfig';
|
||||||
|
import type { ChampionshipType } from '@core/racing/domain/types/ChampionshipType';
|
||||||
|
import type { DropScorePolicy } from '@core/racing/domain/types/DropScorePolicy';
|
||||||
|
import type { SessionType } from '@core/racing/domain/types/SessionType';
|
||||||
|
import { PointsTable } from '@core/racing/domain/value-objects/PointsTable';
|
||||||
|
|
||||||
export type LeagueScoringPresetPrimaryChampionshipType =
|
export type LeagueScoringPresetPrimaryChampionshipType =
|
||||||
| 'driver'
|
| 'driver'
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
* UI display configuration for race status states
|
* UI display configuration for race status states
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { Clock, PlayCircle, CheckCircle2, XCircle, type LucideIcon } from 'lucide-react';
|
import { CheckCircle2, Clock, PlayCircle, XCircle, type LucideIcon } from 'lucide-react';
|
||||||
|
|
||||||
export interface RaceStatusConfigData {
|
export interface RaceStatusConfigData {
|
||||||
icon: LucideIcon;
|
icon: LucideIcon;
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
|
import { MediaReference } from '@core/domain/media/MediaReference';
|
||||||
import { describe, expect, it } from 'vitest';
|
import { describe, expect, it } from 'vitest';
|
||||||
import { RacingDriverFactory } from './RacingDriverFactory';
|
import { RacingDriverFactory } from './RacingDriverFactory';
|
||||||
import { MediaReference } from '@core/domain/media/MediaReference';
|
|
||||||
|
|
||||||
describe('RacingDriverFactory', () => {
|
describe('RacingDriverFactory', () => {
|
||||||
describe('getDriverAvatarRef', () => {
|
describe('getDriverAvatarRef', () => {
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { Driver } from '@core/racing/domain/entities/Driver';
|
|
||||||
import { MediaReference } from '@core/domain/media/MediaReference';
|
import { MediaReference } from '@core/domain/media/MediaReference';
|
||||||
|
import { Driver } from '@core/racing/domain/entities/Driver';
|
||||||
import { faker } from '@faker-js/faker';
|
import { faker } from '@faker-js/faker';
|
||||||
import { seedId } from './SeedIdHelper';
|
import { seedId } from './SeedIdHelper';
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { League, LeagueSettings } from '@core/racing/domain/entities/League';
|
|
||||||
import { Driver } from '@core/racing/domain/entities/Driver';
|
|
||||||
import { MediaReference } from '@core/domain/media/MediaReference';
|
import { MediaReference } from '@core/domain/media/MediaReference';
|
||||||
|
import { Driver } from '@core/racing/domain/entities/Driver';
|
||||||
|
import { League, LeagueSettings } from '@core/racing/domain/entities/League';
|
||||||
import { faker } from '@faker-js/faker';
|
import { faker } from '@faker-js/faker';
|
||||||
import { seedId } from './SeedIdHelper';
|
import { seedId } from './SeedIdHelper';
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
import { faker } from '@faker-js/faker';
|
|
||||||
import type { League } from '@core/racing/domain/entities/League';
|
import type { League } from '@core/racing/domain/entities/League';
|
||||||
import { LeagueWallet } from '@core/racing/domain/entities/league-wallet/LeagueWallet';
|
import { LeagueWallet } from '@core/racing/domain/entities/league-wallet/LeagueWallet';
|
||||||
import { LeagueWalletId } from '@core/racing/domain/entities/league-wallet/LeagueWalletId';
|
import { LeagueWalletId } from '@core/racing/domain/entities/league-wallet/LeagueWalletId';
|
||||||
import { Transaction } from '@core/racing/domain/entities/league-wallet/Transaction';
|
import { Transaction } from '@core/racing/domain/entities/league-wallet/Transaction';
|
||||||
import { TransactionId } from '@core/racing/domain/entities/league-wallet/TransactionId';
|
import { TransactionId } from '@core/racing/domain/entities/league-wallet/TransactionId';
|
||||||
import { Money } from '@core/racing/domain/value-objects/Money';
|
import { Money } from '@core/racing/domain/value-objects/Money';
|
||||||
|
import { faker } from '@faker-js/faker';
|
||||||
import { seedId } from './SeedIdHelper';
|
import { seedId } from './SeedIdHelper';
|
||||||
|
|
||||||
type LeagueWalletSeed = {
|
type LeagueWalletSeed = {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { Driver } from '@core/racing/domain/entities/Driver';
|
import { Driver } from '@core/racing/domain/entities/Driver';
|
||||||
import { League } from '@core/racing/domain/entities/League';
|
|
||||||
import { JoinRequest } from '@core/racing/domain/entities/JoinRequest';
|
import { JoinRequest } from '@core/racing/domain/entities/JoinRequest';
|
||||||
|
import { League } from '@core/racing/domain/entities/League';
|
||||||
import { LeagueMembership } from '@core/racing/domain/entities/LeagueMembership';
|
import { LeagueMembership } from '@core/racing/domain/entities/LeagueMembership';
|
||||||
import { Race } from '@core/racing/domain/entities/Race';
|
import { Race } from '@core/racing/domain/entities/Race';
|
||||||
import { RaceRegistration } from '@core/racing/domain/entities/RaceRegistration';
|
import { RaceRegistration } from '@core/racing/domain/entities/RaceRegistration';
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
import { faker } from '@faker-js/faker';
|
|
||||||
import type { League } from '@core/racing/domain/entities/League';
|
import type { League } from '@core/racing/domain/entities/League';
|
||||||
import { SponsorshipRequest } from '@core/racing/domain/entities/SponsorshipRequest';
|
import { SponsorshipRequest } from '@core/racing/domain/entities/SponsorshipRequest';
|
||||||
import { Season } from '@core/racing/domain/entities/season/Season';
|
import { Season } from '@core/racing/domain/entities/season/Season';
|
||||||
import { SeasonSponsorship } from '@core/racing/domain/entities/season/SeasonSponsorship';
|
import { SeasonSponsorship } from '@core/racing/domain/entities/season/SeasonSponsorship';
|
||||||
import type { Sponsor } from '@core/racing/domain/entities/sponsor/Sponsor';
|
import type { Sponsor } from '@core/racing/domain/entities/sponsor/Sponsor';
|
||||||
import type { SeasonStatusValue } from '@core/racing/domain/value-objects/SeasonStatus';
|
|
||||||
import { Money } from '@core/racing/domain/value-objects/Money';
|
import { Money } from '@core/racing/domain/value-objects/Money';
|
||||||
|
import type { SeasonStatusValue } from '@core/racing/domain/value-objects/SeasonStatus';
|
||||||
|
import { faker } from '@faker-js/faker';
|
||||||
import { seedId } from './SeedIdHelper';
|
import { seedId } from './SeedIdHelper';
|
||||||
|
|
||||||
export class RacingSeasonSponsorshipFactory {
|
export class RacingSeasonSponsorshipFactory {
|
||||||
|
|||||||
@@ -1,33 +1,33 @@
|
|||||||
import { Driver } from '@core/racing/domain/entities/Driver';
|
import { Driver } from '@core/racing/domain/entities/Driver';
|
||||||
|
import { JoinRequest } from '@core/racing/domain/entities/JoinRequest';
|
||||||
import { League } from '@core/racing/domain/entities/League';
|
import { League } from '@core/racing/domain/entities/League';
|
||||||
import { LeagueMembership } from '@core/racing/domain/entities/LeagueMembership';
|
import { LeagueMembership } from '@core/racing/domain/entities/LeagueMembership';
|
||||||
import { Race } from '@core/racing/domain/entities/Race';
|
import { Race } from '@core/racing/domain/entities/Race';
|
||||||
import { RaceRegistration } from '@core/racing/domain/entities/RaceRegistration';
|
import { RaceRegistration } from '@core/racing/domain/entities/RaceRegistration';
|
||||||
import { Result as RaceResult } from '@core/racing/domain/entities/result/Result';
|
import { Result as RaceResult } from '@core/racing/domain/entities/result/Result';
|
||||||
|
import { Season } from '@core/racing/domain/entities/season/Season';
|
||||||
|
import { SeasonSponsorship } from '@core/racing/domain/entities/season/SeasonSponsorship';
|
||||||
|
import { Sponsor } from '@core/racing/domain/entities/sponsor/Sponsor';
|
||||||
|
import { SponsorshipRequest } from '@core/racing/domain/entities/SponsorshipRequest';
|
||||||
import { Standing } from '@core/racing/domain/entities/Standing';
|
import { Standing } from '@core/racing/domain/entities/Standing';
|
||||||
import { Team } from '@core/racing/domain/entities/Team';
|
import { Team } from '@core/racing/domain/entities/Team';
|
||||||
import { Track } from '@core/racing/domain/entities/Track';
|
import { Track } from '@core/racing/domain/entities/Track';
|
||||||
import { JoinRequest } from '@core/racing/domain/entities/JoinRequest';
|
|
||||||
import { SponsorshipRequest } from '@core/racing/domain/entities/SponsorshipRequest';
|
|
||||||
import { Sponsor } from '@core/racing/domain/entities/sponsor/Sponsor';
|
|
||||||
import { Season } from '@core/racing/domain/entities/season/Season';
|
|
||||||
import { SeasonSponsorship } from '@core/racing/domain/entities/season/SeasonSponsorship';
|
|
||||||
import type { TeamJoinRequest, TeamMembership } from '@core/racing/domain/types/TeamMembership';
|
import type { TeamJoinRequest, TeamMembership } from '@core/racing/domain/types/TeamMembership';
|
||||||
import type { FeedItem } from '@core/social/domain/types/FeedItem';
|
import type { FeedItem } from '@core/social/domain/types/FeedItem';
|
||||||
import { RacingDriverFactory, type DriverStats } from './RacingDriverFactory';
|
import { RacingDriverFactory, type DriverStats } from './RacingDriverFactory';
|
||||||
import { RacingFeedFactory } from './RacingFeedFactory';
|
import { RacingFeedFactory } from './RacingFeedFactory';
|
||||||
import { RacingFriendshipFactory } from './RacingFriendshipFactory';
|
import { RacingFriendshipFactory } from './RacingFriendshipFactory';
|
||||||
import { RacingLeagueFactory } from './RacingLeagueFactory';
|
import { RacingLeagueFactory } from './RacingLeagueFactory';
|
||||||
|
import { RacingLeagueWalletFactory } from './RacingLeagueWalletFactory';
|
||||||
import { RacingMembershipFactory } from './RacingMembershipFactory';
|
import { RacingMembershipFactory } from './RacingMembershipFactory';
|
||||||
import { RacingRaceFactory } from './RacingRaceFactory';
|
import { RacingRaceFactory } from './RacingRaceFactory';
|
||||||
import { RacingResultFactory } from './RacingResultFactory';
|
import { RacingResultFactory } from './RacingResultFactory';
|
||||||
|
import { RacingSeasonSponsorshipFactory } from './RacingSeasonSponsorshipFactory';
|
||||||
|
import { RacingSponsorFactory } from './RacingSponsorFactory';
|
||||||
import { RacingStandingFactory } from './RacingStandingFactory';
|
import { RacingStandingFactory } from './RacingStandingFactory';
|
||||||
|
import { RacingStewardingFactory } from './RacingStewardingFactory';
|
||||||
import { RacingTeamFactory, type TeamStats } from './RacingTeamFactory';
|
import { RacingTeamFactory, type TeamStats } from './RacingTeamFactory';
|
||||||
import { RacingTrackFactory } from './RacingTrackFactory';
|
import { RacingTrackFactory } from './RacingTrackFactory';
|
||||||
import { RacingSponsorFactory } from './RacingSponsorFactory';
|
|
||||||
import { RacingSeasonSponsorshipFactory } from './RacingSeasonSponsorshipFactory';
|
|
||||||
import { RacingLeagueWalletFactory } from './RacingLeagueWalletFactory';
|
|
||||||
import { RacingStewardingFactory } from './RacingStewardingFactory';
|
|
||||||
|
|
||||||
export type Friendship = {
|
export type Friendship = {
|
||||||
driverId: string;
|
driverId: string;
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
import { faker } from '@faker-js/faker';
|
|
||||||
import type { Driver } from '@core/racing/domain/entities/Driver';
|
import type { Driver } from '@core/racing/domain/entities/Driver';
|
||||||
import type { LeagueMembership } from '@core/racing/domain/entities/LeagueMembership';
|
import type { LeagueMembership } from '@core/racing/domain/entities/LeagueMembership';
|
||||||
import { Protest } from '@core/racing/domain/entities/Protest';
|
import { Protest } from '@core/racing/domain/entities/Protest';
|
||||||
import type { Race } from '@core/racing/domain/entities/Race';
|
import type { Race } from '@core/racing/domain/entities/Race';
|
||||||
import { Penalty } from '@core/racing/domain/entities/penalty/Penalty';
|
import { Penalty } from '@core/racing/domain/entities/penalty/Penalty';
|
||||||
|
import { faker } from '@faker-js/faker';
|
||||||
import { seedId } from './SeedIdHelper';
|
import { seedId } from './SeedIdHelper';
|
||||||
|
|
||||||
type StewardingSeed = {
|
type StewardingSeed = {
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import { describe, expect, it } from 'vitest';
|
|
||||||
import { RacingTeamFactory } from './RacingTeamFactory';
|
|
||||||
import { MediaReference } from '@core/domain/media/MediaReference';
|
import { MediaReference } from '@core/domain/media/MediaReference';
|
||||||
|
import { describe, expect, it } from 'vitest';
|
||||||
import { RacingDriverFactory } from './RacingDriverFactory';
|
import { RacingDriverFactory } from './RacingDriverFactory';
|
||||||
import { RacingLeagueFactory } from './RacingLeagueFactory';
|
import { RacingLeagueFactory } from './RacingLeagueFactory';
|
||||||
|
import { RacingTeamFactory } from './RacingTeamFactory';
|
||||||
|
|
||||||
describe('RacingTeamFactory', () => {
|
describe('RacingTeamFactory', () => {
|
||||||
describe('createTeams', () => {
|
describe('createTeams', () => {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
|
import { MediaReference } from '@core/domain/media/MediaReference';
|
||||||
import { Driver } from '@core/racing/domain/entities/Driver';
|
import { Driver } from '@core/racing/domain/entities/Driver';
|
||||||
import { League } from '@core/racing/domain/entities/League';
|
import { League } from '@core/racing/domain/entities/League';
|
||||||
import { Team } from '@core/racing/domain/entities/Team';
|
import { Team } from '@core/racing/domain/entities/Team';
|
||||||
import { MediaReference } from '@core/domain/media/MediaReference';
|
|
||||||
import type { TeamJoinRequest, TeamMembership } from '@core/racing/domain/types/TeamMembership';
|
import type { TeamJoinRequest, TeamMembership } from '@core/racing/domain/types/TeamMembership';
|
||||||
import { faker } from '@faker-js/faker';
|
import { faker } from '@faker-js/faker';
|
||||||
import { seedId } from './SeedIdHelper';
|
import { seedId } from './SeedIdHelper';
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { describe, expect, it } from 'vitest';
|
import { describe, expect, it } from 'vitest';
|
||||||
import { stableUuidFromSeedKey, seedId, seedUuid } from './SeedIdHelper';
|
import { seedId, seedUuid, stableUuidFromSeedKey } from './SeedIdHelper';
|
||||||
|
|
||||||
describe('SeedIdHelper', () => {
|
describe('SeedIdHelper', () => {
|
||||||
describe('stableUuidFromSeedKey', () => {
|
describe('stableUuidFromSeedKey', () => {
|
||||||
|
|||||||
@@ -4,11 +4,11 @@
|
|||||||
* In-memory implementation of IAchievementRepository
|
* In-memory implementation of IAchievementRepository
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { Achievement } from "@core/identity/domain/entities/Achievement";
|
|
||||||
import { AchievementCategory } from "@core/identity/domain/types/AchievementTypes";
|
|
||||||
import { AchievementRepository } from "@core/identity/domain/repositories/AchievementRepository";
|
|
||||||
import { UserAchievement } from "@core/identity/domain/entities/UserAchievement";
|
|
||||||
import { ADMIN_ACHIEVEMENTS, COMMUNITY_ACHIEVEMENTS, DRIVER_ACHIEVEMENTS, STEWARD_ACHIEVEMENTS } from "@core/identity/domain/AchievementConstants";
|
import { ADMIN_ACHIEVEMENTS, COMMUNITY_ACHIEVEMENTS, DRIVER_ACHIEVEMENTS, STEWARD_ACHIEVEMENTS } from "@core/identity/domain/AchievementConstants";
|
||||||
|
import { Achievement } from "@core/identity/domain/entities/Achievement";
|
||||||
|
import { UserAchievement } from "@core/identity/domain/entities/UserAchievement";
|
||||||
|
import { AchievementRepository } from "@core/identity/domain/repositories/AchievementRepository";
|
||||||
|
import { AchievementCategory } from "@core/identity/domain/types/AchievementTypes";
|
||||||
import { Logger } from "@core/shared/domain";
|
import { Logger } from "@core/shared/domain";
|
||||||
|
|
||||||
export class InMemoryAchievementRepository implements AchievementRepository {
|
export class InMemoryAchievementRepository implements AchievementRepository {
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
import { User } from '@core/identity/domain/entities/User';
|
import { User } from '@core/identity/domain/entities/User';
|
||||||
import { AuthRepository } from '@core/identity/domain/repositories/AuthRepository';
|
import { AuthRepository } from '@core/identity/domain/repositories/AuthRepository';
|
||||||
import { UserRepository, StoredUser } from '@core/identity/domain/repositories/UserRepository';
|
import { StoredUser } from '@core/identity/domain/repositories/UserRepository';
|
||||||
import { PasswordHashingService } from '@core/identity/domain/services/PasswordHashingService';
|
|
||||||
|
|
||||||
import { EmailAddress } from '@core/identity/domain/value-objects/EmailAddress';
|
import { EmailAddress } from '@core/identity/domain/value-objects/EmailAddress';
|
||||||
import { Logger } from '@core/shared/domain';
|
import { Logger } from '@core/shared/domain';
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { ExternalGameRatingRepository, PaginatedQueryOptions, PaginatedResult } from '@core/identity/domain/repositories/ExternalGameRatingRepository';
|
|
||||||
import { ExternalGameRatingProfile } from '@core/identity/domain/entities/ExternalGameRatingProfile';
|
import { ExternalGameRatingProfile } from '@core/identity/domain/entities/ExternalGameRatingProfile';
|
||||||
|
import { ExternalGameRatingRepository, PaginatedQueryOptions, PaginatedResult } from '@core/identity/domain/repositories/ExternalGameRatingRepository';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* In-Memory Implementation: IExternalGameRatingRepository
|
* In-Memory Implementation: IExternalGameRatingRepository
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { describe, it, expect, beforeEach } from 'vitest';
|
import { beforeEach, describe, expect, it } from 'vitest';
|
||||||
import { InMemoryMagicLinkRepository } from './InMemoryMagicLinkRepository';
|
import { InMemoryMagicLinkRepository } from './InMemoryMagicLinkRepository';
|
||||||
|
|
||||||
const mockLogger = {
|
const mockLogger = {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { MagicLinkRepository, PasswordResetRequest } from '@core/identity/domain/repositories/MagicLinkRepository';
|
import { MagicLinkRepository, PasswordResetRequest } from '@core/identity/domain/repositories/MagicLinkRepository';
|
||||||
import { Result } from '@core/shared/domain/Result';
|
|
||||||
import { Logger } from '@core/shared/domain';
|
import { Logger } from '@core/shared/domain';
|
||||||
|
import { Result } from '@core/shared/domain/Result';
|
||||||
|
|
||||||
export class InMemoryMagicLinkRepository implements MagicLinkRepository {
|
export class InMemoryMagicLinkRepository implements MagicLinkRepository {
|
||||||
private resetRequests: Map<string, PasswordResetRequest> = new Map();
|
private resetRequests: Map<string, PasswordResetRequest> = new Map();
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
* In-memory implementation of ISponsorAccountRepository for development/testing.
|
* In-memory implementation of ISponsorAccountRepository for development/testing.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { SponsorAccountRepository, SponsorAccount, UserId } from '@core/identity';
|
import { SponsorAccount, SponsorAccountRepository, UserId } from '@core/identity';
|
||||||
import { Logger } from '@core/shared/domain';
|
import { Logger } from '@core/shared/domain';
|
||||||
|
|
||||||
export class InMemorySponsorAccountRepository implements SponsorAccountRepository {
|
export class InMemorySponsorAccountRepository implements SponsorAccountRepository {
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
* In-memory implementation of IUserRatingRepository
|
* In-memory implementation of IUserRatingRepository
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { UserRatingRepository, UserRating } from '@core/identity';
|
import { UserRating, UserRatingRepository } from '@core/identity';
|
||||||
import { Logger } from '@core/shared/domain';
|
import { Logger } from '@core/shared/domain';
|
||||||
|
|
||||||
export class InMemoryUserRatingRepository implements UserRatingRepository {
|
export class InMemoryUserRatingRepository implements UserRatingRepository {
|
||||||
|
|||||||
@@ -4,8 +4,8 @@
|
|||||||
* Stores users in memory for demo/development purposes.
|
* Stores users in memory for demo/development purposes.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
import type { StoredUser, UserRepository } from '@core/identity/domain/repositories/UserRepository';
|
||||||
import { Logger } from '@core/shared/domain';
|
import { Logger } from '@core/shared/domain';
|
||||||
import type { UserRepository, StoredUser } from '@core/identity/domain/repositories/UserRepository';
|
|
||||||
|
|
||||||
export class InMemoryUserRepository implements UserRepository {
|
export class InMemoryUserRepository implements UserRepository {
|
||||||
private users: Map<string, StoredUser> = new Map();
|
private users: Map<string, StoredUser> = new Map();
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn } from 'typeorm';
|
import { Column, CreateDateColumn, Entity, PrimaryGeneratedColumn } from 'typeorm';
|
||||||
|
|
||||||
@Entity('companies')
|
@Entity('companies')
|
||||||
export class CompanyOrmEntity {
|
export class CompanyOrmEntity {
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn } from 'typeorm';
|
import { Column, CreateDateColumn, Entity, PrimaryGeneratedColumn, UpdateDateColumn } from 'typeorm';
|
||||||
|
|
||||||
@Entity('password_reset_requests')
|
@Entity('password_reset_requests')
|
||||||
export class PasswordResetRequestOrmEntity {
|
export class PasswordResetRequestOrmEntity {
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
import { ExternalGameRatingProfileOrmMapper } from './ExternalGameRatingProfileOrmMapper';
|
|
||||||
import { ExternalGameRatingProfileOrmEntity } from '../entities/ExternalGameRatingProfileOrmEntity';
|
|
||||||
import { ExternalGameRatingProfile } from '@core/identity/domain/entities/ExternalGameRatingProfile';
|
import { ExternalGameRatingProfile } from '@core/identity/domain/entities/ExternalGameRatingProfile';
|
||||||
import { UserId } from '@core/identity/domain/value-objects/UserId';
|
|
||||||
import { GameKey } from '@core/identity/domain/value-objects/GameKey';
|
|
||||||
import { ExternalRating } from '@core/identity/domain/value-objects/ExternalRating';
|
import { ExternalRating } from '@core/identity/domain/value-objects/ExternalRating';
|
||||||
import { ExternalRatingProvenance } from '@core/identity/domain/value-objects/ExternalRatingProvenance';
|
import { ExternalRatingProvenance } from '@core/identity/domain/value-objects/ExternalRatingProvenance';
|
||||||
|
import { GameKey } from '@core/identity/domain/value-objects/GameKey';
|
||||||
|
import { UserId } from '@core/identity/domain/value-objects/UserId';
|
||||||
|
import { ExternalGameRatingProfileOrmEntity } from '../entities/ExternalGameRatingProfileOrmEntity';
|
||||||
|
import { ExternalGameRatingProfileOrmMapper } from './ExternalGameRatingProfileOrmMapper';
|
||||||
|
|
||||||
describe('ExternalGameRatingProfileOrmMapper', () => {
|
describe('ExternalGameRatingProfileOrmMapper', () => {
|
||||||
describe('toDomain', () => {
|
describe('toDomain', () => {
|
||||||
|
|||||||
@@ -3,9 +3,9 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import { RatingEvent } from '@core/identity/domain/entities/RatingEvent';
|
import { RatingEvent } from '@core/identity/domain/entities/RatingEvent';
|
||||||
import { RatingEventId } from '@core/identity/domain/value-objects/RatingEventId';
|
|
||||||
import { RatingDimensionKey } from '@core/identity/domain/value-objects/RatingDimensionKey';
|
|
||||||
import { RatingDelta } from '@core/identity/domain/value-objects/RatingDelta';
|
import { RatingDelta } from '@core/identity/domain/value-objects/RatingDelta';
|
||||||
|
import { RatingDimensionKey } from '@core/identity/domain/value-objects/RatingDimensionKey';
|
||||||
|
import { RatingEventId } from '@core/identity/domain/value-objects/RatingEventId';
|
||||||
import { RatingEventOrmEntity } from '../entities/RatingEventOrmEntity';
|
import { RatingEventOrmEntity } from '../entities/RatingEventOrmEntity';
|
||||||
import { RatingEventOrmMapper } from './RatingEventOrmMapper';
|
import { RatingEventOrmMapper } from './RatingEventOrmMapper';
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { RatingEvent } from '@core/identity/domain/entities/RatingEvent';
|
import { RatingEvent } from '@core/identity/domain/entities/RatingEvent';
|
||||||
import { RatingEventId } from '@core/identity/domain/value-objects/RatingEventId';
|
|
||||||
import { RatingDimensionKey } from '@core/identity/domain/value-objects/RatingDimensionKey';
|
|
||||||
import { RatingDelta } from '@core/identity/domain/value-objects/RatingDelta';
|
import { RatingDelta } from '@core/identity/domain/value-objects/RatingDelta';
|
||||||
|
import { RatingDimensionKey } from '@core/identity/domain/value-objects/RatingDimensionKey';
|
||||||
|
import { RatingEventId } from '@core/identity/domain/value-objects/RatingEventId';
|
||||||
import { RatingEventOrmEntity } from '../entities/RatingEventOrmEntity';
|
import { RatingEventOrmEntity } from '../entities/RatingEventOrmEntity';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -1,15 +1,15 @@
|
|||||||
import { describe, expect, it, vi } from 'vitest';
|
|
||||||
import * as fs from 'node:fs';
|
import * as fs from 'node:fs';
|
||||||
import * as path from 'node:path';
|
import * as path from 'node:path';
|
||||||
import type { DataSource, Repository } from 'typeorm';
|
import type { DataSource, Repository } from 'typeorm';
|
||||||
|
import { describe, expect, it, vi } from 'vitest';
|
||||||
|
|
||||||
import { TypeOrmAuthRepository } from './TypeOrmAuthRepository';
|
|
||||||
import { UserOrmEntity } from '../entities/UserOrmEntity';
|
|
||||||
import { UserOrmMapper } from '../mappers/UserOrmMapper';
|
|
||||||
import { EmailAddress } from '@core/identity/domain/value-objects/EmailAddress';
|
|
||||||
import { User } from '@core/identity/domain/entities/User';
|
import { User } from '@core/identity/domain/entities/User';
|
||||||
|
import { EmailAddress } from '@core/identity/domain/value-objects/EmailAddress';
|
||||||
import { PasswordHash } from '@core/identity/domain/value-objects/PasswordHash';
|
import { PasswordHash } from '@core/identity/domain/value-objects/PasswordHash';
|
||||||
import { UserId } from '@core/identity/domain/value-objects/UserId';
|
import { UserId } from '@core/identity/domain/value-objects/UserId';
|
||||||
|
import { UserOrmEntity } from '../entities/UserOrmEntity';
|
||||||
|
import { UserOrmMapper } from '../mappers/UserOrmMapper';
|
||||||
|
import { TypeOrmAuthRepository } from './TypeOrmAuthRepository';
|
||||||
|
|
||||||
describe('TypeOrmAuthRepository', () => {
|
describe('TypeOrmAuthRepository', () => {
|
||||||
it('does not construct its own mapper dependencies', () => {
|
it('does not construct its own mapper dependencies', () => {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { Repository } from 'typeorm';
|
|
||||||
import { ExternalGameRatingRepository, PaginatedQueryOptions, PaginatedResult } from '@core/identity/domain/repositories/ExternalGameRatingRepository';
|
|
||||||
import { ExternalGameRatingProfile } from '@core/identity/domain/entities/ExternalGameRatingProfile';
|
import { ExternalGameRatingProfile } from '@core/identity/domain/entities/ExternalGameRatingProfile';
|
||||||
|
import { ExternalGameRatingRepository, PaginatedQueryOptions, PaginatedResult } from '@core/identity/domain/repositories/ExternalGameRatingRepository';
|
||||||
|
import { Repository } from 'typeorm';
|
||||||
import { ExternalGameRatingProfileOrmEntity } from '../entities/ExternalGameRatingProfileOrmEntity';
|
import { ExternalGameRatingProfileOrmEntity } from '../entities/ExternalGameRatingProfileOrmEntity';
|
||||||
import { ExternalGameRatingProfileOrmMapper } from '../mappers/ExternalGameRatingProfileOrmMapper';
|
import { ExternalGameRatingProfileOrmMapper } from '../mappers/ExternalGameRatingProfileOrmMapper';
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import type { DataSource } from 'typeorm';
|
|
||||||
import { MagicLinkRepository, PasswordResetRequest } from '@core/identity/domain/repositories/MagicLinkRepository';
|
import { MagicLinkRepository, PasswordResetRequest } from '@core/identity/domain/repositories/MagicLinkRepository';
|
||||||
import { Result } from '@core/shared/domain/Result';
|
|
||||||
import { Logger } from '@core/shared/domain';
|
import { Logger } from '@core/shared/domain';
|
||||||
|
import { Result } from '@core/shared/domain/Result';
|
||||||
|
import type { DataSource } from 'typeorm';
|
||||||
import { PasswordResetRequestOrmEntity } from '../entities/PasswordResetRequestOrmEntity';
|
import { PasswordResetRequestOrmEntity } from '../entities/PasswordResetRequestOrmEntity';
|
||||||
|
|
||||||
export class TypeOrmMagicLinkRepository implements MagicLinkRepository {
|
export class TypeOrmMagicLinkRepository implements MagicLinkRepository {
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { describe, expect, it, vi } from 'vitest';
|
|
||||||
import type { DataSource } from 'typeorm';
|
import type { DataSource } from 'typeorm';
|
||||||
|
import { describe, expect, it, vi } from 'vitest';
|
||||||
|
|
||||||
import { TypeOrmRatingEventRepository } from './TypeOrmRatingEventRepository';
|
import { TypeOrmRatingEventRepository } from './TypeOrmRatingEventRepository';
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import type { DataSource } from 'typeorm';
|
import type { DataSource } from 'typeorm';
|
||||||
|
|
||||||
import type { RatingEventRepository, FindByUserIdOptions, PaginatedQueryOptions, PaginatedResult } from '@core/identity/domain/repositories/RatingEventRepository';
|
|
||||||
import type { RatingEvent } from '@core/identity/domain/entities/RatingEvent';
|
import type { RatingEvent } from '@core/identity/domain/entities/RatingEvent';
|
||||||
|
import type { FindByUserIdOptions, PaginatedQueryOptions, PaginatedResult, RatingEventRepository } from '@core/identity/domain/repositories/RatingEventRepository';
|
||||||
import type { RatingEventId } from '@core/identity/domain/value-objects/RatingEventId';
|
import type { RatingEventId } from '@core/identity/domain/value-objects/RatingEventId';
|
||||||
|
|
||||||
import { RatingEventOrmEntity } from '../entities/RatingEventOrmEntity';
|
import { RatingEventOrmEntity } from '../entities/RatingEventOrmEntity';
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { describe, expect, it, vi } from 'vitest';
|
|
||||||
import type { DataSource } from 'typeorm';
|
import type { DataSource } from 'typeorm';
|
||||||
|
import { describe, expect, it, vi } from 'vitest';
|
||||||
|
|
||||||
import { TypeOrmUserRatingRepository } from './TypeOrmUserRatingRepository';
|
import { TypeOrmUserRatingRepository } from './TypeOrmUserRatingRepository';
|
||||||
|
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
import { describe, expect, it, vi } from 'vitest';
|
|
||||||
import * as fs from 'node:fs';
|
import * as fs from 'node:fs';
|
||||||
import * as path from 'node:path';
|
import * as path from 'node:path';
|
||||||
import type { DataSource, Repository } from 'typeorm';
|
import type { DataSource, Repository } from 'typeorm';
|
||||||
|
import { describe, expect, it, vi } from 'vitest';
|
||||||
|
|
||||||
import { TypeOrmUserRepository } from './TypeOrmUserRepository';
|
|
||||||
import { UserOrmEntity } from '../entities/UserOrmEntity';
|
import { UserOrmEntity } from '../entities/UserOrmEntity';
|
||||||
import { UserOrmMapper } from '../mappers/UserOrmMapper';
|
import { UserOrmMapper } from '../mappers/UserOrmMapper';
|
||||||
|
import { TypeOrmUserRepository } from './TypeOrmUserRepository';
|
||||||
|
|
||||||
describe('TypeOrmUserRepository', () => {
|
describe('TypeOrmUserRepository', () => {
|
||||||
it('does not construct its own mapper dependencies', () => {
|
it('does not construct its own mapper dependencies', () => {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import type { DataSource } from 'typeorm';
|
import type { DataSource } from 'typeorm';
|
||||||
|
|
||||||
import type { UserRepository, StoredUser } from '@core/identity/domain/repositories/UserRepository';
|
import type { StoredUser, UserRepository } from '@core/identity/domain/repositories/UserRepository';
|
||||||
|
|
||||||
import { UserOrmEntity } from '../entities/UserOrmEntity';
|
import { UserOrmEntity } from '../entities/UserOrmEntity';
|
||||||
import { UserOrmMapper } from '../mappers/UserOrmMapper';
|
import { UserOrmMapper } from '../mappers/UserOrmMapper';
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { vi, type Mock } from 'vitest';
|
import { afterEach, beforeEach, describe, expect, it, vi, type Mock } from 'vitest';
|
||||||
import { ConsoleLogger } from './ConsoleLogger';
|
import { ConsoleLogger } from './ConsoleLogger';
|
||||||
|
|
||||||
describe('ConsoleLogger', () => {
|
describe('ConsoleLogger', () => {
|
||||||
|
|||||||
@@ -4,9 +4,9 @@
|
|||||||
* Tests the complete resolution flow for all media reference types
|
* Tests the complete resolution flow for all media reference types
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { describe, expect, it } from 'vitest';
|
|
||||||
import { MediaReference } from '@core/domain/media/MediaReference';
|
import { MediaReference } from '@core/domain/media/MediaReference';
|
||||||
import { MediaResolverAdapter, DefaultResolvers } from './MediaResolverAdapter';
|
import { describe, expect, it } from 'vitest';
|
||||||
|
import { DefaultResolvers, MediaResolverAdapter } from './MediaResolverAdapter';
|
||||||
import { DefaultMediaResolverAdapter } from './resolvers/DefaultMediaResolverAdapter';
|
import { DefaultMediaResolverAdapter } from './resolvers/DefaultMediaResolverAdapter';
|
||||||
import { GeneratedMediaResolverAdapter } from './resolvers/GeneratedMediaResolverAdapter';
|
import { GeneratedMediaResolverAdapter } from './resolvers/GeneratedMediaResolverAdapter';
|
||||||
import { UploadedMediaResolverAdapter } from './resolvers/UploadedMediaResolverAdapter';
|
import { UploadedMediaResolverAdapter } from './resolvers/UploadedMediaResolverAdapter';
|
||||||
|
|||||||
@@ -5,8 +5,8 @@
|
|||||||
* This is the main entry point for media resolution.
|
* This is the main entry point for media resolution.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { MediaResolverPort } from '@core/ports/media/MediaResolverPort';
|
|
||||||
import { MediaReference } from '@core/domain/media/MediaReference';
|
import { MediaReference } from '@core/domain/media/MediaReference';
|
||||||
|
import { MediaResolverPort } from '@core/ports/media/MediaResolverPort';
|
||||||
import { DefaultMediaResolverAdapter } from './resolvers/DefaultMediaResolverAdapter';
|
import { DefaultMediaResolverAdapter } from './resolvers/DefaultMediaResolverAdapter';
|
||||||
import { GeneratedMediaResolverAdapter } from './resolvers/GeneratedMediaResolverAdapter';
|
import { GeneratedMediaResolverAdapter } from './resolvers/GeneratedMediaResolverAdapter';
|
||||||
import { UploadedMediaResolverAdapter } from './resolvers/UploadedMediaResolverAdapter';
|
import { UploadedMediaResolverAdapter } from './resolvers/UploadedMediaResolverAdapter';
|
||||||
|
|||||||
@@ -7,8 +7,8 @@
|
|||||||
* Part of the adapters layer, implementing the MediaResolverPort interface.
|
* Part of the adapters layer, implementing the MediaResolverPort interface.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { MediaResolverPort } from '@core/ports/media/MediaResolverPort';
|
|
||||||
import { MediaReference } from '@core/domain/media/MediaReference';
|
import { MediaReference } from '@core/domain/media/MediaReference';
|
||||||
|
import { MediaResolverPort } from '@core/ports/media/MediaResolverPort';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Configuration for InMemoryMediaResolverAdapter
|
* Configuration for InMemoryMediaResolverAdapter
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { AvatarGenerationRepository } from '@core/media/domain/repositories/AvatarGenerationRepository';
|
|
||||||
import { AvatarGenerationRequest } from '@core/media/domain/entities/AvatarGenerationRequest';
|
import { AvatarGenerationRequest } from '@core/media/domain/entities/AvatarGenerationRequest';
|
||||||
|
import { AvatarGenerationRepository } from '@core/media/domain/repositories/AvatarGenerationRepository';
|
||||||
import { Logger } from '@core/shared/domain';
|
import { Logger } from '@core/shared/domain';
|
||||||
|
|
||||||
export class InMemoryAvatarGenerationRepository implements AvatarGenerationRepository {
|
export class InMemoryAvatarGenerationRepository implements AvatarGenerationRepository {
|
||||||
|
|||||||
@@ -2,14 +2,14 @@ import { AvatarGenerationRequest } from '@core/media/domain/entities/AvatarGener
|
|||||||
import { AvatarGenerationRequestOrmEntity } from '../entities/AvatarGenerationRequestOrmEntity';
|
import { AvatarGenerationRequestOrmEntity } from '../entities/AvatarGenerationRequestOrmEntity';
|
||||||
import { TypeOrmMediaSchemaError } from '../errors/TypeOrmMediaSchemaError';
|
import { TypeOrmMediaSchemaError } from '../errors/TypeOrmMediaSchemaError';
|
||||||
import {
|
import {
|
||||||
assertNonEmptyString,
|
assertAvatarGenerationStatus,
|
||||||
assertDate,
|
assertAvatarStyle,
|
||||||
assertStringArray,
|
assertDate,
|
||||||
assertOptionalIntegerOrNull,
|
assertNonEmptyString,
|
||||||
assertOptionalStringOrNull,
|
assertOptionalIntegerOrNull,
|
||||||
assertRacingSuitColor,
|
assertOptionalStringOrNull,
|
||||||
assertAvatarStyle,
|
assertRacingSuitColor,
|
||||||
assertAvatarGenerationStatus,
|
assertStringArray,
|
||||||
} from '../schema/TypeOrmMediaSchemaGuards';
|
} from '../schema/TypeOrmMediaSchemaGuards';
|
||||||
|
|
||||||
export class AvatarGenerationRequestOrmMapper {
|
export class AvatarGenerationRequestOrmMapper {
|
||||||
|
|||||||
@@ -2,9 +2,9 @@ import { Avatar } from '@core/media/domain/entities/Avatar';
|
|||||||
import { AvatarOrmEntity } from '../entities/AvatarOrmEntity';
|
import { AvatarOrmEntity } from '../entities/AvatarOrmEntity';
|
||||||
import { TypeOrmMediaSchemaError } from '../errors/TypeOrmMediaSchemaError';
|
import { TypeOrmMediaSchemaError } from '../errors/TypeOrmMediaSchemaError';
|
||||||
import {
|
import {
|
||||||
assertNonEmptyString,
|
assertBoolean,
|
||||||
assertDate,
|
assertDate,
|
||||||
assertBoolean,
|
assertNonEmptyString,
|
||||||
} from '../schema/TypeOrmMediaSchemaGuards';
|
} from '../schema/TypeOrmMediaSchemaGuards';
|
||||||
|
|
||||||
export class AvatarOrmMapper {
|
export class AvatarOrmMapper {
|
||||||
|
|||||||
@@ -2,10 +2,10 @@ import { Media } from '@core/media/domain/entities/Media';
|
|||||||
import { MediaOrmEntity } from '../entities/MediaOrmEntity';
|
import { MediaOrmEntity } from '../entities/MediaOrmEntity';
|
||||||
import { TypeOrmMediaSchemaError } from '../errors/TypeOrmMediaSchemaError';
|
import { TypeOrmMediaSchemaError } from '../errors/TypeOrmMediaSchemaError';
|
||||||
import {
|
import {
|
||||||
assertNonEmptyString,
|
assertDate,
|
||||||
assertDate,
|
assertInteger,
|
||||||
assertInteger,
|
assertMediaType,
|
||||||
assertMediaType,
|
assertNonEmptyString,
|
||||||
} from '../schema/TypeOrmMediaSchemaGuards';
|
} from '../schema/TypeOrmMediaSchemaGuards';
|
||||||
|
|
||||||
export class MediaOrmMapper {
|
export class MediaOrmMapper {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { describe, expect, it, vi } from 'vitest';
|
|
||||||
import * as fs from 'node:fs';
|
import * as fs from 'node:fs';
|
||||||
import * as path from 'node:path';
|
import * as path from 'node:path';
|
||||||
|
import { describe, expect, it, vi } from 'vitest';
|
||||||
|
|
||||||
import { TypeOrmAvatarGenerationRepository } from './TypeOrmAvatarGenerationRepository';
|
import { TypeOrmAvatarGenerationRepository } from './TypeOrmAvatarGenerationRepository';
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import type { DataSource } from 'typeorm';
|
|
||||||
import type { AvatarGenerationRepository } from '@core/media/domain/repositories/AvatarGenerationRepository';
|
|
||||||
import type { AvatarGenerationRequest } from '@core/media/domain/entities/AvatarGenerationRequest';
|
import type { AvatarGenerationRequest } from '@core/media/domain/entities/AvatarGenerationRequest';
|
||||||
|
import type { AvatarGenerationRepository } from '@core/media/domain/repositories/AvatarGenerationRepository';
|
||||||
|
import type { DataSource } from 'typeorm';
|
||||||
import { AvatarGenerationRequestOrmEntity } from '../entities/AvatarGenerationRequestOrmEntity';
|
import { AvatarGenerationRequestOrmEntity } from '../entities/AvatarGenerationRequestOrmEntity';
|
||||||
import { AvatarGenerationRequestOrmMapper } from '../mappers/AvatarGenerationRequestOrmMapper';
|
import { AvatarGenerationRequestOrmMapper } from '../mappers/AvatarGenerationRequestOrmMapper';
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { describe, expect, it, vi } from 'vitest';
|
|
||||||
import * as fs from 'node:fs';
|
import * as fs from 'node:fs';
|
||||||
import * as path from 'node:path';
|
import * as path from 'node:path';
|
||||||
|
import { describe, expect, it, vi } from 'vitest';
|
||||||
|
|
||||||
import { TypeOrmAvatarRepository } from './TypeOrmAvatarRepository';
|
import { TypeOrmAvatarRepository } from './TypeOrmAvatarRepository';
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import type { DataSource } from 'typeorm';
|
|
||||||
import type { AvatarRepository } from '@core/media/domain/repositories/AvatarRepository';
|
|
||||||
import type { Avatar } from '@core/media/domain/entities/Avatar';
|
import type { Avatar } from '@core/media/domain/entities/Avatar';
|
||||||
|
import type { AvatarRepository } from '@core/media/domain/repositories/AvatarRepository';
|
||||||
|
import type { DataSource } from 'typeorm';
|
||||||
import { AvatarOrmEntity } from '../entities/AvatarOrmEntity';
|
import { AvatarOrmEntity } from '../entities/AvatarOrmEntity';
|
||||||
import { AvatarOrmMapper } from '../mappers/AvatarOrmMapper';
|
import { AvatarOrmMapper } from '../mappers/AvatarOrmMapper';
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { describe, expect, it, vi } from 'vitest';
|
|
||||||
import * as fs from 'node:fs';
|
import * as fs from 'node:fs';
|
||||||
import * as path from 'node:path';
|
import * as path from 'node:path';
|
||||||
|
import { describe, expect, it, vi } from 'vitest';
|
||||||
|
|
||||||
import { TypeOrmMediaRepository } from './TypeOrmMediaRepository';
|
import { TypeOrmMediaRepository } from './TypeOrmMediaRepository';
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import type { DataSource } from 'typeorm';
|
|
||||||
import type { MediaRepository } from '@core/media/domain/repositories/MediaRepository';
|
|
||||||
import type { Media } from '@core/media/domain/entities/Media';
|
import type { Media } from '@core/media/domain/entities/Media';
|
||||||
|
import type { MediaRepository } from '@core/media/domain/repositories/MediaRepository';
|
||||||
|
import type { DataSource } from 'typeorm';
|
||||||
import { MediaOrmEntity } from '../entities/MediaOrmEntity';
|
import { MediaOrmEntity } from '../entities/MediaOrmEntity';
|
||||||
import { MediaOrmMapper } from '../mappers/MediaOrmMapper';
|
import { MediaOrmMapper } from '../mappers/MediaOrmMapper';
|
||||||
|
|
||||||
|
|||||||
@@ -5,8 +5,8 @@
|
|||||||
* Part of the adapters layer, implementing the MediaResolverPort interface.
|
* Part of the adapters layer, implementing the MediaResolverPort interface.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { MediaResolverPort } from '@core/ports/media/MediaResolverPort';
|
|
||||||
import { MediaReference } from '@core/domain/media/MediaReference';
|
import { MediaReference } from '@core/domain/media/MediaReference';
|
||||||
|
import { MediaResolverPort } from '@core/ports/media/MediaResolverPort';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Configuration for the DefaultMediaResolverAdapter
|
* Configuration for the DefaultMediaResolverAdapter
|
||||||
|
|||||||
@@ -5,8 +5,8 @@
|
|||||||
* Part of the adapters layer, implementing the MediaResolverPort interface.
|
* Part of the adapters layer, implementing the MediaResolverPort interface.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { MediaResolverPort } from '@core/ports/media/MediaResolverPort';
|
|
||||||
import { MediaReference } from '@core/domain/media/MediaReference';
|
import { MediaReference } from '@core/domain/media/MediaReference';
|
||||||
|
import { MediaResolverPort } from '@core/ports/media/MediaResolverPort';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Configuration for the GeneratedMediaResolverAdapter
|
* Configuration for the GeneratedMediaResolverAdapter
|
||||||
|
|||||||
@@ -5,8 +5,8 @@
|
|||||||
* Part of the adapters layer, implementing the MediaResolverPort interface.
|
* Part of the adapters layer, implementing the MediaResolverPort interface.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { MediaResolverPort } from '@core/ports/media/MediaResolverPort';
|
|
||||||
import { MediaReference } from '@core/domain/media/MediaReference';
|
import { MediaReference } from '@core/domain/media/MediaReference';
|
||||||
|
import { MediaResolverPort } from '@core/ports/media/MediaResolverPort';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Configuration for the UploadedMediaResolverAdapter
|
* Configuration for the UploadedMediaResolverAdapter
|
||||||
|
|||||||
@@ -5,11 +5,11 @@
|
|||||||
* Currently a stub - to be implemented when Discord integration is needed.
|
* Currently a stub - to be implemented when Discord integration is needed.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import type { Notification } from '@core/notifications/domain/entities/Notification';
|
|
||||||
import type {
|
import type {
|
||||||
NotificationGateway,
|
NotificationDeliveryResult,
|
||||||
NotificationDeliveryResult
|
NotificationGateway
|
||||||
} from '@core/notifications/application/ports/NotificationGateway';
|
} from '@core/notifications/application/ports/NotificationGateway';
|
||||||
|
import type { Notification } from '@core/notifications/domain/entities/Notification';
|
||||||
import type { NotificationChannel } from '@core/notifications/domain/types/NotificationTypes';
|
import type { NotificationChannel } from '@core/notifications/domain/types/NotificationTypes';
|
||||||
|
|
||||||
export interface DiscordAdapterConfig {
|
export interface DiscordAdapterConfig {
|
||||||
|
|||||||
@@ -5,11 +5,11 @@
|
|||||||
* Currently a stub - to be implemented when email integration is needed.
|
* Currently a stub - to be implemented when email integration is needed.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import type { Notification } from '@core/notifications/domain/entities/Notification';
|
|
||||||
import type {
|
import type {
|
||||||
NotificationGateway,
|
NotificationDeliveryResult,
|
||||||
NotificationDeliveryResult
|
NotificationGateway
|
||||||
} from '@core/notifications/application/ports/NotificationGateway';
|
} from '@core/notifications/application/ports/NotificationGateway';
|
||||||
|
import type { Notification } from '@core/notifications/domain/entities/Notification';
|
||||||
import type { NotificationChannel } from '@core/notifications/domain/types/NotificationTypes';
|
import type { NotificationChannel } from '@core/notifications/domain/types/NotificationTypes';
|
||||||
|
|
||||||
export interface EmailAdapterConfig {
|
export interface EmailAdapterConfig {
|
||||||
|
|||||||
@@ -5,11 +5,11 @@
|
|||||||
* Currently a stub - to be implemented when in-app notification system is needed.
|
* Currently a stub - to be implemented when in-app notification system is needed.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import type { Notification } from '@core/notifications/domain/entities/Notification';
|
|
||||||
import type {
|
import type {
|
||||||
NotificationGateway,
|
NotificationDeliveryResult,
|
||||||
NotificationDeliveryResult
|
NotificationGateway
|
||||||
} from '@core/notifications/application/ports/NotificationGateway';
|
} from '@core/notifications/application/ports/NotificationGateway';
|
||||||
|
import type { Notification } from '@core/notifications/domain/entities/Notification';
|
||||||
import type { NotificationChannel } from '@core/notifications/domain/types/NotificationTypes';
|
import type { NotificationChannel } from '@core/notifications/domain/types/NotificationTypes';
|
||||||
|
|
||||||
export class InAppNotificationAdapter implements NotificationGateway {
|
export class InAppNotificationAdapter implements NotificationGateway {
|
||||||
|
|||||||
@@ -4,13 +4,12 @@
|
|||||||
* Manages notification gateways and routes notifications to appropriate channels.
|
* Manages notification gateways and routes notifications to appropriate channels.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
import type {
|
||||||
|
NotificationDeliveryResult,
|
||||||
|
NotificationGateway
|
||||||
|
} from '@core/notifications/application/ports/NotificationGateway';
|
||||||
import type { Notification } from '@core/notifications/domain/entities/Notification';
|
import type { Notification } from '@core/notifications/domain/entities/Notification';
|
||||||
import type { NotificationChannel } from '@core/notifications/domain/types/NotificationTypes';
|
import type { NotificationChannel } from '@core/notifications/domain/types/NotificationTypes';
|
||||||
import type {
|
|
||||||
NotificationGateway,
|
|
||||||
NotificationGatewayRegistry as INotificationGatewayRegistry,
|
|
||||||
NotificationDeliveryResult
|
|
||||||
} from '@core/notifications/application/ports/NotificationGateway';
|
|
||||||
|
|
||||||
export class NotificationGatewayRegistry implements NotificationGatewayRegistry {
|
export class NotificationGatewayRegistry implements NotificationGatewayRegistry {
|
||||||
private gateways: Map<NotificationChannel, NotificationGateway> = new Map();
|
private gateways: Map<NotificationChannel, NotificationGateway> = new Map();
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { NotificationPreferenceRepository } from '@core/notifications/domain/repositories/NotificationPreferenceRepository';
|
|
||||||
import { NotificationPreference } from '@core/notifications/domain/entities/NotificationPreference';
|
import { NotificationPreference } from '@core/notifications/domain/entities/NotificationPreference';
|
||||||
|
import { NotificationPreferenceRepository } from '@core/notifications/domain/repositories/NotificationPreferenceRepository';
|
||||||
import { Logger } from '@core/shared/domain';
|
import { Logger } from '@core/shared/domain';
|
||||||
|
|
||||||
export class InMemoryNotificationPreferenceRepository implements NotificationPreferenceRepository {
|
export class InMemoryNotificationPreferenceRepository implements NotificationPreferenceRepository {
|
||||||
|
|||||||
@@ -2,17 +2,17 @@ import { Notification } from '@core/notifications/domain/entities/Notification';
|
|||||||
import { NotificationOrmEntity } from '../entities/NotificationOrmEntity';
|
import { NotificationOrmEntity } from '../entities/NotificationOrmEntity';
|
||||||
import { TypeOrmPersistenceSchemaError } from '../errors/TypeOrmPersistenceSchemaError';
|
import { TypeOrmPersistenceSchemaError } from '../errors/TypeOrmPersistenceSchemaError';
|
||||||
import {
|
import {
|
||||||
assertNonEmptyString,
|
assertBoolean,
|
||||||
assertDate,
|
assertDate,
|
||||||
assertOptionalDate,
|
assertNonEmptyString,
|
||||||
assertBoolean,
|
assertNotificationActions,
|
||||||
assertNotificationType,
|
assertNotificationChannel,
|
||||||
assertNotificationChannel,
|
assertNotificationStatus,
|
||||||
assertNotificationStatus,
|
assertNotificationType,
|
||||||
assertNotificationUrgency,
|
assertNotificationUrgency,
|
||||||
assertOptionalStringOrNull,
|
assertOptionalDate,
|
||||||
assertOptionalObject,
|
assertOptionalObject,
|
||||||
assertNotificationActions,
|
assertOptionalStringOrNull,
|
||||||
} from '../schema/NotificationSchemaGuards';
|
} from '../schema/NotificationSchemaGuards';
|
||||||
|
|
||||||
export class NotificationOrmMapper {
|
export class NotificationOrmMapper {
|
||||||
|
|||||||
@@ -2,12 +2,12 @@ import { NotificationPreference } from '@core/notifications/domain/entities/Noti
|
|||||||
import { NotificationPreferenceOrmEntity } from '../entities/NotificationPreferenceOrmEntity';
|
import { NotificationPreferenceOrmEntity } from '../entities/NotificationPreferenceOrmEntity';
|
||||||
import { TypeOrmPersistenceSchemaError } from '../errors/TypeOrmPersistenceSchemaError';
|
import { TypeOrmPersistenceSchemaError } from '../errors/TypeOrmPersistenceSchemaError';
|
||||||
import {
|
import {
|
||||||
assertNonEmptyString,
|
assertBoolean,
|
||||||
assertDate,
|
assertChannelPreferences,
|
||||||
assertBoolean,
|
assertDate,
|
||||||
assertOptionalInteger,
|
assertNonEmptyString,
|
||||||
assertChannelPreferences,
|
assertOptionalInteger,
|
||||||
assertOptionalObject,
|
assertOptionalObject,
|
||||||
} from '../schema/NotificationSchemaGuards';
|
} from '../schema/NotificationSchemaGuards';
|
||||||
|
|
||||||
export class NotificationPreferenceOrmMapper {
|
export class NotificationPreferenceOrmMapper {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import type { DataSource } from 'typeorm';
|
|
||||||
import type { NotificationPreferenceRepository } from '@core/notifications/domain/repositories/NotificationPreferenceRepository';
|
|
||||||
import { NotificationPreference } from '@core/notifications/domain/entities/NotificationPreference';
|
import { NotificationPreference } from '@core/notifications/domain/entities/NotificationPreference';
|
||||||
|
import type { NotificationPreferenceRepository } from '@core/notifications/domain/repositories/NotificationPreferenceRepository';
|
||||||
|
import type { DataSource } from 'typeorm';
|
||||||
import { NotificationPreferenceOrmEntity } from '../entities/NotificationPreferenceOrmEntity';
|
import { NotificationPreferenceOrmEntity } from '../entities/NotificationPreferenceOrmEntity';
|
||||||
import { NotificationPreferenceOrmMapper } from '../mappers/NotificationPreferenceOrmMapper';
|
import { NotificationPreferenceOrmMapper } from '../mappers/NotificationPreferenceOrmMapper';
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import type { DataSource } from 'typeorm';
|
import { Notification } from '@core/notifications/domain/entities/Notification';
|
||||||
import type { NotificationRepository } from '@core/notifications/domain/repositories/NotificationRepository';
|
import type { NotificationRepository } from '@core/notifications/domain/repositories/NotificationRepository';
|
||||||
import type { NotificationType } from '@core/notifications/domain/types/NotificationTypes';
|
import type { NotificationType } from '@core/notifications/domain/types/NotificationTypes';
|
||||||
import { Notification } from '@core/notifications/domain/entities/Notification';
|
import type { DataSource } from 'typeorm';
|
||||||
import { NotificationOrmEntity } from '../entities/NotificationOrmEntity';
|
import { NotificationOrmEntity } from '../entities/NotificationOrmEntity';
|
||||||
import { NotificationOrmMapper } from '../mappers/NotificationOrmMapper';
|
import { NotificationOrmMapper } from '../mappers/NotificationOrmMapper';
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { MagicLinkNotificationPort, MagicLinkNotificationInput } from '@core/identity/domain/ports/MagicLinkNotificationPort';
|
import { MagicLinkNotificationInput, MagicLinkNotificationPort } from '@core/identity/domain/ports/MagicLinkNotificationPort';
|
||||||
import { Logger } from '@core/shared/domain';
|
import { Logger } from '@core/shared/domain';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
|
import type { NotificationDeliveryResult, NotificationGateway, NotificationGatewayRegistry } from '@core/notifications/application/ports/NotificationGateway';
|
||||||
import type { Notification } from '@core/notifications/domain/entities/Notification';
|
import type { Notification } from '@core/notifications/domain/entities/Notification';
|
||||||
import type { NotificationChannel } from '@core/notifications/domain/types/NotificationTypes';
|
import type { NotificationChannel } from '@core/notifications/domain/types/NotificationTypes';
|
||||||
import type { NotificationGateway, NotificationGatewayRegistry, NotificationDeliveryResult } from '@core/notifications/application/ports/NotificationGateway';
|
|
||||||
|
|
||||||
export class InMemoryNotificationGatewayRegistry implements NotificationGatewayRegistry {
|
export class InMemoryNotificationGatewayRegistry implements NotificationGatewayRegistry {
|
||||||
private gateways: Map<NotificationChannel, NotificationGateway> = new Map();
|
private gateways: Map<NotificationChannel, NotificationGateway> = new Map();
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
|
||||||
import type { Logger } from '@core/shared/domain/Logger';
|
|
||||||
import type { MembershipFee } from '@core/payments/domain/entities/MembershipFee';
|
|
||||||
import { MembershipFeeType } from '@core/payments/domain/entities/MembershipFee';
|
|
||||||
import type { MemberPayment } from '@core/payments/domain/entities/MemberPayment';
|
import type { MemberPayment } from '@core/payments/domain/entities/MemberPayment';
|
||||||
import { MemberPaymentStatus } from '@core/payments/domain/entities/MemberPayment';
|
import { MemberPaymentStatus } from '@core/payments/domain/entities/MemberPayment';
|
||||||
|
import type { MembershipFee } from '@core/payments/domain/entities/MembershipFee';
|
||||||
|
import { MembershipFeeType } from '@core/payments/domain/entities/MembershipFee';
|
||||||
|
import type { Logger } from '@core/shared/domain/Logger';
|
||||||
|
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
||||||
import { InMemoryMemberPaymentRepository, InMemoryMembershipFeeRepository } from './InMemoryMembershipFeeRepository';
|
import { InMemoryMemberPaymentRepository, InMemoryMembershipFeeRepository } from './InMemoryMembershipFeeRepository';
|
||||||
|
|
||||||
describe('InMemoryMembershipFeeRepository', () => {
|
describe('InMemoryMembershipFeeRepository', () => {
|
||||||
|
|||||||
@@ -2,10 +2,10 @@
|
|||||||
* In-Memory Implementation: InMemoryMembershipFeeRepository
|
* In-Memory Implementation: InMemoryMembershipFeeRepository
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import type { Logger } from '@core/shared/domain/Logger';
|
|
||||||
import type { MembershipFeeRepository, IMemberPaymentRepository } from '@core/payments/domain/repositories/MembershipFeeRepository';
|
|
||||||
import type { MembershipFee } from '@core/payments/domain/entities/MembershipFee';
|
|
||||||
import type { MemberPayment } from '@core/payments/domain/entities/MemberPayment';
|
import type { MemberPayment } from '@core/payments/domain/entities/MemberPayment';
|
||||||
|
import type { MembershipFee } from '@core/payments/domain/entities/MembershipFee';
|
||||||
|
import type { MembershipFeeRepository } from '@core/payments/domain/repositories/MembershipFeeRepository';
|
||||||
|
import type { Logger } from '@core/shared/domain/Logger';
|
||||||
|
|
||||||
const membershipFees: Map<string, MembershipFee> = new Map();
|
const membershipFees: Map<string, MembershipFee> = new Map();
|
||||||
const memberPayments: Map<string, MemberPayment> = new Map();
|
const memberPayments: Map<string, MemberPayment> = new Map();
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
|
||||||
import type { Logger } from '@core/shared/domain/Logger';
|
|
||||||
import type { Payment } from '@core/payments/domain/entities/Payment';
|
import type { Payment } from '@core/payments/domain/entities/Payment';
|
||||||
import { PaymentType, PaymentStatus, PayerType } from '@core/payments/domain/entities/Payment';
|
import { PayerType, PaymentStatus, PaymentType } from '@core/payments/domain/entities/Payment';
|
||||||
|
import type { Logger } from '@core/shared/domain/Logger';
|
||||||
|
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
||||||
import { InMemoryPaymentRepository } from './InMemoryPaymentRepository';
|
import { InMemoryPaymentRepository } from './InMemoryPaymentRepository';
|
||||||
|
|
||||||
describe('InMemoryPaymentRepository', () => {
|
describe('InMemoryPaymentRepository', () => {
|
||||||
|
|||||||
@@ -2,9 +2,9 @@
|
|||||||
* In-Memory Implementation: InMemoryPaymentRepository
|
* In-Memory Implementation: InMemoryPaymentRepository
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import type { Logger } from '@core/shared/domain/Logger';
|
|
||||||
import type { PaymentRepository } from '@core/payments/domain/repositories/PaymentRepository';
|
|
||||||
import type { Payment, PaymentType } from '@core/payments/domain/entities/Payment';
|
import type { Payment, PaymentType } from '@core/payments/domain/entities/Payment';
|
||||||
|
import type { PaymentRepository } from '@core/payments/domain/repositories/PaymentRepository';
|
||||||
|
import type { Logger } from '@core/shared/domain/Logger';
|
||||||
|
|
||||||
const payments: Map<string, Payment> = new Map();
|
const payments: Map<string, Payment> = new Map();
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
|
||||||
import type { Logger } from '@core/shared/domain/Logger';
|
|
||||||
import type { Prize } from '@core/payments/domain/entities/Prize';
|
import type { Prize } from '@core/payments/domain/entities/Prize';
|
||||||
import { PrizeType } from '@core/payments/domain/entities/Prize';
|
import { PrizeType } from '@core/payments/domain/entities/Prize';
|
||||||
|
import type { Logger } from '@core/shared/domain/Logger';
|
||||||
|
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
||||||
import { InMemoryPrizeRepository } from './InMemoryPrizeRepository';
|
import { InMemoryPrizeRepository } from './InMemoryPrizeRepository';
|
||||||
|
|
||||||
describe('InMemoryPrizeRepository', () => {
|
describe('InMemoryPrizeRepository', () => {
|
||||||
|
|||||||
@@ -2,9 +2,9 @@
|
|||||||
* In-Memory Implementation: InMemoryPrizeRepository
|
* In-Memory Implementation: InMemoryPrizeRepository
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import type { Logger } from '@core/shared/domain/Logger';
|
|
||||||
import type { PrizeRepository } from '@core/payments/domain/repositories/PrizeRepository';
|
|
||||||
import type { Prize } from '@core/payments/domain/entities/Prize';
|
import type { Prize } from '@core/payments/domain/entities/Prize';
|
||||||
|
import type { PrizeRepository } from '@core/payments/domain/repositories/PrizeRepository';
|
||||||
|
import type { Logger } from '@core/shared/domain/Logger';
|
||||||
|
|
||||||
const prizes: Map<string, Prize> = new Map();
|
const prizes: Map<string, Prize> = new Map();
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
import type { Transaction, Wallet } from '@core/payments/domain/entities/Wallet';
|
||||||
import type { Logger } from '@core/shared/domain/Logger';
|
|
||||||
import type { Wallet, Transaction } from '@core/payments/domain/entities/Wallet';
|
|
||||||
import { TransactionType } from '@core/payments/domain/entities/Wallet';
|
import { TransactionType } from '@core/payments/domain/entities/Wallet';
|
||||||
|
import type { Logger } from '@core/shared/domain/Logger';
|
||||||
|
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
||||||
import { InMemoryTransactionRepository, InMemoryWalletRepository } from './InMemoryWalletRepository';
|
import { InMemoryTransactionRepository, InMemoryWalletRepository } from './InMemoryWalletRepository';
|
||||||
|
|
||||||
describe('InMemoryWalletRepository', () => {
|
describe('InMemoryWalletRepository', () => {
|
||||||
|
|||||||
@@ -2,9 +2,9 @@
|
|||||||
* In-Memory Implementation: InMemoryWalletRepository
|
* In-Memory Implementation: InMemoryWalletRepository
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
import type { Transaction, Wallet } from '@core/payments/domain/entities/Wallet';
|
||||||
|
import type { WalletRepository } from '@core/payments/domain/repositories/WalletRepository';
|
||||||
import type { Logger } from '@core/shared/domain/Logger';
|
import type { Logger } from '@core/shared/domain/Logger';
|
||||||
import type { WalletRepository, ITransactionRepository } from '@core/payments/domain/repositories/WalletRepository';
|
|
||||||
import type { Wallet, Transaction } from '@core/payments/domain/entities/Wallet';
|
|
||||||
|
|
||||||
const wallets: Map<string, Wallet> = new Map();
|
const wallets: Map<string, Wallet> = new Map();
|
||||||
const transactions: Map<string, Transaction> = new Map();
|
const transactions: Map<string, Transaction> = new Map();
|
||||||
|
|||||||
@@ -3,11 +3,11 @@ import { MemberPayment as MemberPaymentFactory, MemberPaymentStatus } from '@cor
|
|||||||
|
|
||||||
import { PaymentsMemberPaymentOrmEntity } from '../entities/PaymentsMemberPaymentOrmEntity';
|
import { PaymentsMemberPaymentOrmEntity } from '../entities/PaymentsMemberPaymentOrmEntity';
|
||||||
import {
|
import {
|
||||||
assertDate,
|
assertDate,
|
||||||
assertEnumValue,
|
assertEnumValue,
|
||||||
assertNonEmptyString,
|
assertNonEmptyString,
|
||||||
assertNumber,
|
assertNumber,
|
||||||
assertOptionalDate,
|
assertOptionalDate,
|
||||||
} from '../schema/TypeOrmPaymentsSchemaGuards';
|
} from '../schema/TypeOrmPaymentsSchemaGuards';
|
||||||
|
|
||||||
export class PaymentsMemberPaymentOrmMapper {
|
export class PaymentsMemberPaymentOrmMapper {
|
||||||
|
|||||||
@@ -3,12 +3,12 @@ import { MembershipFee as MembershipFeeFactory, MembershipFeeType } from '@core/
|
|||||||
|
|
||||||
import { PaymentsMembershipFeeOrmEntity } from '../entities/PaymentsMembershipFeeOrmEntity';
|
import { PaymentsMembershipFeeOrmEntity } from '../entities/PaymentsMembershipFeeOrmEntity';
|
||||||
import {
|
import {
|
||||||
assertBoolean,
|
assertBoolean,
|
||||||
assertDate,
|
assertDate,
|
||||||
assertEnumValue,
|
assertEnumValue,
|
||||||
assertNonEmptyString,
|
assertNonEmptyString,
|
||||||
assertNumber,
|
assertNumber,
|
||||||
assertOptionalStringOrNull,
|
assertOptionalStringOrNull,
|
||||||
} from '../schema/TypeOrmPaymentsSchemaGuards';
|
} from '../schema/TypeOrmPaymentsSchemaGuards';
|
||||||
|
|
||||||
export class PaymentsMembershipFeeOrmMapper {
|
export class PaymentsMembershipFeeOrmMapper {
|
||||||
|
|||||||
@@ -1,18 +1,18 @@
|
|||||||
import type { Payment } from '@core/payments/domain/entities/Payment';
|
import type { Payment } from '@core/payments/domain/entities/Payment';
|
||||||
import {
|
import {
|
||||||
Payment as PaymentFactory,
|
PayerType,
|
||||||
PaymentStatus,
|
Payment as PaymentFactory,
|
||||||
PaymentType,
|
PaymentStatus,
|
||||||
PayerType,
|
PaymentType,
|
||||||
} from '@core/payments/domain/entities/Payment';
|
} from '@core/payments/domain/entities/Payment';
|
||||||
|
|
||||||
import { PaymentsPaymentOrmEntity } from '../entities/PaymentsPaymentOrmEntity';
|
import { PaymentsPaymentOrmEntity } from '../entities/PaymentsPaymentOrmEntity';
|
||||||
import {
|
import {
|
||||||
assertDate,
|
assertDate,
|
||||||
assertEnumValue,
|
assertEnumValue,
|
||||||
assertNonEmptyString,
|
assertNonEmptyString,
|
||||||
assertNumber,
|
assertNumber,
|
||||||
assertOptionalStringOrNull,
|
assertOptionalStringOrNull,
|
||||||
} from '../schema/TypeOrmPaymentsSchemaGuards';
|
} from '../schema/TypeOrmPaymentsSchemaGuards';
|
||||||
|
|
||||||
export class PaymentsPaymentOrmMapper {
|
export class PaymentsPaymentOrmMapper {
|
||||||
|
|||||||
@@ -3,14 +3,14 @@ import { Prize as PrizeFactory, PrizeType } from '@core/payments/domain/entities
|
|||||||
|
|
||||||
import { PaymentsPrizeOrmEntity } from '../entities/PaymentsPrizeOrmEntity';
|
import { PaymentsPrizeOrmEntity } from '../entities/PaymentsPrizeOrmEntity';
|
||||||
import {
|
import {
|
||||||
assertBoolean,
|
assertBoolean,
|
||||||
assertDate,
|
assertDate,
|
||||||
assertEnumValue,
|
assertEnumValue,
|
||||||
assertInteger,
|
assertInteger,
|
||||||
assertNonEmptyString,
|
assertNonEmptyString,
|
||||||
assertNumber,
|
assertNumber,
|
||||||
assertOptionalDate,
|
assertOptionalDate,
|
||||||
assertOptionalStringOrNull,
|
assertOptionalStringOrNull,
|
||||||
} from '../schema/TypeOrmPaymentsSchemaGuards';
|
} from '../schema/TypeOrmPaymentsSchemaGuards';
|
||||||
|
|
||||||
export class PaymentsPrizeOrmMapper {
|
export class PaymentsPrizeOrmMapper {
|
||||||
|
|||||||
@@ -2,8 +2,8 @@ import { describe, expect, it } from 'vitest';
|
|||||||
|
|
||||||
import { TransactionType } from '@core/payments/domain/entities/Wallet';
|
import { TransactionType } from '@core/payments/domain/entities/Wallet';
|
||||||
|
|
||||||
import { TypeOrmPaymentsSchemaError } from '../errors/TypeOrmPaymentsSchemaError';
|
|
||||||
import { PaymentsWalletOrmEntity } from '../entities/PaymentsWalletOrmEntity';
|
import { PaymentsWalletOrmEntity } from '../entities/PaymentsWalletOrmEntity';
|
||||||
|
import { TypeOrmPaymentsSchemaError } from '../errors/TypeOrmPaymentsSchemaError';
|
||||||
import { PaymentsWalletOrmMapper } from './PaymentsWalletOrmMapper';
|
import { PaymentsWalletOrmMapper } from './PaymentsWalletOrmMapper';
|
||||||
|
|
||||||
describe('PaymentsWalletOrmMapper', () => {
|
describe('PaymentsWalletOrmMapper', () => {
|
||||||
|
|||||||
@@ -1,14 +1,14 @@
|
|||||||
import type { Wallet, Transaction } from '@core/payments/domain/entities/Wallet';
|
import type { Transaction, Wallet } from '@core/payments/domain/entities/Wallet';
|
||||||
import { ReferenceType, Transaction as TransactionFactory, TransactionType, Wallet as WalletFactory } from '@core/payments/domain/entities/Wallet';
|
import { ReferenceType, Transaction as TransactionFactory, TransactionType, Wallet as WalletFactory } from '@core/payments/domain/entities/Wallet';
|
||||||
|
|
||||||
import { PaymentsTransactionOrmEntity } from '../entities/PaymentsTransactionOrmEntity';
|
import { PaymentsTransactionOrmEntity } from '../entities/PaymentsTransactionOrmEntity';
|
||||||
import { PaymentsWalletOrmEntity } from '../entities/PaymentsWalletOrmEntity';
|
import { PaymentsWalletOrmEntity } from '../entities/PaymentsWalletOrmEntity';
|
||||||
import {
|
import {
|
||||||
assertDate,
|
assertDate,
|
||||||
assertEnumValue,
|
assertEnumValue,
|
||||||
assertNonEmptyString,
|
assertNonEmptyString,
|
||||||
assertNumber,
|
assertNumber,
|
||||||
assertOptionalStringOrNull,
|
assertOptionalStringOrNull,
|
||||||
} from '../schema/TypeOrmPaymentsSchemaGuards';
|
} from '../schema/TypeOrmPaymentsSchemaGuards';
|
||||||
|
|
||||||
export class PaymentsWalletOrmMapper {
|
export class PaymentsWalletOrmMapper {
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import type { DataSource } from 'typeorm';
|
import type { DataSource } from 'typeorm';
|
||||||
|
|
||||||
import type { MemberPaymentRepository, IMembershipFeeRepository } from '@core/payments/domain/repositories/MembershipFeeRepository';
|
|
||||||
import type { MemberPayment } from '@core/payments/domain/entities/MemberPayment';
|
import type { MemberPayment } from '@core/payments/domain/entities/MemberPayment';
|
||||||
import type { MembershipFee } from '@core/payments/domain/entities/MembershipFee';
|
import type { MembershipFee } from '@core/payments/domain/entities/MembershipFee';
|
||||||
|
import type { IMembershipFeeRepository, MemberPaymentRepository } from '@core/payments/domain/repositories/MembershipFeeRepository';
|
||||||
|
|
||||||
import { PaymentsMemberPaymentOrmEntity } from '../entities/PaymentsMemberPaymentOrmEntity';
|
import { PaymentsMemberPaymentOrmEntity } from '../entities/PaymentsMemberPaymentOrmEntity';
|
||||||
import { PaymentsMembershipFeeOrmEntity } from '../entities/PaymentsMembershipFeeOrmEntity';
|
import { PaymentsMembershipFeeOrmEntity } from '../entities/PaymentsMembershipFeeOrmEntity';
|
||||||
|
|||||||
@@ -2,8 +2,8 @@ import { describe, expect, it } from 'vitest';
|
|||||||
|
|
||||||
import type { DataSource } from 'typeorm';
|
import type { DataSource } from 'typeorm';
|
||||||
|
|
||||||
import { TypeOrmPaymentRepository } from './TypeOrmPaymentRepository';
|
|
||||||
import { PaymentsPaymentOrmMapper } from '../mappers/PaymentsPaymentOrmMapper';
|
import { PaymentsPaymentOrmMapper } from '../mappers/PaymentsPaymentOrmMapper';
|
||||||
|
import { TypeOrmPaymentRepository } from './TypeOrmPaymentRepository';
|
||||||
|
|
||||||
describe('TypeOrmPaymentRepository', () => {
|
describe('TypeOrmPaymentRepository', () => {
|
||||||
it('constructor requires injected mapper (no internal mapper instantiation)', () => {
|
it('constructor requires injected mapper (no internal mapper instantiation)', () => {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import type { DataSource } from 'typeorm';
|
import type { DataSource } from 'typeorm';
|
||||||
|
|
||||||
import type { PaymentRepository } from '@core/payments/domain/repositories/PaymentRepository';
|
|
||||||
import type { Payment, PaymentType } from '@core/payments/domain/entities/Payment';
|
import type { Payment, PaymentType } from '@core/payments/domain/entities/Payment';
|
||||||
|
import type { PaymentRepository } from '@core/payments/domain/repositories/PaymentRepository';
|
||||||
|
|
||||||
import { PaymentsPaymentOrmEntity } from '../entities/PaymentsPaymentOrmEntity';
|
import { PaymentsPaymentOrmEntity } from '../entities/PaymentsPaymentOrmEntity';
|
||||||
import { PaymentsPaymentOrmMapper } from '../mappers/PaymentsPaymentOrmMapper';
|
import { PaymentsPaymentOrmMapper } from '../mappers/PaymentsPaymentOrmMapper';
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import type { DataSource } from 'typeorm';
|
import type { DataSource } from 'typeorm';
|
||||||
|
|
||||||
import type { PrizeRepository } from '@core/payments/domain/repositories/PrizeRepository';
|
|
||||||
import type { Prize } from '@core/payments/domain/entities/Prize';
|
import type { Prize } from '@core/payments/domain/entities/Prize';
|
||||||
|
import type { PrizeRepository } from '@core/payments/domain/repositories/PrizeRepository';
|
||||||
|
|
||||||
import { PaymentsPrizeOrmEntity } from '../entities/PaymentsPrizeOrmEntity';
|
import { PaymentsPrizeOrmEntity } from '../entities/PaymentsPrizeOrmEntity';
|
||||||
import { PaymentsPrizeOrmMapper } from '../mappers/PaymentsPrizeOrmMapper';
|
import { PaymentsPrizeOrmMapper } from '../mappers/PaymentsPrizeOrmMapper';
|
||||||
|
|||||||
@@ -2,8 +2,8 @@ import { describe, expect, it } from 'vitest';
|
|||||||
|
|
||||||
import type { DataSource } from 'typeorm';
|
import type { DataSource } from 'typeorm';
|
||||||
|
|
||||||
import { TypeOrmWalletRepository } from './TypeOrmWalletRepository';
|
|
||||||
import { PaymentsWalletOrmMapper } from '../mappers/PaymentsWalletOrmMapper';
|
import { PaymentsWalletOrmMapper } from '../mappers/PaymentsWalletOrmMapper';
|
||||||
|
import { TypeOrmWalletRepository } from './TypeOrmWalletRepository';
|
||||||
|
|
||||||
describe('TypeOrmWalletRepository', () => {
|
describe('TypeOrmWalletRepository', () => {
|
||||||
it('constructor requires injected mapper (no internal mapper instantiation)', () => {
|
it('constructor requires injected mapper (no internal mapper instantiation)', () => {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import type { DataSource } from 'typeorm';
|
import type { DataSource } from 'typeorm';
|
||||||
|
|
||||||
import type { TransactionRepository, IWalletRepository } from '@core/payments/domain/repositories/WalletRepository';
|
|
||||||
import type { Transaction, Wallet } from '@core/payments/domain/entities/Wallet';
|
import type { Transaction, Wallet } from '@core/payments/domain/entities/Wallet';
|
||||||
|
import type { TransactionRepository } from '@core/payments/domain/repositories/WalletRepository';
|
||||||
|
|
||||||
import { PaymentsTransactionOrmEntity } from '../entities/PaymentsTransactionOrmEntity';
|
import { PaymentsTransactionOrmEntity } from '../entities/PaymentsTransactionOrmEntity';
|
||||||
import { PaymentsWalletOrmEntity } from '../entities/PaymentsWalletOrmEntity';
|
import { PaymentsWalletOrmEntity } from '../entities/PaymentsWalletOrmEntity';
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { DriverRepository } from '@core/racing/domain/repositories/DriverRepository';
|
|
||||||
import { Driver } from '@core/racing/domain/entities/Driver';
|
|
||||||
import { Logger } from '@core/shared/domain';
|
|
||||||
import { MediaReference } from '@core/domain/media/MediaReference';
|
import { MediaReference } from '@core/domain/media/MediaReference';
|
||||||
|
import { Driver } from '@core/racing/domain/entities/Driver';
|
||||||
|
import { DriverRepository } from '@core/racing/domain/repositories/DriverRepository';
|
||||||
|
import { Logger } from '@core/shared/domain';
|
||||||
|
|
||||||
export class InMemoryDriverRepository implements DriverRepository {
|
export class InMemoryDriverRepository implements DriverRepository {
|
||||||
private drivers: Map<string, Driver> = new Map();
|
private drivers: Map<string, Driver> = new Map();
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { GameRepository } from '@core/racing/domain/repositories/GameRepository';
|
|
||||||
import { Game } from '@core/racing/domain/entities/Game';
|
import { Game } from '@core/racing/domain/entities/Game';
|
||||||
|
import { GameRepository } from '@core/racing/domain/repositories/GameRepository';
|
||||||
import { Logger } from '@core/shared/domain';
|
import { Logger } from '@core/shared/domain';
|
||||||
|
|
||||||
export class InMemoryGameRepository implements GameRepository {
|
export class InMemoryGameRepository implements GameRepository {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { LeagueMembershipRepository } from '@core/racing/domain/repositories/LeagueMembershipRepository';
|
|
||||||
import { LeagueMembership } from '@core/racing/domain/entities/LeagueMembership';
|
|
||||||
import { JoinRequest } from '@core/racing/domain/entities/JoinRequest';
|
import { JoinRequest } from '@core/racing/domain/entities/JoinRequest';
|
||||||
|
import { LeagueMembership } from '@core/racing/domain/entities/LeagueMembership';
|
||||||
|
import { LeagueMembershipRepository } from '@core/racing/domain/repositories/LeagueMembershipRepository';
|
||||||
import { Logger } from '@core/shared/domain';
|
import { Logger } from '@core/shared/domain';
|
||||||
|
|
||||||
export class InMemoryLeagueMembershipRepository implements LeagueMembershipRepository {
|
export class InMemoryLeagueMembershipRepository implements LeagueMembershipRepository {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { LeagueRepository } from '@core/racing/domain/repositories/LeagueRepository';
|
|
||||||
import { League } from '@core/racing/domain/entities/League';
|
|
||||||
import { Logger } from '@core/shared/domain';
|
|
||||||
import { MediaReference } from '@core/domain/media/MediaReference';
|
import { MediaReference } from '@core/domain/media/MediaReference';
|
||||||
|
import { League } from '@core/racing/domain/entities/League';
|
||||||
|
import { LeagueRepository } from '@core/racing/domain/repositories/LeagueRepository';
|
||||||
|
import { Logger } from '@core/shared/domain';
|
||||||
|
|
||||||
export class InMemoryLeagueRepository implements LeagueRepository {
|
export class InMemoryLeagueRepository implements LeagueRepository {
|
||||||
private leagues: Map<string, League> = new Map();
|
private leagues: Map<string, League> = new Map();
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { LeagueScoringConfigRepository } from '@core/racing/domain/repositories/LeagueScoringConfigRepository';
|
|
||||||
import { LeagueScoringConfig } from '@core/racing/domain/entities/LeagueScoringConfig';
|
import { LeagueScoringConfig } from '@core/racing/domain/entities/LeagueScoringConfig';
|
||||||
|
import { LeagueScoringConfigRepository } from '@core/racing/domain/repositories/LeagueScoringConfigRepository';
|
||||||
import { Logger } from '@core/shared/domain';
|
import { Logger } from '@core/shared/domain';
|
||||||
|
|
||||||
export class InMemoryLeagueScoringConfigRepository implements LeagueScoringConfigRepository {
|
export class InMemoryLeagueScoringConfigRepository implements LeagueScoringConfigRepository {
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { describe, it, expect } from 'vitest';
|
import { describe, expect, it } from 'vitest';
|
||||||
import { InMemoryLeagueScoringPresetProvider } from './InMemoryLeagueScoringPresetProvider';
|
import { InMemoryLeagueScoringPresetProvider } from './InMemoryLeagueScoringPresetProvider';
|
||||||
|
|
||||||
describe('InMemoryLeagueScoringPresetProvider', () => {
|
describe('InMemoryLeagueScoringPresetProvider', () => {
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user