Controller 를 만들어주었다. @GetMapping 으로 받았는데 url 뒤에 query 문이 생겼고, 이는 RequestParam 을 받을 때 자동으로 생긴다고 이해했다. 다음에 다시 확인을 해 볼 계획이다.
@GetMapping 으로 받은 후 우선 존재하는 스터디룸인지 확인을 해준다. 존재 한다면, 룸 이름과 리뷰를 Model 로 담아 view 로 넘겨주었다.
@GetMapping("/admin/change") // 왜 url 뒤에 change_name 이 붙는지?
public String GetChangeRoom(@RequestParam("change_name") String change_name, Model model){
changeReview changeReview = new changeReview(roomRepository);
// 존재하지 않는 스터디 룸인 경우
if(changeReview.exist(change_name)==false){
model.addAttribute("change_fail","존재하지 않는 스터디 룸 입니다.");
return "admin/alert/change_fail";
}
// 존재하는 스터디 룸인 경우
List rooms = roomRepository.findByroomName(change_name);
room room = (StudyRoom.StudyRoom.entity.room) rooms.get(0);
model.addAttribute("roomName",change_name);
model.addAttribute("roomInformation",room.getRoomInformation());
return "admin/change";
}
@PostMapping 으로는 룸 이름과 리뷰를 받아주었고, changeReview 라는 Service를 이용해서 변경을 해주었다. 일부러 Service 패키지를 이용하기 위해 분리를 시켰다.
@PostMapping("/admin/change")
@Transactional
public String PostChangeRoom(@RequestParam("roomName") String roomName, @RequestParam("roomInformation") String roomInformation){
changeReview changeReview = new changeReview(roomRepository);
changeReview.changeReview(roomName,roomInformation);
return "redirect:/admin";
}
}
아래 클래스를 이용해서 리뷰의 수정이 이루어지도록 해주었다. Casting 을 통해 room 객체로 변경해주었고, 리뷰 속성의 @Setter을 이용해 변경할 수 있도록 해주었다.
@RequiredArgsConstructor
public class changeReview {
final roomRepository roomRepository;
public boolean exist(String changeName) {
if(roomRepository.findByroomName(changeName).isEmpty()==true){
return false;
}
else {
return true;
}
}
@Transactional
public void changeReview(String roomName,String roomInformation) {
List rooms = roomRepository.findByroomName(roomName);
StudyRoom.StudyRoom.entity.room room = (StudyRoom.StudyRoom.entity.room) rooms.get(0);
room.setRoomInformation(roomInformation);
}
}
Test 를 통해 검증을 해주었고 이상 없이 테스트는 성공했다.
@SpringBootTest
@Transactional
public class reviewChangeTest {
@Autowired roomRepository roomRepository;
@Test
void 리뷰_변경_성공() {
// given
roomDto roomDto = new roomDto(roomRepository);
String roomName = "test123";
roomDto.create_room(roomName,10L,15000L,"리뷰 변경 전");
// when
changeReview changeReview = new changeReview(roomRepository);
String newReview = "리뷰 변경 후";
changeReview.changeReview(roomName,newReview);
List test = roomRepository.findByroomName(roomName);
room room = (StudyRoom.StudyRoom.entity.room) test.get(0);
// then
Assertions.assertThat(test.isEmpty()==false);
Assertions.assertThat(room.getRoomInformation()).isEqualTo("리뷰 변경 후");
}
}
'🟢 프로젝트 > [Spring Boot] 스터디 룸 관리 웹' 카테고리의 다른 글
| 관리자 아이디, 비밀번호 자동 생성 (0) | 2023.05.23 |
|---|---|
| 비밀번호 암호화 구현 및 테스트 코드 작성 (0) | 2023.05.23 |
| 룸 삭제 기능 , 테스트 구현 (0) | 2023.05.08 |
| 관리자 페이지 view, 스터디 룸 생성 기능 구현 (1) | 2023.05.06 |
| 파트 분배 및 계획 (0) | 2023.05.02 |