From a0e5e827e4673706d6c6f563fa25703320786e5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=A1=B0=EB=8C=80=ED=9D=AC?= <joedaehui@ajou.ac.kr> Date: Mon, 25 Nov 2024 20:51:21 +0900 Subject: [PATCH] =?UTF-8?q?refactor:=20friend=20pagination=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD=EC=97=90=20=EB=94=B0=EB=A5=B8=20=ED=85=8C=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8=20=EC=BD=94=EB=93=9C=20=EC=88=98=EC=A0=95=20(#19)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- services/friendService.test.js | 81 ++++++++++++++++++++++------------ 1 file changed, 54 insertions(+), 27 deletions(-) diff --git a/services/friendService.test.js b/services/friendService.test.js index 02394ee..2822a25 100644 --- a/services/friendService.test.js +++ b/services/friendService.test.js @@ -143,50 +143,77 @@ describe('Friend Service', () => { }); describe('getFriendList', () => { - test('should retrieve friend list with correct pagination', async () => { + beforeEach(async () => { await friendService.sendFriendRequest(1, 2); await friendService.acceptFriendRequest(2, 1); - await friendService.sendFriendRequest(1, 3); await friendService.acceptFriendRequest(3, 1); - + // 추가 더미데이터 생성 for (let i = 4; i <= 23; i++) { - // Create dummy users await User.create({ id: i, name: `User${i}`, email: `user${i}@example.com`, }); - - // Alice랑 친구맺기 await friendService.sendFriendRequest(1, i); await friendService.acceptFriendRequest(i, 1); } - - // Alice 친구: Bob (2), Charlie (3), User4부터 User23까지 (총 22명) - const limit = 5; - const offset = 0; - const friendsPage1 = await friendService.getFriendList(1, limit, offset); - expect(friendsPage1.length).toBe(limit); - const expectedNamesPage1 = ['Bob', 'Charlie', 'User4', 'User5', 'User6']; - const receivedNamesPage1 = friendsPage1.map(friend => friend.friendInfo.name); - expectedNamesPage1.forEach(name => { - expect(receivedNamesPage1).toContain(name); + }); + + test('작은 size로 여러 페이지 조회', async () => { + const size = 10; + + // 첫 페이지 + const page1 = await friendService.getFriendList(1, { + limit: size, + offset: 0 }); - - const friendsPage2 = await friendService.getFriendList(1, limit, limit); - expect(friendsPage2.length).toBe(limit); - const expectedNamesPage2 = ['User7', 'User8', 'User9', 'User10', 'User11']; - const receivedNamesPage2 = friendsPage2.map(friend => friend.friendInfo.name); - expectedNamesPage2.forEach(name => { - expect(receivedNamesPage2).toContain(name); + expect(page1.content.length).toBe(size); + expect(page1.hasNext).toBe(true); + + // 두 번째 페이지 + const page2 = await friendService.getFriendList(1, { + limit: size, + offset: size + }); + expect(page2.content.length).toBe(size); + expect(page2.hasNext).toBe(true); + + // 마지막 페이지 + const page3 = await friendService.getFriendList(1, { + limit: size, + offset: size * 2 }); + expect(page3.content.length).toBe(2); + expect(page3.hasNext).toBe(false); }); - - test('should return empty array when user has no friends', async () => { - const friends = await friendService.getFriendList(999); // Non-existing user - expect(friends.length).toBe(0); + + test('페이지 순서 검증', async () => { + const size = 5; + const page1 = await friendService.getFriendList(1, { + limit: size, + offset: 0 + }); + const page2 = await friendService.getFriendList(1, { + limit: size, + offset: size + }); + + const names1 = page1.content.map(friend => friend.friendInfo.name); + const names2 = page2.content.map(friend => friend.friendInfo.name); + + expect(names1).toEqual(['Bob', 'Charlie', 'User4', 'User5', 'User6']); + expect(names2).toEqual(['User7', 'User8', 'User9', 'User10', 'User11']); + }); + + test('존재하지 않는 페이지 조회', async () => { + const response = await friendService.getFriendList(1, { + limit: 20, + offset: 100 + }); + expect(response.content).toHaveLength(0); + expect(response.hasNext).toBe(false); }); }); -- GitLab