Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: 방/회원/인증 신고 기능 추가 #158

Merged
merged 9 commits into from
Nov 27, 2023
Prev Previous commit
Next Next commit
refactor: 신고 기능 로직 수정 및 테스트 코드 추가
parksey committed Nov 26, 2023

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
commit cfec3f81faf9f09bc5c063e230cb74e9ca4d92b4
20 changes: 16 additions & 4 deletions src/main/java/com/moabam/api/application/report/ReportService.java
Original file line number Diff line number Diff line change
@@ -32,12 +32,24 @@ public class ReportService {
@Transactional
public void report(AuthMember authMember, ReportRequest reportRequest) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Q: report, createReport는 어떤 기능을 하는 서비스인가요?

validateNoReportSubject(reportRequest.roomId(), reportRequest.certificationId());
Report report = createReport(authMember.id(), reportRequest);
reportRepository.save(report);
}

private Report createReport(Long reporterId, ReportRequest reportRequest) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

R: 네이밍 수정쫌... create에 찌들어버렸어 ,,

Member reportedMember = memberService.findMember(reportRequest.reportedId());

if (nonNull(reportRequest.certificationId())) {
Certification certification = certificationService.findCertification(reportRequest.certificationId());

return ReportMapper.toReport(reporterId, reportedMember.getId(),
null, certification, reportRequest.description());
}

Room room = roomService.findRoom(reportRequest.roomId());
Certification certification = certificationService.findCertification(reportRequest.certificationId());
Report report = ReportMapper.toReport(authMember.id(), reportedMember.getId(),
room, certification, reportRequest.description());
reportRepository.save(report);

return ReportMapper.toReport(reporterId, reportedMember.getId(),
room, null, reportRequest.description());
}

private void validateNoReportSubject(Long roomId, Long certificationId) {
3 changes: 2 additions & 1 deletion src/main/java/com/moabam/api/domain/report/Report.java
Original file line number Diff line number Diff line change
@@ -20,7 +20,7 @@
import lombok.NoArgsConstructor;

@NoArgsConstructor(access = AccessLevel.PROTECTED)
@Table(name = "reports")
@Table(name = "report")
@Entity
public class Report extends BaseTimeEntity {

@@ -51,5 +51,6 @@ private Report(Long reporterId, Long reportedMemberId, Room room, Certification
this.reportedMemberId = requireNonNull(reportedMemberId);
this.room = room;
this.certification = certification;
this.description = description;
}
}
Original file line number Diff line number Diff line change
@@ -7,6 +7,8 @@
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
@@ -29,7 +31,7 @@
import com.moabam.support.fixture.RoomFixture;

@ExtendWith({MockitoExtension.class, FilterProcessExtension.class})
public class ReportServiceTest {
class ReportServiceTest {

@InjectMocks
ReportService reportService;
@@ -59,20 +61,30 @@ void no_report_subject_fail(@WithMember AuthMember authMember) {
}

@DisplayName("신고 성공")
@Test
void report_success(@WithMember AuthMember authMember) {
@ParameterizedTest
@CsvSource({"true, false", "false, true"})
void report_success(boolean roomFilter, boolean certificationFilter, @WithMember AuthMember authMember) {
// given
Room room = RoomFixture.room();
Routine routine = RoomFixture.routine(room, "ets");
Certification certification = RoomFixture.certification(routine);
ReportRequest reportRequest = ReportFixture.reportRequest();
Member member = spy(MemberFixture.member());

given(member.getId()).willReturn(authMember.id());
Long roomId = null;
Long certificationId = null;

if (roomFilter) {
given(roomService.findRoom(any())).willReturn(RoomFixture.room());
roomId = 1L;
}
if (certificationFilter) {
given(certificationService.findCertification(any())).willReturn(certification);
certificationId = 1L;
}

ReportRequest reportRequest = ReportFixture.reportRequest(2L, roomId, certificationId);
given(member.getId()).willReturn(2L);
given(memberService.findMember(reportRequest.reportedId())).willReturn(member);
given(roomService.findRoom(reportRequest.roomId())).willReturn(RoomFixture.room());
given(certificationService.findCertification(reportRequest.certificationId()))
.willReturn(certification);

// When + Then
assertThatNoException()
4 changes: 4 additions & 0 deletions src/test/java/com/moabam/support/fixture/ReportFixture.java
Original file line number Diff line number Diff line change
@@ -23,4 +23,8 @@ public static Report report(Room room, Certification certification) {
public static ReportRequest reportRequest() {
return new ReportRequest(reportedId, roomId, certificationId, "description");
}

public static ReportRequest reportRequest(Long reportedId, Long roomId, Long certificationId) {
return new ReportRequest(reportedId, roomId, certificationId, "description");
}
}