Skip to content

Commit a56ce92

Browse files
committed
feature: total Stats repo 계층 테스트 코드 추가
1 parent 229396e commit a56ce92

File tree

8 files changed

+19
-28
lines changed

8 files changed

+19
-28
lines changed

src/controllers/totalStats.controller.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import logger from '@/configs/logger.config';
21
import { NextFunction, Request, RequestHandler, Response } from 'express';
3-
import { TotalStatsService } from '@/services/totalStats.service';
4-
import { GetTotalStatsQuery, TotalStatsResponseDto } from '@/types';
2+
import logger from '@/configs/logger.config';
53
import { BadRequestError } from '@/exception';
4+
import { GetTotalStatsQuery, TotalStatsResponseDto } from '@/types';
5+
import { TotalStatsService } from '@/services/totalStats.service';
66

77

88
export class TotalStatsController {

src/repositories/__test__/integration/leaderboard.repo.integration.test.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,7 @@
66

77
import logger from '@/configs/logger.config';
88
import dotenv from 'dotenv';
9-
import pg from 'pg';
10-
import { Pool } from 'pg';
9+
import pg, { Pool } from 'pg';
1110
import { LeaderboardRepository } from '@/repositories/leaderboard.repository';
1211
import { PostLeaderboardSortType, UserLeaderboardSortType } from '@/types';
1312

src/repositories/__test__/integration/post.repo.integration.test.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
import dotenv from 'dotenv';
2-
import { Pool } from 'pg';
3-
import pg from 'pg';
4-
import { PostRepository } from '../post.repository';
2+
import pg, { Pool } from 'pg';
53
import logger from '@/configs/logger.config';
4+
import { PostRepository } from '@/repositories/post.repository';
65
import { getCurrentKSTDateString, getKSTDateStringWithOffset } from '@/utils/date.util';
76

87

src/repositories/__test__/integration/qr.repo.integration.test.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
import dotenv from 'dotenv';
2-
import { Pool } from 'pg';
3-
import pg from 'pg';
2+
import pg, { Pool } from 'pg';
3+
import logger from '@/configs/logger.config';
44
import { UserRepository } from '@/repositories/user.repository';
55
import { generateRandomToken } from '@/utils/generateRandomToken.util';
6-
import logger from '@/configs/logger.config';
76

87
dotenv.config();
98
jest.setTimeout(5000);

src/repositories/__test__/qr.repo.test.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,15 @@ import { UserRepository } from '@/repositories/user.repository';
22
import { DBError } from '@/exception';
33
import { Pool } from 'pg';
44
import { QRLoginToken } from "@/types/models/QRLoginToken.type";
5+
import { mockPool } from './fixture';
56

6-
const mockPool: Partial<Pool> = {
7-
query: jest.fn(),
8-
};
7+
jest.mock('pg');
98

109
describe('UserRepository - QR Login Token', () => {
1110
let repo: UserRepository;
1211

1312
beforeEach(() => {
14-
repo = new UserRepository(mockPool as Pool);
13+
repo = new UserRepository(mockPool as unknown as Pool);
1514
});
1615

1716
afterEach(() => {

src/repositories/__test__/totalStats.repo.test.ts

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1-
import { Pool} from 'pg';
1+
import { Pool } from 'pg';
22
import { TotalStatsRepository } from '@/repositories/totalStats.repository';
33
import { DBError } from '@/exception';
44
import { getKSTDateStringWithOffset } from '@/utils/date.util';
5-
import { createMockQueryResult } from './fixture';
5+
import { mockPool, createMockQueryResult } from './fixture';
6+
import { TotalStatsType } from '@/types';
67

78
// Mock dependencies
89
jest.mock('@/configs/logger.config', () => ({
@@ -15,17 +16,12 @@ jest.mock('@/utils/date.util', () => ({
1516

1617
describe('TotalStatsRepository', () => {
1718
let repository: TotalStatsRepository;
18-
let mockPool: jest.Mocked<Pool>;
1919
let mockGetKSTDateStringWithOffset: jest.MockedFunction<typeof getKSTDateStringWithOffset>;
2020

2121
beforeEach(() => {
22-
mockPool = {
23-
query: jest.fn(),
24-
} as unknown as jest.Mocked<Pool>;
25-
2622
mockGetKSTDateStringWithOffset = getKSTDateStringWithOffset as jest.MockedFunction<typeof getKSTDateStringWithOffset>;
27-
28-
repository = new TotalStatsRepository(mockPool);
23+
24+
repository = new TotalStatsRepository(mockPool as unknown as Pool);
2925
jest.clearAllMocks();
3026
});
3127

@@ -148,7 +144,7 @@ describe('TotalStatsRepository', () => {
148144
it('지원되지 않는 통계 타입이 전달되면 DBError를 던져야 한다', async () => {
149145
// When & Then
150146
await expect(
151-
repository.getTotalStats(userId, period, 'invalid' as any)
147+
repository.getTotalStats(userId, period, 'invalid' as unknown as TotalStatsType)
152148
).rejects.toThrow(new DBError('지원되지 않는 통계 타입입니다.'));
153149

154150
expect(mockPool.query).not.toHaveBeenCalled();

src/repositories/totalStats.repository.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import { Pool } from 'pg';
22
import logger from '@/configs/logger.config';
33
import { DBError } from '@/exception';
4-
import { getKSTDateStringWithOffset } from '@/utils/date.util';
54
import { TotalStatsType } from '@/types';
5+
import { getKSTDateStringWithOffset } from '@/utils/date.util';
66

77
interface RawStatsResult {
88
date: string;

src/services/totalStats.service.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import logger from '@/configs/logger.config';
2+
import { TotalStatsPeriod, TotalStatsType, TotalStatsItem } from '@/types';
23
import { TotalStatsRepository } from '@/repositories/totalStats.repository';
3-
import { TotalStatsPeriod, TotalStatsType } from '@/types';
4-
import { TotalStatsItem } from '@/types';
54

65
export class TotalStatsService {
76
constructor(private totalStatsRepo: TotalStatsRepository) { }

0 commit comments

Comments
 (0)