728x90

컨트롤러에서 삭제 기능을 구현했지만, 서비스와 컨트롤러를 분리하게 위해 리팩토링 했다.

 

 

 

 

 

컨트롤러를 구현했다. 스터드 룸의 id 보다 이름으로 제거하는 게 실용성이 있다고 생각해서 이름을 파라미터로 받았다. removeRoom 의 boolean 값으로 제거의 유무를 판단했다. 제거 기능은 모두 removeRoom으로 넘겨주었다. boolean 값에 따라 model 에 알맞은 message 를 담아주어 view 로 넘겨주었다.

 

// 스터디룸 제거
@PostMapping("/admin/remove")
public String RemoveRoom(@RequestParam("remove_name") String remove_name,Model model){

removeRoom removeRoom = new removeRoom(roomRepository);

// 존재하지 않는 룸이면

if(removeRoom.removeRoom(remove_name)==false){

model.addAttribute("remove_fail","존재하지 않는 스터디 룸 입니다.");
return "admin/remove_fail";
}

// 룸 정상 제거 시
else{
model.addAttribute("remove_success",remove_name + " 룸이 제거되었습니다.");
return "admin/remove_success";
}

}

 

 

 

 

 

 

removeRoom 클래스이다. 삭제할 룸이 존재하는지 여부를 판단 후, boolean 값을 return 해준다. 룸이 존재하면 이를 삭제해준다.

 

@RequiredArgsConstructor
public class removeRoom {

final roomRepository roomRepository;
public boolean removeRoom(String remove_name){

boolean remove = false;

// 존재하지 않는 룸이면
if(roomRepository.findByroomName(remove_name).isEmpty()==true){
return false;
}

// 룸 정상 제거 시
else{
List room = roomRepository.findByroomName(remove_name);
roomRepository.delete((StudyRoom.StudyRoom.entity.room) room.get(0));

return true;
}
}
}

 

 

 

 

 

 

룸 제거 기능 테스트를 만들었고 이상 없이 돌아간다. 기본적인 기능 말고 추가적으로 난이도 있는 기능을 기획하고 구현해야 겠다.

 

@SpringBootTest
public class roomRemoveTest {
@Autowired
StudyRoom.StudyRoom.repository.roomRepository roomRepository;


// 스터디 룸이 정상적으로 제거 되는 경우

@Test
void _제거_성공() {

// given
roomDto roomDto = new roomDto(roomRepository);
String roomName = "test123";
roomDto.create_room(roomName,10L,15000L,"test room 입니다");

// when
removeRoom removeRoom = new removeRoom(roomRepository);

// then

Assertions.assertThat(removeRoom.removeRoom(roomName)==true);
Assertions.assertThat(roomRepository.findByroomName(roomName).isEmpty()==true);


}

// 제거할 스터디 룸이 존재하지 않는 경우
@Test
void _제거_실패() {

// given
String roomName = "test123";
// when
removeRoom removeRoom = new removeRoom(roomRepository);

// then

Assertions.assertThat(roomRepository.findByroomName(roomName).isEmpty()==false);


}

}

 

 

 

 

 

 

타임리프를 통해 관리자 페이지에 현재 존재하는 룸들을 표시해주었다.

 


<table class="room">
<p>
<tr>
<td>id</font></td>
<td></td>
<td>이름</td>
<td></td>
<td>수용 인원</td>
<td></td>
<td>가격</td>
<td></td>
<td>설명</td>



</tr>

<tr th:each="room : ${room}">
<td th:text="${room.roomId}"></td>
<td></td>
<td th:text="${room.roomName}"></td>
<td></td>
<td th:text="${room.roomPerson}"></td>
<td></td>
<td th:text="${room.roomPrice}"></td>
<td></td>
<td th:text="${room.roomInformation}"></td>
<td></td>

</tr>
</table>

728x90

+ Recent posts