Skip to content

Commit

Permalink
스펙 변경에 따른 테스트 코드 수정 - 헤더 추가, user mock 추가
Browse files Browse the repository at this point in the history
  • Loading branch information
seohyun0120 committed Jul 14, 2024
1 parent 244600c commit 97d892c
Show file tree
Hide file tree
Showing 6 changed files with 53 additions and 18 deletions.
1 change: 1 addition & 0 deletions get-s3.js
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
const AWS = require('aws-sdk')
7 changes: 6 additions & 1 deletion test/meme/delete-meme.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,10 @@ import request from 'supertest';
import app from '../../src/app';
import { KeywordModel } from '../../src/model/keyword';
import { MemeModel } from '../../src/model/meme';
import { UserModel } from '../../src/model/user';
import { createMockData as createKeywordMockData } from '../util/keyword.mock';
import { createMockData } from '../util/meme.mock';
import { mockUser } from '../util/user.mock';

let testMemeId = '';
let keywordIds = [];
Expand All @@ -20,18 +22,21 @@ describe("[DELETE] '/api/meme/:memeId' ", () => {
await MemeModel.insertMany(mockDatas);
memeList = await MemeModel.find({});
testMemeId = memeList[0]._id.toString();

await UserModel.insertMany(mockUser);
});

afterAll(async () => {
await MemeModel.deleteMany({});
await UserModel.deleteMany({});
});

it('should delete a meme', async () => {
let response = await request(app).delete(`/api/meme/${testMemeId}`);
expect(response.statusCode).toBe(200);
expect(response.body.data).toBeTruthy();

response = await request(app).get(`/api/meme/list`);
response = await request(app).get(`/api/meme/list`).set('x-device-id', 'deviceId');
expect(response.statusCode).toBe(200);
expect(response.body.data.memeList.length).toBe(1);
});
Expand Down
19 changes: 15 additions & 4 deletions test/meme/get-meme-list.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,10 @@ import request from 'supertest';
import app from '../../src/app';
import { KeywordModel } from '../../src/model/keyword';
import { MemeModel } from '../../src/model/meme';
import { UserModel } from '../../src/model/user';
import { createMockData as createKeywordMockData } from '../util/keyword.mock';
import { createMockData } from '../util/meme.mock';
import { mockUser } from '../util/user.mock';

const totalCount = 15;
let keywordIds = [];
Expand All @@ -19,14 +21,17 @@ describe("[GET] '/api/meme/list' ", () => {

const memeMockDatas = createMockData(totalCount, 1, keywordIds);
await MemeModel.insertMany(memeMockDatas);

await UserModel.insertMany(mockUser);
});

afterAll(async () => {
await MemeModel.deleteMany({});
await UserModel.deleteMany({});
});

