@@ -11,13 +11,16 @@ import { PageNotFoundException } from '../exception/page.exception';
1111import { WorkspaceRepository } from '../workspace/workspace.repository' ;
1212import { WorkspaceNotFoundException } from '../exception/workspace.exception' ;
1313const RED_LOCK_TOKEN = 'RED_LOCK' ;
14+ type RedisLock = {
15+ acquire ( ) : Promise < { release : Function } > ;
16+ } ;
1417
1518describe ( 'PageService' , ( ) => {
1619 let service : PageService ;
1720 let pageRepository : PageRepository ;
1821 let nodeRepository : NodeRepository ;
1922 let workspaceRepository : WorkspaceRepository ;
20-
23+ let redisLock : RedisLock ;
2124 beforeEach ( async ( ) => {
2225 const module : TestingModule = await Test . createTestingModule ( {
2326 providers : [
@@ -60,10 +63,15 @@ describe('PageService', () => {
6063 pageRepository = module . get < PageRepository > ( PageRepository ) ;
6164 nodeRepository = module . get < NodeRepository > ( NodeRepository ) ;
6265 workspaceRepository = module . get < WorkspaceRepository > ( WorkspaceRepository ) ;
66+ redisLock = module . get < RedisLock > ( RED_LOCK_TOKEN ) ;
6367 } ) ;
6468
6569 it ( '서비스 클래스가 정상적으로 인스턴스화된다.' , ( ) => {
6670 expect ( service ) . toBeDefined ( ) ;
71+ expect ( pageRepository ) . toBeDefined ( ) ;
72+ expect ( nodeRepository ) . toBeDefined ( ) ;
73+ expect ( workspaceRepository ) . toBeDefined ( ) ;
74+ expect ( redisLock ) . toBeDefined ( ) ;
6775 } ) ;
6876
6977 describe ( 'createPage' , ( ) => {
@@ -154,7 +162,9 @@ describe('PageService', () => {
154162 . spyOn ( pageRepository , 'delete' )
155163 . mockResolvedValue ( { affected : true } as any ) ;
156164 jest . spyOn ( pageRepository , 'findOneBy' ) . mockResolvedValue ( new Page ( ) ) ;
157-
165+ jest . spyOn ( redisLock , 'acquire' ) . mockResolvedValue ( {
166+ release : jest . fn ( ) ,
167+ } ) ;
158168 await service . deletePage ( 1 ) ;
159169
160170 expect ( pageRepository . delete ) . toHaveBeenCalledWith ( 1 ) ;
@@ -164,7 +174,9 @@ describe('PageService', () => {
164174 jest
165175 . spyOn ( pageRepository , 'delete' )
166176 . mockResolvedValue ( { affected : false } as any ) ;
167-
177+ jest . spyOn ( redisLock , 'acquire' ) . mockResolvedValue ( {
178+ release : jest . fn ( ) ,
179+ } ) ;
168180 await expect ( service . deletePage ( 1 ) ) . rejects . toThrow (
169181 PageNotFoundException ,
170182 ) ;
@@ -202,10 +214,11 @@ describe('PageService', () => {
202214 emoji : '📝' ,
203215 workspace : null ,
204216 } ;
205-
206217 jest . spyOn ( pageRepository , 'findOneBy' ) . mockResolvedValue ( originPage ) ;
207218 jest . spyOn ( pageRepository , 'save' ) . mockResolvedValue ( newPage ) ;
208-
219+ jest . spyOn ( redisLock , 'acquire' ) . mockResolvedValue ( {
220+ release : jest . fn ( ) ,
221+ } ) ;
209222 const result = await service . updatePage ( 1 , dto ) ;
210223
211224 expect ( result ) . toEqual ( newPage ) ;
@@ -219,7 +232,9 @@ describe('PageService', () => {
219232 jest
220233 . spyOn ( nodeRepository , 'findOneBy' )
221234 . mockResolvedValue ( { affected : false } as any ) ;
222-
235+ jest . spyOn ( redisLock , 'acquire' ) . mockResolvedValue ( {
236+ release : jest . fn ( ) ,
237+ } ) ;
223238 await expect ( service . updatePage ( 1 , new UpdatePageDto ( ) ) ) . rejects . toThrow (
224239 PageNotFoundException ,
225240 ) ;
0 commit comments