88import com .memory .domain .memory .Memory ;
99import com .memory .domain .memory .MemoryType ;
1010import com .memory .domain .memory .repository .MemoryRepository ;
11+ import com .memory .domain .relationship .Relationship ;
12+ import com .memory .domain .relationship .RelationshipStatus ;
13+ import com .memory .domain .relationship .repository .RelationshipRepository ;
1114import com .memory .dto .memory .MemoryRequest ;
1215import com .memory .dto .memory .response .MemoryResponse ;
1316import com .memory .exception .customException .NotFoundException ;
@@ -48,6 +51,9 @@ class MemoryServiceTest {
4851 @ Mock
4952 private FileRepository fileRepository ;
5053
54+ @ Mock
55+ private RelationshipRepository relationshipRepository ;
56+
5157 @ InjectMocks
5258 private MemoryService memoryService ;
5359
@@ -278,7 +284,9 @@ void findMemoriesByMemberSuccessFirstPage() {
278284 List <Memory > memories = Arrays .asList (memory , memory2 );
279285
280286 when (memberRepository .findMemberById (memberId )).thenReturn (Optional .of (member ));
281- when (memoryRepository .findByMemberAndMemoryType (member , MemoryType .PRIVATE , size ))
287+ when (relationshipRepository .findByMemberAndRelationshipStatus (member , RelationshipStatus .ACCEPTED ))
288+ .thenReturn (Collections .emptyList ());
289+ when (memoryRepository .findByMemberAndMemoryType (member , Collections .emptyList (), MemoryType .PRIVATE , size ))
282290 .thenReturn (memories );
283291
284292 // When
@@ -291,7 +299,8 @@ void findMemoriesByMemberSuccessFirstPage() {
291299 assertEquals (2L , responses .get (1 ).id ());
292300
293301 verify (memberRepository ).findMemberById (memberId );
294- verify (memoryRepository ).findByMemberAndMemoryType (member , MemoryType .PRIVATE , size );
302+ verify (relationshipRepository ).findByMemberAndRelationshipStatus (member , RelationshipStatus .ACCEPTED );
303+ verify (memoryRepository ).findByMemberAndMemoryType (member , Collections .emptyList (), MemoryType .PRIVATE , size );
295304 }
296305
297306 @ Test
@@ -303,7 +312,9 @@ void findMemoriesByMemberSuccessNextPage() {
303312 List <Memory > memories = Collections .singletonList (memory );
304313
305314 when (memberRepository .findMemberById (memberId )).thenReturn (Optional .of (member ));
306- when (memoryRepository .findByMemberAndMemoryType (member , MemoryType .PRIVATE , lastMemoryId , size ))
315+ when (relationshipRepository .findByMemberAndRelationshipStatus (member , RelationshipStatus .ACCEPTED ))
316+ .thenReturn (Collections .emptyList ());
317+ when (memoryRepository .findByMemberAndMemoryType (member , Collections .emptyList (), MemoryType .PRIVATE , lastMemoryId , size ))
307318 .thenReturn (memories );
308319
309320 // When
@@ -315,7 +326,8 @@ void findMemoriesByMemberSuccessNextPage() {
315326 assertEquals (memoryId , responses .get (0 ).id ());
316327
317328 verify (memberRepository ).findMemberById (memberId );
318- verify (memoryRepository ).findByMemberAndMemoryType (member , MemoryType .PRIVATE , lastMemoryId , size );
329+ verify (relationshipRepository ).findByMemberAndRelationshipStatus (member , RelationshipStatus .ACCEPTED );
330+ verify (memoryRepository ).findByMemberAndMemoryType (member , Collections .emptyList (), MemoryType .PRIVATE , lastMemoryId , size );
319331 }
320332
321333 @ Test
@@ -331,7 +343,8 @@ void findMemoriesByMemberFailMemberNotFound() {
331343
332344 assertEquals ("회원을 찾을 수 없습니다." , exception .getMessage ());
333345 verify (memberRepository ).findMemberById (memberId );
334- verify (memoryRepository , never ()).findByMemberAndMemoryType (any (), any (), anyInt ());
346+ verify (relationshipRepository , never ()).findByMemberAndRelationshipStatus (any (), any ());
347+ verify (memoryRepository , never ()).findByMemberAndMemoryType (any (), any (), any (), anyInt ());
335348 }
336349
337350 @ Test
@@ -572,7 +585,9 @@ void findMemoriesByMemberWithDifferentTypes() {
572585 List <Memory > publicMemories = List .of (publicMemory );
573586
574587 when (memberRepository .findMemberById (memberId )).thenReturn (Optional .of (member ));
575- when (memoryRepository .findByMemberAndMemoryType (member , MemoryType .PUBLIC , size ))
588+ when (relationshipRepository .findByMemberAndRelationshipStatus (member , RelationshipStatus .ACCEPTED ))
589+ .thenReturn (Collections .emptyList ());
590+ when (memoryRepository .findByMemberAndMemoryType (member , Collections .emptyList (), MemoryType .PUBLIC , size ))
576591 .thenReturn (publicMemories );
577592
578593 // When
@@ -585,7 +600,83 @@ void findMemoriesByMemberWithDifferentTypes() {
585600 assertEquals (MemoryType .PUBLIC , responses .get (0 ).memoryType ());
586601
587602 verify (memberRepository ).findMemberById (memberId );
588- verify (memoryRepository ).findByMemberAndMemoryType (member , MemoryType .PUBLIC , size );
603+ verify (relationshipRepository ).findByMemberAndRelationshipStatus (member , RelationshipStatus .ACCEPTED );
604+ verify (memoryRepository ).findByMemberAndMemoryType (member , Collections .emptyList (), MemoryType .PUBLIC , size );
605+ }
606+
607+ @ Test
608+ @ DisplayName ("관계가 있는 회원의 메모리 조회 테스트 - RELATIONSHIP 타입" )
609+ void findMemoriesByMemberWithRelationshipType () {
610+ // Given
611+ int size = 10 ;
612+ Long relatedMemberId = 2L ;
613+
614+ Member relatedMember =
new Member (
"관련 사용자" ,
"relateduser" ,
"[email protected] " ,
"encodedPassword" );
615+ setId (relatedMember , relatedMemberId );
616+
617+ Relationship relationship = new Relationship (member , relatedMember , RelationshipStatus .ACCEPTED );
618+ List <Relationship > relationships = List .of (relationship );
619+ List <Long > relatedMemberIds = List .of (relatedMemberId );
620+
621+ Memory myPublicMemory = new Memory ("내 공개 메모리" , "내 공개 내용" , "내 공개 장소" ,
622+ LocalDate .of (2024 , 1 , 10 ), MemoryType .PUBLIC , member , mapEntity );
623+ setId (myPublicMemory , 3L );
624+
625+ Memory relatedPublicMemory = new Memory ("상대방 공개 메모리" , "상대방 공개 내용" , "상대방 공개 장소" ,
626+ LocalDate .of (2024 , 1 , 11 ), MemoryType .PUBLIC , relatedMember , mapEntity );
627+ setId (relatedPublicMemory , 4L );
628+
629+ List <Memory > memories = Arrays .asList (myPublicMemory , relatedPublicMemory );
630+
631+ when (memberRepository .findMemberById (memberId )).thenReturn (Optional .of (member ));
632+ when (relationshipRepository .findByMemberAndRelationshipStatus (member , RelationshipStatus .ACCEPTED ))
633+ .thenReturn (relationships );
634+ when (memoryRepository .findByMemberAndMemoryType (member , relatedMemberIds , MemoryType .RELATIONSHIP , size ))
635+ .thenReturn (memories );
636+
637+ // When
638+ List <MemoryResponse > responses = memoryService .findMemoriesByMember (memberId , null , size , MemoryType .RELATIONSHIP );
639+
640+ // Then
641+ assertNotNull (responses );
642+ assertEquals (2 , responses .size ());
643+ assertEquals (3L , responses .get (0 ).id ());
644+ assertEquals (4L , responses .get (1 ).id ());
645+
646+ verify (memberRepository ).findMemberById (memberId );
647+ verify (relationshipRepository ).findByMemberAndRelationshipStatus (member , RelationshipStatus .ACCEPTED );
648+ verify (memoryRepository ).findByMemberAndMemoryType (member , relatedMemberIds , MemoryType .RELATIONSHIP , size );
649+ }
650+
651+ @ Test
652+ @ DisplayName ("관계가 없는 회원의 메모리 조회 테스트 - RELATIONSHIP 타입" )
653+ void findMemoriesByMemberWithoutRelationshipType () {
654+ // Given
655+ int size = 10 ;
656+
657+ Memory myPublicMemory = new Memory ("내 공개 메모리" , "내 공개 내용" , "내 공개 장소" ,
658+ LocalDate .of (2024 , 1 , 12 ), MemoryType .PUBLIC , member , mapEntity );
659+ setId (myPublicMemory , 5L );
660+
661+ List <Memory > memories = List .of (myPublicMemory );
662+
663+ when (memberRepository .findMemberById (memberId )).thenReturn (Optional .of (member ));
664+ when (relationshipRepository .findByMemberAndRelationshipStatus (member , RelationshipStatus .ACCEPTED ))
665+ .thenReturn (Collections .emptyList ());
666+ when (memoryRepository .findByMemberAndMemoryType (member , Collections .emptyList (), MemoryType .RELATIONSHIP , size ))
667+ .thenReturn (memories );
668+
669+ // When
670+ List <MemoryResponse > responses = memoryService .findMemoriesByMember (memberId , null , size , MemoryType .RELATIONSHIP );
671+
672+ // Then
673+ assertNotNull (responses );
674+ assertEquals (1 , responses .size ());
675+ assertEquals (5L , responses .get (0 ).id ());
676+
677+ verify (memberRepository ).findMemberById (memberId );
678+ verify (relationshipRepository ).findByMemberAndRelationshipStatus (member , RelationshipStatus .ACCEPTED );
679+ verify (memoryRepository ).findByMemberAndMemoryType (member , Collections .emptyList (), MemoryType .RELATIONSHIP , size );
589680 }
590681
591682 @ Test
@@ -662,7 +753,7 @@ void createMemoryWithEmptyHashTagList() {
662753 when (memberRepository .findMemberById (memberId )).thenReturn (Optional .of (member ));
663754 when (mapRepository .findById (mapId )).thenReturn (Optional .of (mapEntity ));
664755 when (memoryRepository .save (any (Memory .class ))).thenReturn (memory );
665- when (fileRepository .findAllById (Arrays . asList (fileId1 ))).thenReturn (Arrays . asList (file1 ));
756+ when (fileRepository .findAllById (List . of (fileId1 ))).thenReturn (Collections . singletonList (file1 ));
666757
667758 // When
668759 MemoryResponse response = memoryService .createMemory (memberId , requestWithEmptyHashTags );
@@ -672,7 +763,7 @@ void createMemoryWithEmptyHashTagList() {
672763 verify (memberRepository ).findMemberById (memberId );
673764 verify (mapRepository ).findById (mapId );
674765 verify (memoryRepository ).save (any (Memory .class ));
675- verify (fileRepository ).findAllById (Arrays . asList (fileId1 ));
766+ verify (fileRepository ).findAllById (List . of (fileId1 ));
676767 }
677768
678769 @ Test
@@ -704,11 +795,11 @@ void createMemoryWithManyHashTags() {
704795 void updateMemoryWithDifferentHashTags () {
705796 // Given
706797 MemoryRequest .Update updateWithNewHashTags = new MemoryRequest .Update ("업데이트된 메모리" , "업데이트된 내용" ,
707- "업데이트된 장소" , LocalDate .of (2024 , 1 , 8 ), MemoryType .PRIVATE , Arrays . asList (fileId2 ), Arrays .asList ("새로운" , "해시태그" , "업데이트" ));
798+ "업데이트된 장소" , LocalDate .of (2024 , 1 , 8 ), MemoryType .PRIVATE , List . of (fileId2 ), Arrays .asList ("새로운" , "해시태그" , "업데이트" ));
708799
709800 when (memberRepository .findMemberById (memberId )).thenReturn (Optional .of (member ));
710801 when (memoryRepository .findMemoryByIdAndMemberId (memoryId , memberId )).thenReturn (Optional .of (memory ));
711- when (fileRepository .findAllById (Arrays . asList (fileId2 ))).thenReturn (Arrays . asList (file2 ));
802+ when (fileRepository .findAllById (List . of (fileId2 ))).thenReturn (Collections . singletonList (file2 ));
712803
713804 // When
714805 MemoryResponse response = memoryService .updateMemory (memberId , memoryId , updateWithNewHashTags );
@@ -717,7 +808,7 @@ void updateMemoryWithDifferentHashTags() {
717808 assertNotNull (response );
718809 verify (memberRepository ).findMemberById (memberId );
719810 verify (memoryRepository ).findMemoryByIdAndMemberId (memoryId , memberId );
720- verify (fileRepository ).findAllById (Arrays . asList (fileId2 ));
811+ verify (fileRepository ).findAllById (List . of (fileId2 ));
721812 }
722813
723814 @ Test
0 commit comments