728x90

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("리뷰 변경 후");


}


}

 

728x90

+ Recent posts