-
Notifications
You must be signed in to change notification settings - Fork 9
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
6 changed files
with
249 additions
and
15 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
20 changes: 15 additions & 5 deletions
20
...enda-api/src/main/java/gg/agenda/api/admin/agendateam/service/AgendaTeamAdminService.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,21 +1,31 @@ | ||
package gg.agenda.api.admin.agendateam.service; | ||
|
||
import gg.admin.repo.agenda.AgendaTeamAdminRepository; | ||
import gg.data.agenda.AgendaTeam; | ||
import gg.utils.dto.PageRequestDto; | ||
import static gg.utils.exception.ErrorCode.*; | ||
|
||
import java.util.List; | ||
import java.util.UUID; | ||
import lombok.RequiredArgsConstructor; | ||
|
||
import org.springframework.data.domain.Pageable; | ||
import org.springframework.stereotype.Service; | ||
|
||
import gg.admin.repo.agenda.AgendaAdminRepository; | ||
import gg.admin.repo.agenda.AgendaTeamAdminRepository; | ||
import gg.data.agenda.Agenda; | ||
import gg.data.agenda.AgendaTeam; | ||
import gg.utils.exception.custom.NotExistException; | ||
import lombok.RequiredArgsConstructor; | ||
|
||
@Service | ||
@RequiredArgsConstructor | ||
public class AgendaTeamAdminService { | ||
|
||
private final AgendaAdminRepository agendaAdminRepository; | ||
|
||
private final AgendaTeamAdminRepository agendaTeamAdminRepository; | ||
|
||
public List<AgendaTeam> getAgendaTeamList(UUID agendaKey, Pageable pageable) { | ||
return null; | ||
Agenda agenda = agendaAdminRepository.findByAgendaKey(agendaKey) | ||
.orElseThrow(() -> new NotExistException(AGENDA_NOT_FOUND)); | ||
return agendaTeamAdminRepository.findAllByAgenda(agenda, pageable).getContent(); | ||
} | ||
} |
134 changes: 134 additions & 0 deletions
134
...rc/test/java/gg/agenda/api/admin/agendateam/controller/AgendaTeamAdminControllerTest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,134 @@ | ||
package gg.agenda.api.admin.agendateam.controller; | ||
|
||
import static org.assertj.core.api.AssertionsForClassTypes.*; | ||
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; | ||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; | ||
|
||
import java.util.List; | ||
import java.util.UUID; | ||
|
||
import javax.persistence.EntityManager; | ||
import javax.transaction.Transactional; | ||
|
||
import org.junit.jupiter.api.BeforeEach; | ||
import org.junit.jupiter.api.DisplayName; | ||
import org.junit.jupiter.api.Nested; | ||
import org.junit.jupiter.api.Test; | ||
import org.junit.jupiter.params.ParameterizedTest; | ||
import org.junit.jupiter.params.provider.ValueSource; | ||
import org.springframework.beans.factory.annotation.Autowired; | ||
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; | ||
import org.springframework.http.MediaType; | ||
import org.springframework.test.web.servlet.MockMvc; | ||
|
||
import com.fasterxml.jackson.databind.ObjectMapper; | ||
|
||
import gg.admin.repo.agenda.AgendaAdminRepository; | ||
import gg.admin.repo.agenda.AgendaTeamAdminRepository; | ||
import gg.agenda.api.admin.agendateam.controller.response.AgendaTeamResDto; | ||
import gg.data.agenda.Agenda; | ||
import gg.data.agenda.AgendaTeam; | ||
import gg.data.agenda.type.AgendaTeamStatus; | ||
import gg.data.user.User; | ||
import gg.utils.AgendaTestDataUtils; | ||
import gg.utils.TestDataUtils; | ||
import gg.utils.annotation.IntegrationTest; | ||
import gg.utils.dto.PageRequestDto; | ||
import gg.utils.fixture.agenda.AgendaFixture; | ||
import gg.utils.fixture.agenda.AgendaTeamFixture; | ||
|
||
@IntegrationTest | ||
@Transactional | ||
@AutoConfigureMockMvc | ||
public class AgendaTeamAdminControllerTest { | ||
|
||
@Autowired | ||
private MockMvc mockMvc; | ||
|
||
@Autowired | ||
private ObjectMapper objectMapper; | ||
|
||
@Autowired | ||
private TestDataUtils testDataUtils; | ||
|
||
@Autowired | ||
private AgendaFixture agendaFixture; | ||
|
||
@Autowired | ||
private AgendaTeamFixture agendaTeamFixture; | ||
|
||
@Autowired | ||
private AgendaTestDataUtils agendaTestDataUtils; | ||
|
||
@Autowired | ||
EntityManager em; | ||
|
||
@Autowired | ||
AgendaAdminRepository agendaAdminRepository; | ||
|
||
@Autowired | ||
AgendaTeamAdminRepository agendaTeamAdminRepository; | ||
|
||
private User user; | ||
|
||
private String accessToken; | ||
|
||
@BeforeEach | ||
void setUp() { | ||
user = testDataUtils.createAdminUser(); | ||
accessToken = testDataUtils.getLoginAccessTokenFromUser(user); | ||
} | ||
|
||
@Nested | ||
@DisplayName("Admin AgendaTeam 전체 조회") | ||
class GetAgencyTeamListAdmin { | ||
|
||
@ParameterizedTest | ||
@ValueSource(ints = {1, 2, 3, 4, 5}) | ||
@DisplayName("Admin AgendaTeam 전체 조회 성공") | ||
void getAgendaTeamListAdminSuccess(int page) throws Exception { | ||
// given | ||
int size = 10; | ||
int total = 37; | ||
Agenda agenda = agendaFixture.createAgenda(); | ||
List<AgendaTeam> teams = agendaTeamFixture | ||
.createAgendaTeamList(agenda, AgendaTeamStatus.CONFIRM, total); | ||
PageRequestDto pageRequestDto = new PageRequestDto(page, size); | ||
String request = objectMapper.writeValueAsString(pageRequestDto); | ||
|
||
// when | ||
String response = mockMvc.perform(get("/admin/agenda/team/list") | ||
.header("Authorization", "Bearer " + accessToken) | ||
.param("agenda_key", agenda.getAgendaKey().toString()) | ||
.contentType(MediaType.APPLICATION_JSON) | ||
.content(request)) | ||
.andExpect(status().isOk()).andReturn().getResponse().getContentAsString(); | ||
AgendaTeamResDto[] result = objectMapper.readValue(response, AgendaTeamResDto[].class); | ||
|
||
// then | ||
assertThat(result).isNotNull(); | ||
assertThat(result).hasSize(((page - 1) * size) < teams.size() | ||
? Math.min(size, teams.size() - (page - 1) * size) : 0); | ||
teams.sort((a, b) -> b.getId().compareTo(a.getId())); | ||
for (int i = 0; i < result.length; i++) { | ||
assertThat(result[i].getTeamKey()).isEqualTo(teams.get(i + (page - 1) * size).getTeamKey()); | ||
} | ||
} | ||
|
||
@Test | ||
@DisplayName("Admin AgendaTeam 전체 조회 실패 - Agenda 없음") | ||
void getAgendaTeamListAdminFailedWithNoAgenda() throws Exception { | ||
// given | ||
PageRequestDto pageRequestDto = new PageRequestDto(1, 10); | ||
String request = objectMapper.writeValueAsString(pageRequestDto); | ||
|
||
// expected | ||
mockMvc.perform(get("/admin/agenda/team/list") | ||
.header("Authorization", "Bearer " + accessToken) | ||
.param("agenda_key", UUID.randomUUID().toString()) | ||
.contentType(MediaType.APPLICATION_JSON) | ||
.content(request)) | ||
.andExpect(status().isNotFound()); | ||
} | ||
} | ||
} |
78 changes: 78 additions & 0 deletions
78
...-api/src/test/java/gg/agenda/api/admin/agendateam/service/AgendaTeamAdminServiceTest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,78 @@ | ||
package gg.agenda.api.admin.agendateam.service; | ||
|
||
import static org.assertj.core.api.Assertions.*; | ||
import static org.junit.jupiter.api.Assertions.*; | ||
import static org.mockito.Mockito.*; | ||
|
||
import java.util.ArrayList; | ||
import java.util.List; | ||
import java.util.Optional; | ||
import java.util.UUID; | ||
|
||
import org.junit.jupiter.api.DisplayName; | ||
import org.junit.jupiter.api.Nested; | ||
import org.junit.jupiter.api.Test; | ||
import org.mockito.InjectMocks; | ||
import org.mockito.Mock; | ||
import org.springframework.data.domain.PageImpl; | ||
import org.springframework.data.domain.PageRequest; | ||
import org.springframework.data.domain.Pageable; | ||
import org.springframework.data.domain.Sort; | ||
|
||
import gg.admin.repo.agenda.AgendaAdminRepository; | ||
import gg.admin.repo.agenda.AgendaTeamAdminRepository; | ||
import gg.data.agenda.Agenda; | ||
import gg.data.agenda.AgendaTeam; | ||
import gg.utils.annotation.UnitTest; | ||
import gg.utils.exception.custom.NotExistException; | ||
|
||
@UnitTest | ||
public class AgendaTeamAdminServiceTest { | ||
|
||
@Mock | ||
private AgendaAdminRepository agendaAdminRepository; | ||
|
||
@Mock | ||
private AgendaTeamAdminRepository agendaTeamAdminRepository; | ||
|
||
@InjectMocks | ||
private AgendaTeamAdminService agendaTeamAdminService; | ||
|
||
@Nested | ||
@DisplayName("Admin AgendaTeam 전체 조회") | ||
class GetAgendaTeamListAdmin { | ||
|
||
@Test | ||
@DisplayName("Admin AgendaTeam 전체 조회 성공") | ||
void getAgendaTeamListAdminSuccess() { | ||
// given | ||
Agenda agenda = Agenda.builder().build(); | ||
List<AgendaTeam> announcements = new ArrayList<>(); | ||
Pageable pageable = PageRequest.of(0, 10, Sort.by("id").descending()); | ||
when(agendaAdminRepository.findByAgendaKey(any(UUID.class))).thenReturn(Optional.of(agenda)); | ||
when(agendaTeamAdminRepository.findAllByAgenda(any(Agenda.class), any(Pageable.class))) | ||
.thenReturn(new PageImpl<>(announcements)); | ||
|
||
// when | ||
List<AgendaTeam> result = agendaTeamAdminService.getAgendaTeamList(agenda.getAgendaKey(), pageable); | ||
|
||
// then | ||
verify(agendaAdminRepository, times(1)).findByAgendaKey(any(UUID.class)); | ||
verify(agendaTeamAdminRepository, times(1)) | ||
.findAllByAgenda(any(Agenda.class), any(Pageable.class)); | ||
assertThat(result).isNotNull(); | ||
} | ||
|
||
@Test | ||
@DisplayName("Admin AgendaTeam 전체 조회 실패 - Agenda 없음") | ||
void getAgendaTeamListAdminFailedWithNoAgenda() { | ||
// given | ||
Pageable pageable = mock(Pageable.class); | ||
when(agendaAdminRepository.findByAgendaKey(any(UUID.class))).thenReturn(Optional.empty()); | ||
|
||
// expected | ||
assertThrows(NotExistException.class, | ||
() -> agendaTeamAdminService.getAgendaTeamList(UUID.randomUUID(), pageable)); | ||
} | ||
} | ||
} |