Skip to content

Commit a049270

Browse files
feat: 회원의 프로젝트 목록 조회 API 구현
- 컨트롤러 로직 구현 - e2e 테스트 작성 Co-Authored-By: 조영우 <[email protected]>
1 parent 0ef0dac commit a049270

File tree

2 files changed

+37
-6
lines changed

2 files changed

+37
-6
lines changed

backend/src/project/project.controller.ts

+14-3
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,21 @@ export class ProjectController {
2626
if (!accessToken)
2727
throw new UnauthorizedException('Bearer Token is missing');
2828

29-
// access token 검증을 위한 임시 로직
30-
await this.lesserJwtService.getPayload(accessToken, 'access');
29+
const {
30+
sub: { id },
31+
} = await this.lesserJwtService.getPayload(accessToken, 'access');
32+
const member = await this.memberRepository.findById(id);
33+
if (!member) throw new Error('assert: member must be found from database');
34+
35+
const projectList = await this.projectService.getProjectList(member);
36+
const projects = projectList.map((project) => ({
37+
id: project.id,
38+
title: project.title,
39+
createdAt: project.created_at,
40+
currentSprint: null,
41+
}));
3142

32-
return { projects: projectFixtures };
43+
return { projects };
3344
}
3445

3546
@Post('/')

backend/test/project/get-project.e2e-spec.ts

+23-3
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,37 @@
11
import * as request from 'supertest';
22
import { app, createMember, memberFixture } from 'test/setup';
3-
import { projectFixtures } from 'fixtures/project-fixtures';
43

54
describe('GET /api/project', () => {
6-
it('should return 200', async () => {
5+
const projectPayloads = [
6+
{
7+
title: 'Lesser1',
8+
subject: '애자일한 프로젝트 관리 툴',
9+
},
10+
{
11+
title: 'Lesser2',
12+
subject: '애자일한 프로젝트 관리 툴',
13+
},
14+
];
15+
16+
it('should return 200, project list', async () => {
717
const { accessToken } = await createMember(memberFixture, app);
18+
for (const payload of projectPayloads) {
19+
await request(app.getHttpServer())
20+
.post('/api/project')
21+
.set('Authorization', `Bearer ${accessToken}`)
22+
.send(payload);
23+
}
824

925
const response = await request(app.getHttpServer())
1026
.get('/api/project')
1127
.set('Authorization', `Bearer ${accessToken}`);
1228

1329
expect(response.status).toBe(200);
14-
expect(response.body.projects).toEqual(projectFixtures);
30+
expect(response.body.projects).toBeDefined();
31+
const projects = response.body.projects;
32+
expect(projects.length).toBe(2);
33+
expect(projects[0].title).toBe('Lesser1');
34+
expect(projects[1].title).toBe('Lesser2');
1535
});
1636

1737
it('should return 401 (Bearer Token is missing)', async () => {

0 commit comments

Comments
 (0)