Skip to content

Commit

Permalink
fix: 시간표 프레임 삭제 관련 에러 수정 (#708)
Browse files Browse the repository at this point in the history
* fix: 원래 로직대로 원상 복구

* test: 테스트 작성

* chore: refresh token기한 원상 복구
  • Loading branch information
seongjae6751 authored Jul 19, 2024
1 parent 9d87705 commit 9115238
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -42,14 +42,7 @@ default TimetableFrame getByUser(User user) {
.orElseThrow(() -> TimetableFrameNotFoundException.withDetail("userId: " + user.getId()));
}

@Query(
"""
SELECT tf FROM TimetableFrame tf
WHERE tf.user.id = :userId
AND tf.semester.id = :semesterId
AND tf.isMain = false ORDER BY tf.createdAt ASC
""")
TimetableFrame findFirstNonMainFrame(@Param("userId") Integer userId, @Param("semesterId") Integer semesterId);
TimetableFrame findFirstByUserIdAndSemesterIdAndIsMainFalseOrderByCreatedAtAsc(Integer userId, Integer semesterId);

@Query(
"""
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,8 @@ public void deleteTimetablesFrame(Integer userId, Integer frameId) {
}
if (frame.isMain()) {
TimetableFrame nextMainFrame =
timetableFrameRepositoryV2.findFirstNonMainFrame(userId, frame.getSemester().getId());
timetableFrameRepositoryV2.
findFirstByUserIdAndSemesterIdAndIsMainFalseOrderByCreatedAtAsc(userId, frame.getSemester().getId());
if (nextMainFrame != null) {
nextMainFrame.updateStatusMain(true);
timetableFrameRepositoryV2.save(nextMainFrame);
Expand Down
26 changes: 26 additions & 0 deletions src/test/java/in/koreatech/koin/acceptance/TimetableV2ApiTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -172,6 +172,32 @@ void deleteTimeTablesFrame() {
assertThat(timetableLectureRepositoryV2.findById(frame1.getTimetableLectures().get(1).getId())).isNotPresent();
}

@Test
@DisplayName("isMain인 frame을 삭제한다 - 다른 frame이 main으로 됨")
void deleteMainTimeTablesFrame() {
User user = userFixture.준호_학생().getUser();
String token = userFixture.getToken(user);
Semester semester = semesterFixture.semester("20192");

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

RestAssured
.given()
.header("Authorization", "Bearer " + token)
.when()
.param("id", frame1.getId())
.delete("/v2/timetables/frame")
.then()
.statusCode(HttpStatus.NO_CONTENT.value())
.extract();

assertThat(timetableFrameRepositoryV2.findById(frame1.getId())).isNotPresent();

TimetableFrame reloadedFrame2 = timetableFrameRepositoryV2.findById(frame2.getId()).orElseThrow();
assertThat(reloadedFrame2.isMain()).isTrue();
}

@Test
@DisplayName("특정 시간표 frame을 삭제한다 - 본인 삭제가 아니면 403 반환")
void deleteTimeTablesFrameNoAuth() {
Expand Down

0 comments on commit 9115238

Please sign in to comment.