@@ -95,6 +95,53 @@ class ReviewServiceTest :
9595 }
9696 }
9797
98+ Given (" 회고 수정 시" ) {
99+ val updateCommand =
100+ ReviewCommand .Update (
101+ reviewId = ReviewId (1L ),
102+ steps =
103+ listOf (
104+ ReviewStep (type = StepType .KEEP , content = " 수정된 좋은 점" ),
105+ ReviewStep (type = StepType .TRY , content = " 수정된 다짐" ),
106+ ),
107+ )
108+
109+ When (" 본인 회고를 수정하면" ) {
110+ every { reviewRepository.findById(ReviewId (1L )) } returns savedReview
111+ val updatedReview = savedReview.withUpdatedSteps(updateCommand.steps)
112+ every { reviewRepository.update(updateCommand) } returns updatedReview
113+
114+ val result = reviewService.update(updateCommand, memberId)
115+
116+ Then (" 수정된 회고를 반환한다" ) {
117+ result.steps shouldHaveSize 2
118+ result.steps[0 ].content shouldBe " 수정된 좋은 점"
119+ result.steps[1 ].content shouldBe " 수정된 다짐"
120+ }
121+ }
122+
123+ When (" 존재하지 않는 회고를 수정하면" ) {
124+ every { reviewRepository.findById(ReviewId (1L )) } returns null
125+
126+ Then (" EntityNotFoundException이 발생한다" ) {
127+ shouldThrow<EntityNotFoundException > {
128+ reviewService.update(updateCommand, memberId)
129+ }
130+ }
131+ }
132+
133+ When (" 다른 사용자의 회고를 수정하면" ) {
134+ every { reviewRepository.findById(ReviewId (1L )) } returns savedReview
135+ val otherMemberId = MemberId (99L )
136+
137+ Then (" AccessDeniedException이 발생한다" ) {
138+ shouldThrow<AccessDeniedException > {
139+ reviewService.update(updateCommand, otherMemberId)
140+ }
141+ }
142+ }
143+ }
144+
98145 Given (" 회고 목록 조회 시" ) {
99146 When (" 해당 사용자의 회고가 있으면" ) {
100147 val query = ReviewQuery (memberId = memberId)
0 commit comments