Skip to content

Commit

Permalink
feat: 모든 시간표 프레임 삭제 api 구현 (#934)
Browse files Browse the repository at this point in the history
* feat: 모든 시간표 프레임 삭제 api 구현

* fix: 테스트상 오타 수정
  • Loading branch information
seongjae6751 authored Oct 3, 2024
1 parent 735ff94 commit 8ea4621
Show file tree
Hide file tree
Showing 5 changed files with 59 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,21 @@ ResponseEntity<Void> deleteTimetablesFrame(
@Auth(permit = {STUDENT}) Integer userId
);

@ApiResponses(
value = {
@ApiResponse(responseCode = "200"),
@ApiResponse(responseCode = "401", content = @Content(schema = @Schema(hidden = true))),
@ApiResponse(responseCode = "403", content = @Content(schema = @Schema(hidden = true))),
@ApiResponse(responseCode = "404", content = @Content(schema = @Schema(hidden = true)))
}
)
@Operation(summary = "시간표 프레임 모두 삭제")
@DeleteMapping("/v2/all/timetables/frame")
public ResponseEntity<Void> deleteAllTimetablesFrame(
@RequestParam(name = "semester") String semester,
@Auth(permit = {STUDENT}) Integer userId
);

@ApiResponses(
value = {
@ApiResponse(responseCode = "200"),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,15 @@ public ResponseEntity<Void> deleteTimetablesFrame(
return ResponseEntity.noContent().build();
}

@DeleteMapping("/v2/all/timetables/frame")
public ResponseEntity<Void> deleteAllTimetablesFrame(
@RequestParam(name = "semester") String semester,
@Auth(permit = {STUDENT}) Integer userId
) {
timetableServiceV2.deleteAllTimetablesFrame(userId, semester);
return ResponseEntity.noContent().build();
}

@PostMapping("/v2/timetables/lecture")
public ResponseEntity<TimetableLectureResponse> createTimetableLecture(
@Valid @RequestBody TimetableLectureCreateRequest request,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import org.springframework.data.repository.query.Param;

import in.koreatech.koin.domain.timetable.exception.TimetableNotFoundException;
import in.koreatech.koin.domain.timetable.model.Semester;
import in.koreatech.koin.domain.timetableV2.exception.TimetableFrameNotFoundException;
import in.koreatech.koin.domain.timetableV2.model.TimetableFrame;
import in.koreatech.koin.domain.user.model.User;
Expand Down Expand Up @@ -68,4 +69,6 @@ SELECT COUNT(t) FROM TimetableFrame t
void deleteById(Integer id);

void deleteAllByUser(User user);

void deleteAllByUserAndSemester(User user, Semester semester);
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import java.util.List;
import java.util.Objects;

import in.koreatech.koin.domain.timetable.exception.SemesterNotFoundException;
import in.koreatech.koin.global.exception.KoinIllegalArgumentException;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
Expand Down Expand Up @@ -190,4 +191,12 @@ private void cancelMainTimetable(Integer userId, Integer semesterId) {
semesterId);
mainTimetableFrame.cancelMain();
}

@Transactional
public void deleteAllTimetablesFrame(Integer userId, String semester) {
User user = userRepository.findById(userId).get();
Semester userSemester = semesterRepositoryV2.findBySemester(semester)
.orElseThrow(() -> new SemesterNotFoundException("해당하는 시간표 프레임이 없습니다"));
timetableFrameRepositoryV2.deleteAllByUserAndSemester(user, userSemester);
}
}
23 changes: 23 additions & 0 deletions src/test/java/in/koreatech/koin/acceptance/TimetableV2ApiTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -230,6 +230,29 @@ void setup() {
.andExpect(status().isForbidden());
}

@Test
void 모든_시간표_프레임을_삭제한다() throws Exception {
User user = userFixture.준호_학생().getUser();
String token = userFixture.getToken(user);
Semester semester = semesterFixture.semester("20192");

TimetableFrame frame1 = timetableV2Fixture.시간표1(user, semester);
TimetableFrame frame2 = timetableV2Fixture.시간표1(user, semester);
TimetableFrame frame3 = timetableV2Fixture.시간표1(user, semester);

mockMvc.perform(
delete("/v2/all/timetables/frame")
.header("Authorization", "Bearer " + token)
.param("semester", semester.getSemester())
.contentType(MediaType.APPLICATION_JSON)
)
.andExpect(status().isNoContent());

assertThat(timetableFrameRepositoryV2.findById(frame1.getId())).isNotPresent();
assertThat(timetableFrameRepositoryV2.findById(frame2.getId())).isNotPresent();
assertThat(timetableFrameRepositoryV2.findById(frame3.getId())).isNotPresent();
}

@Test
void 시간표를_생성한다_TimetableLecture() throws Exception {
User user = userFixture.준호_학생().getUser();
Expand Down

0 comments on commit 8ea4621

Please sign in to comment.