@@ -3,6 +3,7 @@ import { ProjectService } from './project.service';
3
3
import { ProjectRepository } from '../project.repository' ;
4
4
import { Member } from 'src/member/entity/member.entity' ;
5
5
import { Project } from '../entity/project.entity' ;
6
+ import { ProjectToMember } from '../entity/project-member.entity' ;
6
7
7
8
describe ( 'ProjectService' , ( ) => {
8
9
let projectService : ProjectService ;
@@ -19,6 +20,8 @@ describe('ProjectService', () => {
19
20
addProjectMember : jest . fn ( ) ,
20
21
getProjectList : jest . fn ( ) ,
21
22
getProject : jest . fn ( ) ,
23
+ getProjectByLinkId : jest . fn ( ) ,
24
+ getProjectToMember : jest . fn ( ) ,
22
25
} ,
23
26
} ,
24
27
] ,
@@ -81,4 +84,50 @@ describe('ProjectService', () => {
81
84
expect ( result ) . toEqual ( project ) ;
82
85
} ) ;
83
86
} ) ;
87
+
88
+ describe ( 'Add Member' , ( ) => {
89
+ const projectLinkId = 'inviteUuid' ;
90
+ const project = Project . of ( 'title' , 'subject' ) ;
91
+ it ( 'should return void when given member, title, subject' , async ( ) => {
92
+ jest
93
+ . spyOn ( projectRepository , 'getProjectByLinkId' )
94
+ . mockResolvedValue ( project ) ;
95
+ jest
96
+ . spyOn ( projectRepository , 'getProjectToMember' )
97
+ . mockResolvedValue ( null ) ;
98
+
99
+ await projectService . addMember ( projectLinkId , member ) ;
100
+
101
+ expect ( projectRepository . getProjectByLinkId ) . toHaveBeenCalledWith (
102
+ projectLinkId ,
103
+ ) ;
104
+ expect ( projectRepository . addProjectMember ) . toHaveBeenCalledWith (
105
+ project ,
106
+ member ,
107
+ ) ;
108
+ } ) ;
109
+
110
+ it ( 'should throw when already joined member' , async ( ) => {
111
+ jest
112
+ . spyOn ( projectRepository , 'getProjectByLinkId' )
113
+ . mockResolvedValue ( project ) ;
114
+ jest
115
+ . spyOn ( projectRepository , 'getProjectToMember' )
116
+ . mockResolvedValue ( ProjectToMember . of ( project , member ) ) ;
117
+
118
+ await expect (
119
+ async ( ) => await projectService . addMember ( projectLinkId , member ) ,
120
+ ) . rejects . toThrow ( 'already joined member' ) ;
121
+ } ) ;
122
+
123
+ it ( 'should throw when invalid project link id' , async ( ) => {
124
+ jest
125
+ . spyOn ( projectRepository , 'getProjectByLinkId' )
126
+ . mockResolvedValue ( null ) ;
127
+
128
+ await expect (
129
+ async ( ) => await projectService . addMember ( projectLinkId , member ) ,
130
+ ) . rejects . toThrow ( 'project link id not found' ) ;
131
+ } ) ;
132
+ } ) ;
84
133
} ) ;
0 commit comments