Skip to content

Commit

Permalink
Pair のリポジトリをクエリサービスに変更
Browse files Browse the repository at this point in the history
  • Loading branch information
k-kbot committed Sep 3, 2023
1 parent 2c3b5a0 commit 885d91a
Show file tree
Hide file tree
Showing 7 changed files with 25 additions and 25 deletions.
6 changes: 3 additions & 3 deletions backend/src/controller/pair/pairs.controller.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { Get, Controller } from '@nestjs/common';
import { PrismaClient } from '@prisma/client';
import { PairRepository } from '../../infra/db/repository/pair-repository';
import { PairQueryService } from '../../infra/db/query-service/pair-query-service';
import { GetPairsUsecase } from '../../usecase/pair/get-pairs-usecase';
import { GetPairsResponse } from './response/get-pairs-response';

Expand All @@ -9,8 +9,8 @@ export class PairsController {
@Get()
async getPairs(): Promise<GetPairsResponse> {
const prisma = new PrismaClient();
const pairRepository = new PairRepository(prisma);
const usecase = new GetPairsUsecase(pairRepository);
const pairQueryService = new PairQueryService(prisma);
const usecase = new GetPairsUsecase(pairQueryService);
const result = await usecase.do();
return new GetPairsResponse(result);
}
Expand Down
2 changes: 1 addition & 1 deletion backend/src/controller/pair/response/get-pairs-response.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { PairDto } from '../../../domain/repository-interface/pair-repository';
import { PairDto } from '../../../usecase/pair/query-service-interface/pair-query-service';

export class GetPairsResponse {
pairs: Pair[];
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { PairRepository } from './pair-repository';
import { PairQueryService } from './pair-query-service';
import { prisma } from '../../../../testUtils/prisma';
import { PairDto } from '../../../domain/repository-interface/pair-repository';
import { PairDto } from '../../../usecase/pair/query-service-interface/pair-query-service';

describe('PairRepository', () => {
const pairRepository = new PairRepository(prisma);
describe('PairQueryService', () => {
const pairQueryInterface = new PairQueryService(prisma);

afterEach(async () => {
// https://www.prisma.io/docs/concepts/components/prisma-client/crud#cascading-deletes-deleting-related-records
Expand Down Expand Up @@ -105,7 +105,7 @@ describe('PairRepository', () => {
});

// Act
const actual = await pairRepository.findAll();
const actual = await pairQueryInterface.findAll();

// Assert
expect(actual).toStrictEqual([
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import { PrismaClient } from '@prisma/client';
import {
IPairRepository,
IPairQueryService,
PairDto,
} from '../../../domain/repository-interface/pair-repository';
} from '../../../usecase/pair/query-service-interface/pair-query-service';

export class PairRepository implements IPairRepository {
export class PairQueryService implements IPairQueryService {
constructor(private prismaClient: PrismaClient) {}

async findAll(): Promise<PairDto[]> {
Expand Down
14 changes: 7 additions & 7 deletions backend/src/usecase/pair/get-pairs-usecase.spec.ts
Original file line number Diff line number Diff line change
@@ -1,26 +1,26 @@
import { GetPairsUsecase } from './get-pairs-usecase';
import { PairRepository } from '../../infra/db/repository/pair-repository';
import { PairQueryService } from '../../infra/db/query-service/pair-query-service';
import { PrismaClient } from '@prisma/client';

jest.mock('@prisma/client');
jest.mock('../../infra/db/repository/pair-repository');
jest.mock('../../infra/db/query-service/pair-query-service');

describe('GetPairsUsecase', () => {
let mockRepository: jest.MockedObjectDeep<PairRepository>;
let mockQueryService: jest.MockedObjectDeep<PairQueryService>;

beforeAll(() => {
const prisma = new PrismaClient();
mockRepository = jest.mocked(new PairRepository(prisma));
mockQueryService = jest.mocked(new PairQueryService(prisma));
});

describe('do', () => {
it('正常系 PairRepository.findAllを1回コールすること', async () => {
it('正常系 PairQueryService.findAllを1回コールすること', async () => {
// Act
const usecase = new GetPairsUsecase(mockRepository);
const usecase = new GetPairsUsecase(mockQueryService);
await usecase.do();

// Assert
expect(mockRepository.findAll).toHaveBeenCalledTimes(1);
expect(mockQueryService.findAll).toHaveBeenCalledTimes(1);
});
});
});
8 changes: 4 additions & 4 deletions backend/src/usecase/pair/get-pairs-usecase.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import {
IPairRepository,
IPairQueryService,
PairDto,
} from '../../domain/repository-interface/pair-repository';
} from './query-service-interface/pair-query-service';

export class GetPairsUsecase {
constructor(private pairRepository: IPairRepository) {}
constructor(private pairQueryService: IPairQueryService) {}

async do(): Promise<PairDto[]> {
return await this.pairRepository.findAll();
return await this.pairQueryService.findAll();
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { ParticipantDto } from './participant-repository';
import { ParticipantDto } from '../../../domain/repository-interface/participant-repository';

export class PairDto {
public readonly id: string;
Expand Down Expand Up @@ -26,6 +26,6 @@ export class PairDto {
}
}

export interface IPairRepository {
export interface IPairQueryService {
findAll(): Promise<PairDto[]>;
}

0 comments on commit 885d91a

Please sign in to comment.