Skip to content

Commit

Permalink
✨ [Feature] Agenda Admin 목록 조회 기능 구현 #954 (#956)
Browse files Browse the repository at this point in the history
  • Loading branch information
yhames authored Aug 14, 2024
1 parent 13e0213 commit 362e142
Show file tree
Hide file tree
Showing 4 changed files with 97 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@

import gg.agenda.api.admin.agenda.controller.request.AgendaAdminUpdateReqDto;
import gg.agenda.api.admin.agenda.controller.response.AgendaAdminResDto;
import gg.agenda.api.admin.agenda.controller.response.AgendaAdminSimpleResDto;
import gg.agenda.api.admin.agenda.service.AgendaAdminService;
import gg.utils.dto.PageRequestDto;
import gg.utils.exception.custom.InvalidParameterException;
Expand All @@ -50,6 +51,12 @@ public ResponseEntity<List<AgendaAdminResDto>> agendaList(@ModelAttribute @Valid
return ResponseEntity.ok(agendaDtos);
}

@GetMapping("/list")
public ResponseEntity<List<AgendaAdminSimpleResDto>> agendaSimpleList() {
List<AgendaAdminSimpleResDto> agendas = agendaAdminService.getAgendaSimpleList();
return ResponseEntity.status(HttpStatus.OK).body(agendas);
}

@ApiResponses(value = {@ApiResponse(responseCode = "204", description = "Agenda 수정 성공"),
@ApiResponse(responseCode = "400", description = "Agenda 수정 요청이 잘못됨"),
@ApiResponse(responseCode = "404", description = "Agenda를 찾을 수 없음"),
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package gg.agenda.api.admin.agenda.controller.response;

import java.util.UUID;

import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;

import gg.data.agenda.Agenda;
import lombok.AccessLevel;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class AgendaAdminSimpleResDto {

UUID agendaKey;

String agendaTitle;

@Builder
public AgendaAdminSimpleResDto(UUID agendaKey, String agendaTitle) {
this.agendaKey = agendaKey;
this.agendaTitle = agendaTitle;
}

@Mapper
public interface MapStruct {

AgendaAdminSimpleResDto.MapStruct INSTANCE = Mappers.getMapper(AgendaAdminSimpleResDto.MapStruct.class);

@Mapping(target = "agendaKey", source = "agendaKey")
@Mapping(target = "agendaTitle", source = "title")
AgendaAdminSimpleResDto toDto(Agenda agenda);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import java.util.List;
import java.util.Objects;
import java.util.UUID;
import java.util.stream.Collectors;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.domain.Pageable;
Expand All @@ -17,6 +18,7 @@
import gg.admin.repo.agenda.AgendaAdminRepository;
import gg.admin.repo.agenda.AgendaTeamAdminRepository;
import gg.agenda.api.admin.agenda.controller.request.AgendaAdminUpdateReqDto;
import gg.agenda.api.admin.agenda.controller.response.AgendaAdminSimpleResDto;
import gg.data.agenda.Agenda;
import gg.data.agenda.AgendaTeam;
import gg.utils.exception.custom.BusinessException;
Expand Down Expand Up @@ -70,4 +72,11 @@ public void updateAgenda(UUID agendaKey, AgendaAdminUpdateReqDto agendaDto, Mult
agenda.updateAgendaCapacity(agendaDto.getAgendaMinTeam(), agendaDto.getAgendaMaxTeam(), teams);
agenda.updateAgendaTeamCapacity(agendaDto.getAgendaMinPeople(), agendaDto.getAgendaMaxPeople(), teams);
}

@Transactional(readOnly = true)
public List<AgendaAdminSimpleResDto> getAgendaSimpleList() {
return agendaAdminRepository.findAll().stream()
.map(AgendaAdminSimpleResDto.MapStruct.INSTANCE::toDto)
.collect(Collectors.toList());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -41,11 +41,13 @@
import gg.data.agenda.type.AgendaStatus;
import gg.data.agenda.type.Location;
import gg.data.user.User;
import gg.utils.AgendaTestDataUtils;
import gg.utils.TestDataUtils;
import gg.utils.annotation.IntegrationTest;
import gg.utils.converter.MultiValueMapConverter;
import gg.utils.dto.PageRequestDto;
import gg.utils.file.handler.AwsImageHandler;
import gg.utils.fixture.agenda.AgendaFixture;
import lombok.extern.slf4j.Slf4j;

@Slf4j
Expand All @@ -66,6 +68,9 @@ public class AgendaAdminControllerTest {
@Autowired
private AgendaMockData agendaMockData;

@Autowired
private AgendaFixture agendaFixture;

@Autowired
EntityManager em;

Expand Down Expand Up @@ -564,4 +569,42 @@ void updateAgendaAdminFailedWithMinPeople() throws Exception {
.andExpect(status().isBadRequest());
}
}

@Nested
@DisplayName("Admin Agenda 목록 간단 조회")
class GetAgendaAdminSimple {
@Test
@DisplayName("Admin Agenda 목록 간단 조회 성공")
void getAgendaAdminSimpleSuccess() throws Exception {
// given
agendaFixture.createAgenda(OPEN);
agendaFixture.createAgenda(FINISH);
agendaFixture.createAgenda(CANCEL);

// when
String response = mockMvc.perform(get("/agenda/admin/list")
.header("Authorization", "Bearer " + accessToken))
.andExpect(status().isOk())
.andReturn().getResponse().getContentAsString();
AgendaAdminResDto[] result = objectMapper.readValue(response, AgendaAdminResDto[].class);

// then
assertThat(result).hasSize(3);
}

@Test
@DisplayName("Admin Agenda 목록 간단 조회 성공 - 빈 리스트 반환")
void getAgendaAdminSimpleSuccessWithEmtpyList() throws Exception {
// given
// when
String response = mockMvc.perform(get("/agenda/admin/list")
.header("Authorization", "Bearer " + accessToken))
.andExpect(status().isOk())
.andReturn().getResponse().getContentAsString();
AgendaAdminResDto[] result = objectMapper.readValue(response, AgendaAdminResDto[].class);

// then
assertThat(result).isEmpty();
}
}
}

0 comments on commit 362e142

Please sign in to comment.