Skip to content

Commit

Permalink
[test] 팀 참가 테스트 코드 작성
Browse files Browse the repository at this point in the history
  • Loading branch information
AreSain committed Jul 23, 2024
1 parent 15f2d4c commit 3bf8554
Show file tree
Hide file tree
Showing 10 changed files with 600 additions and 22 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,7 @@ public ResponseEntity<List<ConfirmTeamResDto>> confirmTeamList(@RequestBody @Val
* 아젠다 팀 참여하기
* @param user 사용자 정보, teamKeyReqDto 팀 KEY 요청 정보, agendaId 아젠다 아이디
*/
@PatchMapping
@PatchMapping("/join")
public ResponseEntity<Void> attendTeamModify(@Parameter(hidden = true) @Login UserDto user,
@RequestBody @Valid TeamKeyReqDto teamKeyReqDto, @RequestParam("agenda_key") UUID agendaKey) {
agendaTeamService.modifyAttendTeam(user, teamKeyReqDto, agendaKey);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -274,10 +274,6 @@ public void modifyAttendTeam(UserDto user, TeamKeyReqDto teamKeyReqDto, UUID age
.findByAgendaAndTeamKeyAndStatus(agenda, teamKeyReqDto.getTeamKey(), OPEN, CONFIRM)
.orElseThrow(() -> new NotExistException(AGENDA_TEAM_NOT_FOUND));

if (agenda.getLocation() != Location.MIX && agenda.getLocation() != agendaProfile.getLocation()) {
throw new BusinessException(LOCATION_NOT_VALID);
}

Ticket ticket = ticketRepository.findByAgendaProfileAndIsApprovedTrueAndIsUsedFalse(agendaProfile)
.orElseThrow(() -> new ForbiddenException(TICKET_NOT_EXIST));

Expand All @@ -286,6 +282,7 @@ public void modifyAttendTeam(UserDto user, TeamKeyReqDto teamKeyReqDto, UUID age
throw new ForbiddenException(AGENDA_TEAM_FORBIDDEN);
});

agenda.attendTeam(agendaProfile.getLocation(), LocalDateTime.now());
agendaTeam.attendTeam(agenda);
ticket.useTicket(agenda.getAgendaKey());
agendaTeamProfileRepository.save(new AgendaTeamProfile(agendaTeam, agenda, agendaProfile));
Expand Down

Large diffs are not rendered by default.

6 changes: 6 additions & 0 deletions gg-data/src/main/java/gg/data/agenda/Agenda.java
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,12 @@ public void confirmTeam(Location location, LocalDateTime now) {
mustHaveCapacity();
}

public void attendTeam(Location location, LocalDateTime now) {
mustBeWithinLocation(location);
mustStatusOnGoing();
mustBeforeDeadline(now);
}

public void cancelTeam(LocalDateTime now) {
mustStatusOnGoing();
mustBeforeDeadline(now);
Expand Down
17 changes: 9 additions & 8 deletions gg-data/src/main/java/gg/data/agenda/AgendaTeam.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package gg.data.agenda;

import static gg.data.agenda.type.AgendaTeamStatus.*;
import static gg.utils.exception.ErrorCode.*;

import java.util.UUID;
Expand Down Expand Up @@ -91,35 +92,35 @@ public void acceptAward(String award, int awardPriority) {
}

public void confirm() {
if (this.status == AgendaTeamStatus.CANCEL) {
if (this.status == CANCEL) {
throw new BusinessException(AGENDA_TEAM_ALREADY_CANCEL);
}
if (this.status == AgendaTeamStatus.CONFIRM) {
if (this.status == CONFIRM) {
throw new BusinessException(AGENDA_TEAM_ALREADY_CONFIRM);
}
this.status = AgendaTeamStatus.CONFIRM;
this.status = CONFIRM;
}

public void leaveTeamLeader() {
if (this.status == AgendaTeamStatus.CANCEL) {
if (this.status == CANCEL) {
throw new BusinessException(AGENDA_TEAM_ALREADY_CANCEL);
}
this.status = AgendaTeamStatus.CANCEL;
this.status = CANCEL;
this.mateCount = 0;
}

public void leaveTeamMate() {
if (this.status == AgendaTeamStatus.CANCEL) {
if (this.status == CANCEL) {
throw new BusinessException(AGENDA_TEAM_ALREADY_CANCEL);
}
this.mateCount--;
}

public void attendTeam(Agenda agenda) {
if (this.status == AgendaTeamStatus.CANCEL) {
if (this.status == CANCEL) {
throw new BusinessException(AGENDA_TEAM_ALREADY_CANCEL);

Check warning on line 121 in gg-data/src/main/java/gg/data/agenda/AgendaTeam.java

View check run for this annotation

Codecov / codecov/patch

gg-data/src/main/java/gg/data/agenda/AgendaTeam.java#L121

Added line #L121 was not covered by tests
}
if (this.status == AgendaTeamStatus.CONFIRM) {
if (this.status == CONFIRM) {
throw new BusinessException(AGENDA_TEAM_ALREADY_CONFIRM);
}
if (this.mateCount >= agenda.getMaxPeople()) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
package gg.utils.fixture.agenda;

import gg.data.agenda.Agenda;
import gg.data.agenda.AgendaAnnouncement;
import gg.repo.agenda.AgendaAnnouncementRepository;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import javax.persistence.EntityManager;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;

@Component
@RequiredArgsConstructor
public class AgendaAnnouncementFixture {

private final AgendaAnnouncementRepository agendaAnnouncementRepository;

private final EntityManager em;

public AgendaAnnouncement createAgendaAnnouncement(Agenda agenda) {
AgendaAnnouncement announcement = AgendaAnnouncement.builder()
.title("title " + UUID.randomUUID())
.content("content " + UUID.randomUUID())
.isShow(true)
.agenda(agenda)
.build();
em.persist(announcement);
em.flush();
em.clear();
return announcement;
}

public List<AgendaAnnouncement> createAgendaAnnouncementList(Agenda agenda, int size) {
List<AgendaAnnouncement> announcements = new ArrayList<>();
for (int i = 0; i < size; i++) {
announcements.add(AgendaAnnouncement.builder()
.title("title " + i)
.content("content " + i)
.isShow(true)
.agenda(agenda)
.build());
}
return agendaAnnouncementRepository.saveAll(announcements);
}

public List<AgendaAnnouncement> createAgendaAnnouncementList(Agenda agenda, int size, boolean isShow) {
List<AgendaAnnouncement> announcements = new ArrayList<>();
for (int i = 0; i < size; i++) {
announcements.add(AgendaAnnouncement.builder()
.title("title " + i)
.content("content " + i)
.isShow(isShow)
.agenda(agenda)
.build());
}
return agendaAnnouncementRepository.saveAll(announcements);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
package gg.utils.fixture.agenda;

import static gg.data.agenda.type.AgendaStatus.*;

import java.time.LocalDateTime;
import java.util.UUID;

import org.springframework.stereotype.Component;

import gg.data.agenda.Agenda;
import gg.data.agenda.type.AgendaStatus;
import gg.data.agenda.type.Location;
import gg.repo.agenda.AgendaRepository;
import lombok.RequiredArgsConstructor;

@Component
@RequiredArgsConstructor
public class AgendaFixture {

private final AgendaRepository agendaRepository;

public Agenda createAgenda() {
Agenda agenda = Agenda.builder()
.title("title " + UUID.randomUUID())
.content("content " + UUID.randomUUID())
.deadline(LocalDateTime.now().plusDays(3))
.startTime(LocalDateTime.now().plusDays(5))
.endTime(LocalDateTime.now().plusDays(6))
.minTeam(2)
.maxTeam(5)
.currentTeam(0)
.minPeople(1)
.maxPeople(5)
.status(ON_GOING)
.posterUri("posterUri")
.hostIntraId("hostIntraId")
.location(Location.MIX)
.isOfficial(true)
.isRanking(true)
.build();
return agendaRepository.save(agenda);
}

public Agenda createAgenda(Location location) {
Agenda agenda = Agenda.builder()
.title("title " + UUID.randomUUID())
.content("content " + UUID.randomUUID())
.deadline(LocalDateTime.now().plusDays(3))
.startTime(LocalDateTime.now().plusDays(5))
.endTime(LocalDateTime.now().plusDays(6))
.minTeam(2)
.maxTeam(5)
.currentTeam(0)
.minPeople(1)
.maxPeople(5)
.status(ON_GOING)
.posterUri("posterUri")
.hostIntraId("hostIntraId")
.location(location)
.isOfficial(true)
.isRanking(true)
.build();
return agendaRepository.save(agenda);
}

public Agenda createAgenda(LocalDateTime localDateTime) {
Agenda agenda = Agenda.builder()
.title("title " + UUID.randomUUID())
.content("content " + UUID.randomUUID())
.deadline(localDateTime)
.startTime(localDateTime.plusDays(2))
.endTime(localDateTime.plusDays(3))
.minTeam(2)
.maxTeam(5)
.currentTeam(0)
.minPeople(1)
.maxPeople(5)
.status(ON_GOING)
.posterUri("posterUri")
.hostIntraId("hostIntraId")
.location(Location.MIX)
.isOfficial(true)
.isRanking(true)
.build();
return agendaRepository.save(agenda);
}

public Agenda createAgenda(AgendaStatus agendaStatus) {
Agenda agenda = Agenda.builder()
.title("title " + UUID.randomUUID())
.content("content " + UUID.randomUUID())
.deadline(LocalDateTime.now().plusDays(3))
.startTime(LocalDateTime.now().plusDays(5))
.endTime(LocalDateTime.now().plusDays(6))
.minTeam(2)
.maxTeam(5)
.currentTeam(0)
.minPeople(1)
.maxPeople(5)
.status(agendaStatus)
.posterUri("posterUri")
.hostIntraId("hostIntraId")
.location(Location.MIX)
.isOfficial(true)
.isRanking(true)
.build();
return agendaRepository.save(agenda);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
package gg.utils.fixture.agenda;

import static gg.data.agenda.type.AgendaTeamStatus.*;
import static gg.data.agenda.type.Location.*;

import java.util.UUID;

import org.springframework.stereotype.Component;

import gg.data.agenda.Agenda;
import gg.data.agenda.AgendaTeam;
import gg.data.agenda.type.AgendaTeamStatus;
import gg.data.agenda.type.Location;
import gg.data.user.User;
import gg.repo.agenda.AgendaTeamRepository;
import lombok.RequiredArgsConstructor;

@Component
@RequiredArgsConstructor
public class AgendaTeamFixture {
private final AgendaTeamRepository agendaTeamRepository;

public AgendaTeam createAgendaTeam(Agenda agenda) {
AgendaTeam agendaTeam = AgendaTeam.builder()
.agenda(agenda)
.teamKey(UUID.randomUUID())
.name("name")
.content("content")
.leaderIntraId("leaderIntraId")
.status(OPEN)
.location(MIX)
.mateCount(3)
.awardPriority(1)
.isPrivate(false)
.build();
return agendaTeamRepository.save(agendaTeam);
}

public AgendaTeam createAgendaTeam(Agenda agenda, Location location) {
AgendaTeam agendaTeam = AgendaTeam.builder()
.agenda(agenda)
.teamKey(UUID.randomUUID())
.name("name")
.content("content")
.leaderIntraId("leaderIntraId")
.status(OPEN)
.location(location)
.mateCount(1)
.awardPriority(1)
.isPrivate(false)
.build();
return agendaTeamRepository.save(agendaTeam);
}

public AgendaTeam createAgendaTeam(int mateCount, Agenda agenda, User seoulUser, Location location) {
AgendaTeam agendaTeam = AgendaTeam.builder()
.agenda(agenda)
.teamKey(UUID.randomUUID())
.name("name")
.content("content")
.leaderIntraId(seoulUser.getIntraId())
.status(OPEN)
.location(location)
.mateCount(mateCount)
.awardPriority(1)
.isPrivate(false)
.build();
return agendaTeamRepository.save(agendaTeam);
}

public AgendaTeam createAgendaTeam(Agenda agenda, Location location, AgendaTeamStatus agendaTeamStatus) {
AgendaTeam agendaTeam = AgendaTeam.builder()
.agenda(agenda)
.teamKey(UUID.randomUUID())
.name("name")
.content("content")
.leaderIntraId("leaderIntraId")
.status(agendaTeamStatus)
.location(location)
.mateCount(3)
.awardPriority(1)
.isPrivate(false)
.build();
return agendaTeamRepository.save(agendaTeam);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package gg.utils.fixture.agenda;

import org.springframework.stereotype.Component;

import gg.data.agenda.Agenda;
import gg.data.agenda.AgendaProfile;
import gg.data.agenda.AgendaTeam;
import gg.data.agenda.AgendaTeamProfile;
import gg.repo.agenda.AgendaTeamProfileRepository;
import lombok.RequiredArgsConstructor;

@Component
@RequiredArgsConstructor
public class AgendaTeamProfileFixture {
private final AgendaTeamProfileRepository agendaTeamProfileRepository;

public AgendaTeamProfile createAgendaTeamProfile(Agenda agenda, AgendaTeam agendaTeam,
AgendaProfile agendaProfile) {
AgendaTeamProfile agendaTeamProfile = AgendaTeamProfile.builder()
.agenda(agenda)
.agendaTeam(agendaTeam)
.profile(agendaProfile)
.isExist(true)
.build();
return agendaTeamProfileRepository.save(agendaTeamProfile);
}
}
Loading

0 comments on commit 3bf8554

Please sign in to comment.