From 8b2e85192e6c4bd6fec2a7787ec5442625315122 Mon Sep 17 00:00:00 2001 From: ChoiWheatley Date: Sun, 2 Feb 2025 16:31:07 +0900 Subject: [PATCH 1/3] feat(mock-factory): Add createMockGift --- src/tests/mock-factory.ts | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/tests/mock-factory.ts b/src/tests/mock-factory.ts index 4d76c2d..d9296bb 100644 --- a/src/tests/mock-factory.ts +++ b/src/tests/mock-factory.ts @@ -138,6 +138,24 @@ export const createMockDonation = ( } as Donation; }; +/** + * 선물 객체를 생성합니다. + */ +export const createMockGift = (overwrites?: Partial): Gift => { + const defaultGift = { + giftTitle: faker.commerce.productName(), + giftUrl: faker.internet.url(), + giftOrd: faker.number.int({ min: 1, max: 100 }), + giftOpt: faker.lorem.sentence(), + giftCont: faker.lorem.paragraph(), + } as Gift; + + return { + ...defaultGift, + ...overwrites, + } as Gift; +}; + /** * 펀딩을 생성합니다. 옵션으로 예치, 프로비전 후원, 후원을 생성할 수 있습니다. * From ee3068ed85dfefe6427ccf933d785a410a2a757a Mon Sep 17 00:00:00 2001 From: ChoiWheatley Date: Sun, 2 Feb 2025 16:31:43 +0900 Subject: [PATCH 2/3] feat(mock-factory): start modifying createMockFundingWithRelations --- src/entities/gift.entity.ts | 4 ++++ src/tests/create-mock-funding-delegate.interface.ts | 2 ++ src/tests/mock-factory.ts | 2 ++ 3 files changed, 8 insertions(+) diff --git a/src/entities/gift.entity.ts b/src/entities/gift.entity.ts index 65f9c4f..9b313ec 100644 --- a/src/entities/gift.entity.ts +++ b/src/entities/gift.entity.ts @@ -3,6 +3,7 @@ import { Entity, JoinColumn, ManyToOne, + OneToOne, PrimaryGeneratedColumn, } from 'typeorm'; import { Funding } from './funding.entity'; @@ -46,4 +47,7 @@ export class Gift implements IImageId { @ManyToOne(() => Image, (image) => image.imgId) @JoinColumn({ name: 'defaultImgId' }) defaultImgId?: number; + + @OneToOne(() => Image, (image) => image.subId) + image: Image; } diff --git a/src/tests/create-mock-funding-delegate.interface.ts b/src/tests/create-mock-funding-delegate.interface.ts index 60d7ebb..951d592 100644 --- a/src/tests/create-mock-funding-delegate.interface.ts +++ b/src/tests/create-mock-funding-delegate.interface.ts @@ -4,6 +4,7 @@ import { Donation } from "../entities/donation.entity"; import { Funding } from "../entities/funding.entity"; import { ProvisionalDonation } from "../entities/provisional-donation.entity"; import { User } from "../entities/user.entity"; +import { Gift } from "src/entities/gift.entity"; export interface CreateMockFundingWithRelationsDelegate { userRepo: Repository; @@ -11,4 +12,5 @@ export interface CreateMockFundingWithRelationsDelegate { depositRepo?: Repository; donationRepo?: Repository; provDonRepo?: Repository; + giftRepo?: Repository; } diff --git a/src/tests/mock-factory.ts b/src/tests/mock-factory.ts index d9296bb..f01fb40 100644 --- a/src/tests/mock-factory.ts +++ b/src/tests/mock-factory.ts @@ -14,6 +14,7 @@ import { Nickname } from '../util/nickname'; import { DonationService } from '../features/donation/donation.service'; import { CreateMockFundingWithRelationsDelegate } from './create-mock-funding-delegate.interface'; import { CreateMockUserDelegate } from './create-mock-user-delegate.interface'; +import { Gift } from 'src/entities/gift.entity'; const baseNick = (): string => { const nickname = new Nickname(); @@ -189,6 +190,7 @@ export const createMockFundingWithRelations = async ( deposit?: number; provDonation?: number; donation?: number; + gift?: number; }, ): Promise => { if ( From f93500ae56502fb82635a7f2a1b68d93bbb202cc Mon Sep 17 00:00:00 2001 From: ChoiWheatley Date: Sun, 2 Feb 2025 16:42:09 +0900 Subject: [PATCH 3/3] feat(mock-factory): createMockFundingWithRelations --- src/features/deposit/deposit.e2e.spec.ts | 9 ++++++++- src/tests/mock-factory.ts | 14 +++++++++++++- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/features/deposit/deposit.e2e.spec.ts b/src/features/deposit/deposit.e2e.spec.ts index 17fded0..d8e8672 100644 --- a/src/features/deposit/deposit.e2e.spec.ts +++ b/src/features/deposit/deposit.e2e.spec.ts @@ -33,6 +33,7 @@ import { TestsModule } from 'src/tests/tests.module'; import { MatchDepositUseCase } from './commands/match-deposit.usecase'; import { ProvisionalDonationPartiallyMatchedEvent } from '../donation/domain/events/provisional-donation-partially-matched.event'; import { DonationDeletedEvent } from '../donation/domain/events/donation-deleted.event'; +import { Gift } from 'src/entities/gift.entity'; describe('Deposit API E2E Test', () => { let app: INestApplication; @@ -42,6 +43,7 @@ describe('Deposit API E2E Test', () => { let depositRepo: Repository; let donationRepo: Repository; let notiRepo: Repository; + let giftRepo: Repository; let mockFunding: Funding; let mockFundingOwner: User; let mockDonor: User; @@ -64,6 +66,7 @@ describe('Deposit API E2E Test', () => { depositRepo = moduleFixture.get(getRepositoryToken(Deposit)); donationRepo = moduleFixture.get(getRepositoryToken(Donation)); notiRepo = moduleFixture.get(getRepositoryToken(Notification)); + giftRepo = moduleFixture.get(getRepositoryToken(Gift)); g2gException = moduleFixture.get(GiftogetherExceptions); eventEmitter = moduleFixture.get(EventEmitter2); testAuthBase = await moduleFixture.resolve(TestAuthBase); // REQUEST scoped provider @@ -394,11 +397,15 @@ describe('Deposit API E2E Test', () => { fundingRepo, depositRepo, donationRepo, + giftRepo, }, undefined, - { deposit: 1, donation: 1 }, + { deposit: 1, donation: 1, gift: 1 }, ); + // check if the gift is created + expect(mockFunding.gifts).toHaveLength(1); + const deposit = await depositRepo.findOne({ where: { depositId: mockFunding.donations[0].deposit.depositId }, }); diff --git a/src/tests/mock-factory.ts b/src/tests/mock-factory.ts index f01fb40..7407d85 100644 --- a/src/tests/mock-factory.ts +++ b/src/tests/mock-factory.ts @@ -148,7 +148,7 @@ export const createMockGift = (overwrites?: Partial): Gift => { giftUrl: faker.internet.url(), giftOrd: faker.number.int({ min: 1, max: 100 }), giftOpt: faker.lorem.sentence(), - giftCont: faker.lorem.paragraph(), + giftCont: faker.lorem.sentence().slice(0, 20), } as Gift; return { @@ -272,6 +272,18 @@ export const createMockFundingWithRelations = async ( ); } + // Handler optional gifts + if (delegate.giftRepo) { + const gifts = await delegate.giftRepo.save( + Array(amount?.gift ?? 1) + .fill(null) + .map(() => createMockGift()), + ); + + mockFunding.gifts = gifts; + await delegate.fundingRepo.save(mockFunding); + } + return mockFunding; };