it('should return the default paginated list of memes', async () => {
const response = await request(app).get('/api/meme/list');
const response = await request(app).get('/api/meme/list').set('x-device-id', 'deviceId');
expect(response.statusCode).toBe(200);
expect(response.body.data.pagination.total).toBe(totalCount);
expect(response.body.data.pagination.page).toBe(1);
Expand All @@ -42,7 +47,9 @@ describe("[GET] '/api/meme/list' ", () => {
it('should return paginated list of memes for specific page and size', async () => {
const size = 5;
const page = 1;
const response = await request(app).get(`/api/meme/list?page=${page}&size=${size}`);
const response = await request(app)
.get(`/api/meme/list?page=${page}&size=${size}`)
.set('x-device-id', 'deviceId');

expect(response.statusCode).toBe(200);
expect(response.body.data.pagination.total).toBe(totalCount);
Expand All @@ -54,15 +61,19 @@ describe("[GET] '/api/meme/list' ", () => {
it('should return an error for invalid page', async () => {
const size = 5;
const page = -1;
const response = await request(app).get(`/api/meme/list?page=${page}&size=${size}`);
const response = await request(app)
.get(`/api/meme/list?page=${page}&size=${size}`)
.set('x-device-id', 'deviceId');

expect(response.statusCode).toBe(400);
});

it('should return an error for invalid size', async () => {
const size = -1;
const page = 3;
const response = await request(app).get(`/api/meme/list?page=${page}&size=${size}`);
const response = await request(app)
.get(`/api/meme/list?page=${page}&size=${size}`)
.set('x-device-id', 'deviceId');

expect(response.statusCode).toBe(400);
});
Expand Down
13 changes: 11 additions & 2 deletions test/meme/get-meme.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,10 @@ import request from 'supertest';
import app from '../../src/app';
import { KeywordModel } from '../../src/model/keyword';
import { MemeModel } from '../../src/model/meme';
import { UserModel } from '../../src/model/user';
import { createMockData as createKeywordMockData } from '../util/keyword.mock';
import { createMockData as createMemeMockData } from '../util/meme.mock';
import { mockUser } from '../util/user.mock';

let testMemeId = '';
let keywordIds = [];
Expand All @@ -23,21 +25,28 @@ describe("[GET] '/api/meme/:memeId' ", () => {

memeList = await MemeModel.find({});
testMemeId = memeList[0]._id.toString();

await UserModel.insertMany(mockUser);
});

afterAll(async () => {
await MemeModel.deleteMany({});
await UserModel.deleteMany({});
});

it('should get a meme', async () => {
const response = await request(app).get(`/api/meme/${testMemeId}`);
const response = await request(app)
.get(`/api/meme/${testMemeId}`)
.set('x-device-id', 'deviceId');
expect(response.body.data._id).toBe(testMemeId);
expect(response.body.data).toHaveProperty('keywords');
expect(response.body.data.isTodayMeme).toBeFalsy();
});

it('should not get a meme with nonexisting id', async () => {
const response = await request(app).get(`/api/meme/nonexistingId`);
const response = await request(app)
.get(`/api/meme/nonexistingId`)
.set('x-device-id', 'deviceId');
expect(response.statusCode).toBe(400);
});
});
22 changes: 13 additions & 9 deletions test/meme/get-recommend-meme-list.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,31 +3,35 @@ import request from 'supertest';
import app from '../../src/app';
import { KeywordModel } from '../../src/model/keyword';
import { MemeModel } from '../../src/model/meme';
import { UserModel } from '../../src/model/user';
import { createMockData as createKeywordMockData } from '../util/keyword.mock';
import { createMockData } from '../util/meme.mock';
import { mockUser } from '../util/user.mock';

const totalCount = 10;
let keywordIds = [];
let keywords = [];

describe("[GET] '/api/meme/recommend-memes' ", () => {
beforeEach(async () => {
const keywordMockDatas = createKeywordMockData(5);
const createdKeywords = await KeywordModel.insertMany(keywordMockDatas);
keywordIds = createdKeywords.map((k) => k._id);
keywords = createdKeywords.map((k) => k.name);
await UserModel.insertMany(mockUser);
});

afterEach(async () => {
await MemeModel.deleteMany({});
await KeywordModel.deleteMany({});
await UserModel.deleteMany({});
});

it('should return list of recommend-memes - default size: 5', async () => {
const mockDatas = createMockData(totalCount, 5, keywordIds);
await MemeModel.insertMany(mockDatas);

const response = await request(app).get('/api/meme/recommend-memes');
const response = await request(app)
.get('/api/meme/recommend-memes')
.set('x-device-id', 'deviceId');
expect(response.statusCode).toBe(200);
expect(response.body.data.length).toBe(5);
});
Expand All @@ -37,9 +41,9 @@ describe("[GET] '/api/meme/recommend-memes' ", () => {
const mockDatas = createMockData(totalCount, customizedTodayMemeCount, keywordIds);
await MemeModel.insertMany(mockDatas);

const response = await request(app).get(
`/api/meme/recommend-memes?size=${customizedTodayMemeCount}`,
);
const response = await request(app)
.get(`/api/meme/recommend-memes?size=${customizedTodayMemeCount}`)
.set('x-device-id', 'deviceId');

expect(response.statusCode).toBe(200);
expect(response.body.data.length).toBe(customizedTodayMemeCount);
Expand All @@ -50,9 +54,9 @@ describe("[GET] '/api/meme/recommend-memes' ", () => {
const mockDatas = createMockData(totalCount, customizedTodayMemeCount, keywordIds);
await MemeModel.insertMany(mockDatas);

const response = await request(app).get(
`/api/meme/recommend-memes?size=${customizedTodayMemeCount}`,
);
const response = await request(app)
.get(`/api/meme/recommend-memes?size=${customizedTodayMemeCount}`)
.set('x-device-id', 'deviceId');

expect(response.statusCode).toBe(400);
});
Expand Down
9 changes: 7 additions & 2 deletions test/meme/patch-meme.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,10 @@ import request from 'supertest';
import app from '../../src/app';
import { KeywordModel } from '../../src/model/keyword';
import { IMemeUpdatePayload, MemeModel } from '../../src/model/meme';
import { UserModel } from '../../src/model/user';
import { createMockData as createKeywordMockData } from '../util/keyword.mock';
import { createMockData } from '../util/meme.mock';
import { mockUser } from '../util/user.mock';

let memeList = [];
let keywordIds = [];
Expand All @@ -22,10 +24,13 @@ describe("[PATCH] '/api/meme/:memeId' ", () => {
await MemeModel.insertMany(mockDatas);
memeList = await MemeModel.find({});
testMemeId = memeList[0]._id.toString();

await UserModel.insertMany(mockUser);
});

afterAll(async () => {
await MemeModel.deleteMany({});
await UserModel.deleteMany({});
});

it('should patch a meme', async () => {
Expand All @@ -37,9 +42,9 @@ describe("[PATCH] '/api/meme/:memeId' ", () => {
expect(response.statusCode).toBe(200);
expect(response.body.data._id).toBe(memeList[0]._id.toString());

response = await request(app).get(`/api/meme/${testMemeId}`);
response = await request(app).get(`/api/meme/${testMemeId}`).set('x-device-id', 'deviceId');
expect(response.body.data._id).toBe(memeList[0]._id.toString());
expect(response.body.data.keywords).toEqual([keywords[1]]);
expect(response.body.data.keywords).toHaveProperty({ _id: keywordIds[1], name: keywords[1] });
expect(response.body.data.isTodayMeme).toBeTruthy();
});
});

0 comments on commit 97d892c

Please sign in to comment.