Skip to content

Commit

Permalink
refactor : Club 생성 관련 Deprecated API 및 관련 메서드 삭제 #122
Browse files Browse the repository at this point in the history
  • Loading branch information
tlgur committed Feb 10, 2024
1 parent 2d7714b commit 9531b2f
Show file tree
Hide file tree
Showing 4 changed files with 2 additions and 219 deletions.
16 changes: 0 additions & 16 deletions src/main/java/com/skklub/admin/controller/ClubController.java
Original file line number Diff line number Diff line change
Expand Up @@ -233,20 +233,4 @@ public ResponseEntity<ClubNameAndIdDTO> cancelClubDeletionById(@PathVariable Lon
.orElseThrow(MissingDeletedClubException::new);
}


//====DEPRECATED=====//

//추가
// @PostMapping(value = "/club")
public ClubNameAndIdDTO createClub(@ModelAttribute @Valid ClubCreateRequestDTO clubCreateRequestDTO, @RequestParam(required = false) MultipartFile logo) {
ClubValidator.validateBelongs(clubCreateRequestDTO.getCampus(), clubCreateRequestDTO.getClubType(), clubCreateRequestDTO.getBelongs());
FileNames uploadedLogo = Optional.ofNullable(logo)
.map(s3Transferer::uploadOne)
.orElse(new FileNames(DEFAULT_LOGO_NAME, DEFAULT_LOGO_NAME));
Club club = clubCreateRequestDTO.toEntity();
Logo logoAfterUpload = uploadedLogo.toLogoEntity();
Long id = clubService.createClub(club, logoAfterUpload);
return new ClubNameAndIdDTO(id, club.getName());
}

}
2 changes: 1 addition & 1 deletion src/main/java/com/skklub/admin/domain/ExtraFile.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,4 +23,4 @@ public ExtraFile(String originalName, String uploadedName) {
public void matchToNotice(Notice notice) {
this.notice = notice;
}
}
}
1 change: 1 addition & 0 deletions src/main/java/com/skklub/admin/service/ClubService.java
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ public class ClubService {
private final LogoRepository logoRepository;
private final ActivityImageRepository activityImageRepository;
private final DeletedClubRepository deletedClubRepository;
private final S3TransferService s3TransferService;


public Long createClub(Club club, Logo logo) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -108,208 +108,6 @@ public void beforeEach() throws Exception {
doNothing().when(authValidator).validatePendingRequestAuthority(anyLong());
}

// @Test
public void clubCreation_FullData_Success() throws Exception {
//given
given(clubService.createClub(any(Club.class), any(Logo.class))).willReturn(0L);
given(s3Transferer.uploadOne(any(MockMultipartFile.class))).willReturn(new FileNames("test.png", "saved-test.png"));
//when
ResultActions actions = mockMvc.perform(

multipart("/club")
.file(mockLogo)
.contentType(MediaType.MULTIPART_FORM_DATA)
.with(csrf())
.queryParam("clubName", "정상적인 클럽 SKKULOL")
.queryParam("campus", "명륜")
.queryParam("clubType", "중앙동아리")
.queryParam("belongs", "취미교양")
.queryParam("briefActivityDescription", "E-SPORTS")
.queryParam("activityDescription", "1. 열심히 참여하면 됩니다 2. 그냥 게임만 잘 하면 됩니다.")
.queryParam("clubDescription", "여기가 어떤 동아리냐면요, 페이커가 될 수 있게 해주는 동아리입니다^^")
.queryParam("establishDate", "2023")
.queryParam("headLine", "명륜 게임 동아리입니다")
.queryParam("mandatoryActivatePeriod", "4학기")
.queryParam("memberAmount", "60")
.queryParam("regularMeetingTime", "Thursday 19:00")
.queryParam("roomLocation", "학생회관 80210")
.queryParam("webLink1", "www.skklol.com")
.queryParam("webLink2", "www.skkulol.edu")
);

//then
actions
.andExpect(MockMvcResultMatchers.status().isOk())
.andExpect(jsonPath("$.id", 0L).exists())
.andExpect(jsonPath("$.name", "정상적인 클럽 SKKULOL").exists())
.andDo(document("club/create/club",
queryParameters(
parameterWithName("clubName").description("동아리 이름").attributes(RestDocsUtils.example("클럽 SKKULOL")),
parameterWithName("campus").description("분류 - 캠퍼스").attributes(RestDocsUtils.example(RestDocsUtils.LINK_CAMPUS_TYPE)),
parameterWithName("clubType").description("분류 - 동아리 종류").attributes(RestDocsUtils.example(RestDocsUtils.LINK_CLUB_TYPE)),
parameterWithName("belongs").description("분류 - 동아리 분과").attributes(RestDocsUtils.example(RestDocsUtils.LINK_BELONGS_TYPE)),
parameterWithName("briefActivityDescription").description("분류 - 활동 설명").attributes(RestDocsUtils.example("E-SPORTS")),
parameterWithName("activityDescription").description("자세한 활동 설명").attributes(RestDocsUtils.example("1. 열심히 참여하면 됩니다 2. 그냥 게임만 잘 하면 됩니다.")),
parameterWithName("clubDescription").description("자세한 동아리 설명").attributes(RestDocsUtils.example("여기가 어떤 동아리냐면요, 페이커가 될 수 있게 해주는 동아리입니다^^")),
parameterWithName("establishDate").description("설립 연도, Integer(Min 1398)").optional().attributes(RestDocsUtils.example("2023")),
parameterWithName("headLine").description("한줄 소개").optional().attributes(RestDocsUtils.example("명륜 게임 동아리입니다")),
parameterWithName("mandatoryActivatePeriod").description("의무 활동 기간").optional().attributes(RestDocsUtils.example("4학기")),
parameterWithName("memberAmount").description("동아리 인원").optional().attributes(RestDocsUtils.example("60")),
parameterWithName("regularMeetingTime").description("정규 모임 시간").optional().attributes(RestDocsUtils.example("Thursday 19:00")),
parameterWithName("roomLocation").description("동아리 방 위치").optional().attributes(RestDocsUtils.example("학생회관 80210")),
parameterWithName("webLink1").description("관련 사이트 주소 1").optional().attributes(RestDocsUtils.example("www.skklol.edu")),
parameterWithName("webLink2").description("관련 사이트 주소 2").optional().attributes(RestDocsUtils.example("skklol.com"))
),
requestParts(
partWithName("logo").description("동아리 로고").optional()
),
responseFields(
fieldWithPath("id").type(FieldType.STRING).description("동아리 아이디").attributes(RestDocsUtils.example("0")),
fieldWithPath("name").type(FieldType.STRING).description("동아리명").attributes(RestDocsUtils.example("클럽 SKKULOL"))
)

));
}

// @Test
public void clubCreation_NullAtSomeNullables_Success() throws Exception {
//given
Long clubId = 0L;
Club club = testDataRepository.getClubs().get(clubId.intValue());
Field establishAt = club.getClass().getDeclaredField("establishAt");
establishAt.setAccessible(true);
establishAt.set(club, null);
Field webLink2 = club.getClass().getDeclaredField("webLink2");
webLink2.setAccessible(true);
webLink2.set(club, null);
FileNames logoFileName = testDataRepository.getLogoFileName((int) (long)clubId);
given(s3Transferer.uploadOne(any(MultipartFile.class))).willReturn(logoFileName);
given(clubService.createClub(eq(club), any(Logo.class))).willReturn(clubId);

//when
ResultActions actions = mockMvc.perform(
multipart("/club")
.file(mockLogo)
.contentType(MediaType.MULTIPART_FORM_DATA)
.with(csrf())
.queryParam("clubName", "정상적인 클럽 SKKULOL")
.queryParam("campus", "명륜")
.queryParam("clubType", "중앙동아리")
.queryParam("belongs", "취미교양")
.queryParam("briefActivityDescription", "E-SPORTS")
.queryParam("activityDescription", "1. 열심히 참여하면 됩니다 2. 그냥 게임만 잘 하면 됩니다.")
.queryParam("clubDescription", "여기가 어떤 동아리냐면요, 페이커가 될 수 있게 해주는 동아리입니다^^")
.queryParam("establishDate", "") // Blank
.queryParam("headLine", club.getHeadLine())
.queryParam("mandatoryActivatePeriod", "4학기")
.queryParam("memberAmount", "60")
.queryParam("regularMeetingTime", "Thursday 19:00")
.queryParam("roomLocation", "학생회관 80210")
.queryParam("webLink1", "www.skklol.com")
// .queryParam("webLink2", "www.skkulol.edu") // missing field
);

//then
actions.andExpect(status().isOk())
.andExpect(jsonPath("$.id").value(clubId))
.andExpect(jsonPath("$.name").value("정상적인 클럽 SKKULOL"));
}

// @Test
public void clubCreation_EnumMisMatch_BindException() throws Exception{
//given
String wrongCampus = "안암";
String wrongClubType = "중준중동아리";

//when
MvcResult wrongClubTypeResult = mockMvc.perform(
multipart("/club")
.file(mockLogo)
.contentType(MediaType.MULTIPART_FORM_DATA)
.with(csrf())
.queryParam("clubName", "정상적인 클럽 SKKULOL")
.queryParam("campus", Campus.명륜.toString())
.queryParam("clubType", wrongClubType)
.queryParam("belongs", "취미교양")
.queryParam("briefActivityDescription", "E-SPORTS")
.queryParam("activityDescription", "1. 열심히 참여하면 됩니다 2. 그냥 게임만 잘 하면 됩니다.")
.queryParam("clubDescription", "여기가 어떤 동아리냐면요, 페이커가 될 수 있게 해주는 동아리입니다^^")
).andExpect(status().isBadRequest()).andReturn();
MvcResult wrongCampusResult = mockMvc.perform(
multipart("/club")
.file(mockLogo)
.contentType(MediaType.MULTIPART_FORM_DATA)
.with(csrf())
.queryParam("clubName", "정상적인 클럽 SKKULOL")
.queryParam("campus", wrongCampus)
.queryParam("clubType", "중앙동아리")
.queryParam("belongs", "취미교양")
.queryParam("briefActivityDescription", "E-SPORTS")
.queryParam("activityDescription", "1. 열심히 참여하면 됩니다 2. 그냥 게임만 잘 하면 됩니다.")
.queryParam("clubDescription", "여기가 어떤 동아리냐면요, 페이커가 될 수 있게 해주는 동아리입니다^^")
).andExpect(status().isBadRequest()).andReturn();

//then
Assertions.assertThat(wrongCampusResult.getResolvedException()).isExactlyInstanceOf(BindException.class);
Assertions.assertThat(wrongClubTypeResult.getResolvedException()).isExactlyInstanceOf(BindException.class);

}

// @Test
public void clubCreation_EmptyLogoImage_FileNameEqDefaultLogo() throws Exception {
//given
Long successId = 12345L;
Logo logo = new Logo("alt.jpg", "alt.jpg");
given(clubService.createClub(any(Club.class), eq(logo))).willReturn(successId);

//when
ResultActions actions = mockMvc.perform(
multipart("/club")
.contentType(MediaType.MULTIPART_FORM_DATA)
.with(csrf())
.queryParam("clubName", "정상적인 클럽 SKKULOL")
.queryParam("campus", Campus.명륜.toString())
.queryParam("clubType", "중앙동아리")
.queryParam("belongs", "취미교양")
.queryParam("briefActivityDescription", "E-SPORTS")
.queryParam("activityDescription", "1. 열심히 참여하면 됩니다 2. 그냥 게임만 잘 하면 됩니다.")
.queryParam("clubDescription", "여기가 어떤 동아리냐면요, 페이커가 될 수 있게 해주는 동아리입니다^^")
);

//then
actions.andExpect(status().isOk())
.andExpect(jsonPath("$.id").value(successId))
.andExpect(jsonPath("$.name").value("정상적인 클럽 SKKULOL"));

}

// @Test
public void clubCreation_InvalidBelongs_InvalidBelongsException() throws Exception {
//given
Campus campus = Campus.명륜;
ClubType clubType = ClubType.중앙동아리;
String suwonCentralBelongs = "건강체육";

//when
MvcResult wrongBelongsResult = mockMvc.perform(
multipart("/club")
.file(mockLogo)
.contentType(MediaType.MULTIPART_FORM_DATA)
.with(csrf())
.queryParam("clubName", "정상적인 클럽 SKKULOL")
.queryParam("campus", campus.toString())
.queryParam("clubType", clubType.toString())
.queryParam("belongs", suwonCentralBelongs)
.queryParam("briefActivityDescription", "E-SPORTS")
.queryParam("activityDescription", "1. 열심히 참여하면 됩니다 2. 그냥 게임만 잘 하면 됩니다.")
.queryParam("clubDescription", "여기가 어떤 동아리냐면요, 페이커가 될 수 있게 해주는 동아리입니다^^")
).andExpect(status().isBadRequest()).andReturn();

//then
Assertions.assertThat(wrongBelongsResult.getResolvedException()).isInstanceOf(InvalidBelongsException.class);

}

@Test
public void uploadActivityImages_MultiImages_Success() throws Exception {
//given
Expand Down

0 comments on commit 9531b2f

Please sign in to comment.