Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BE] 존재하는 모든 테스트 data.sql 의존성 제거 #225

Merged
merged 12 commits into from
Jul 27, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,18 @@

import io.restassured.RestAssured;
import org.junit.jupiter.api.BeforeEach;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.web.server.LocalServerPort;
import org.springframework.test.context.jdbc.Sql;
import team.teamby.teambyteam.common.builder.TestFixtureBuilder;

@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@Sql({"/h2-truncate.sql", "/h2-data.sql"})
public class AcceptanceTest {
@Sql({"/h2-truncate.sql"})
public abstract class AcceptanceTest {

@Autowired
protected TestFixtureBuilder testFixtureBuilder;

@LocalServerPort
private int port;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,19 @@
package team.teamby.teambyteam.common;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase;
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
import org.springframework.context.annotation.Import;
import org.springframework.test.context.jdbc.Sql;
import team.teamby.teambyteam.common.builder.BuilderSupporter;
import team.teamby.teambyteam.common.builder.TestFixtureBuilder;

@DataJpaTest
@Import(value = {TestFixtureBuilder.class, BuilderSupporter.class})
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
@Sql(value = {"/h2-truncate.sql", "/h2-data.sql"})
@Sql(value = {"/h2-truncate.sql"})
public abstract class RepositoryTest {

@Autowired
protected TestFixtureBuilder testFixtureBuilder;
}
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
package team.teamby.teambyteam.common;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.jdbc.Sql;
import org.springframework.transaction.annotation.Transactional;
import team.teamby.teambyteam.common.builder.TestFixtureBuilder;

@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE)
@Transactional
@Sql(value = {"/h2-truncate.sql", "/h2-data.sql"})
public abstract class ServiceTest {



@Autowired
protected TestFixtureBuilder testFixtureBuilder;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
package team.teamby.teambyteam.common.builder;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import team.teamby.teambyteam.member.domain.MemberRepository;
import team.teamby.teambyteam.member.domain.MemberTeamPlaceRepository;
import team.teamby.teambyteam.schedule.domain.ScheduleRepository;
import team.teamby.teambyteam.teamplace.domain.TeamPlaceRepository;

@Component
public class BuilderSupporter {

@Autowired
private ScheduleRepository scheduleRepository;

@Autowired
private MemberRepository memberRepository;

@Autowired
private MemberTeamPlaceRepository memberTeamPlaceRepository;

@Autowired
private TeamPlaceRepository teamPlaceRepository;

public ScheduleRepository scheduleRepository() {
return scheduleRepository;
}

public MemberRepository memberRepository() {
return memberRepository;
}

public MemberTeamPlaceRepository memberTeamPlaceRepository() {
return memberTeamPlaceRepository;
}

public TeamPlaceRepository teamPlaceRepository() {
return teamPlaceRepository;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
package team.teamby.teambyteam.common.builder;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import team.teamby.teambyteam.member.domain.Member;
import team.teamby.teambyteam.member.domain.MemberTeamPlace;
import team.teamby.teambyteam.schedule.domain.Schedule;
import team.teamby.teambyteam.teamplace.domain.TeamPlace;

import java.util.List;

@Component
public class TestFixtureBuilder {

@Autowired
private BuilderSupporter bs;

public Schedule buildSchedule(final Schedule schedule) {
return bs.scheduleRepository().save(schedule);
}

public Member buildMember(final Member member) {
return bs.memberRepository().save(member);
}

public MemberTeamPlace buildMemberTeamPlace(final MemberTeamPlace memberTeamPlace) {
return bs.memberTeamPlaceRepository().save(memberTeamPlace);
}

public TeamPlace buildTeamPlace(final TeamPlace teamPlace) {
return bs.teamPlaceRepository().save(teamPlace);
}

public List<Schedule> buildSchedules(final List<Schedule> schedules) {
return bs.scheduleRepository().saveAll(schedules);
}

public List<Member> buildMembers(final List<Member> members) {
return bs.memberRepository().saveAll(members);
}

public List<MemberTeamPlace> buildMemberTeamPlaces(final List<MemberTeamPlace> memberTeamPlaces) {
return bs.memberTeamPlaceRepository().saveAll(memberTeamPlaces);
}

public List<TeamPlace> buildTeamPlaces(final List<TeamPlace> teamPlaces) {
return bs.teamPlaceRepository().saveAll(teamPlaces);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
package team.teamby.teambyteam.common.fixtures;

import team.teamby.teambyteam.member.domain.Member;
import team.teamby.teambyteam.member.domain.vo.Email;
import team.teamby.teambyteam.member.domain.vo.Name;
import team.teamby.teambyteam.member.domain.vo.ProfileImageUrl;

public class MemberFixtures {

/**
* NAME
*/
public static final String PHILIP_NAME = "jae_philip_yang";
public static final String ROY_NAME = "roy";
public static final String SEONGHA_NAME = "seongha";
public static final String ENDEL_NAME = "endel";

/**
* EMAIL
*/
public static final String PHILIP_EMAIL = "[email protected]";
public static final String ROY_EMAIL = "[email protected]";
public static final String SEONGHA_EMAIL = "[email protected]";
public static final String ENDEL_EMAIL = "[email protected]";

/**
* PROFILE_IMAGE_URL
*/
public static final String PHILIP_PROFILE_IMAGE_URL = "/profile/philip.gif";
public static final String ROY_PROFILE_IMAGE_URL = "/profile/roy.png";
public static final String SEONGHA_PROFILE_IMAGE_URL = "/profile/seongha.png";
public static final String ENDEL_PROFILE_IMAGE_URL = "/profile/endel.png";

/**
* ENTITY
*/
public static Member PHILIP() {
return new Member(new Name(PHILIP_NAME), new Email(PHILIP_EMAIL), new ProfileImageUrl(PHILIP_PROFILE_IMAGE_URL));
}
public static Member ROY() {
return new Member(new Name(ROY_NAME), new Email(ROY_EMAIL), new ProfileImageUrl(ROY_PROFILE_IMAGE_URL));
}

public static Member SEONGHA() {
return new Member(new Name(SEONGHA_NAME), new Email(SEONGHA_EMAIL), new ProfileImageUrl(SEONGHA_PROFILE_IMAGE_URL));
}

public static Member ENDEL() {
return new Member(new Name(ENDEL_NAME), new Email(ENDEL_EMAIL), new ProfileImageUrl(ENDEL_PROFILE_IMAGE_URL));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package team.teamby.teambyteam.common.fixtures;

import team.teamby.teambyteam.member.domain.MemberTeamPlace;

public class MemberTeamPlaceFixtures {

public static MemberTeamPlace PHILIP_ENGLISH_TEAM_PLACE() {
return new MemberTeamPlace();
}

public static MemberTeamPlace PHILIP_JAPANESE_TEAM_PLACE() {
return new MemberTeamPlace();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
package team.teamby.teambyteam.common.fixtures;

import team.teamby.teambyteam.schedule.application.dto.ScheduleRegisterRequest;
import team.teamby.teambyteam.schedule.application.dto.ScheduleUpdateRequest;
import team.teamby.teambyteam.schedule.domain.Schedule;
import team.teamby.teambyteam.schedule.domain.vo.Span;
import team.teamby.teambyteam.schedule.domain.vo.Title;

import java.time.LocalDateTime;

public class ScheduleFixtures {

/**
* SCHEDULE
*/
public static final String MONTH_5_FIRST_DAY_SCHEDULE_TITLE = "5월 첫 날 일정";
public static final String MONTH_5_LAST_DAY_SCHEDULE_TITLE = "5월 마지막 날 일정";
public static final String MONTH_6_AND_MONTH_7_SCHEDULE_TITLE = "6월~7월 일정";
public static final String MONTH_7_AND_DAY_12_N_HOUR_SCHEDULE_TITLE = "7월 12일 N시간 일정";
public static final String MONTH_7_AND_DAY_12_ALL_DAY_SCHEDULE_TITLE = "7월 12일 종일 일정";
public static final String MONTH_7_DAY_28_AND_MONTH_8_SCHEDULE_TITLE = "7월 28일~8월 일정";
public static final String MONTH_7_DAY_29_AND_MONTH_8_SCHEDULE_TITLE = "7월 29일~8월 일정";

/**
* DATE
*/
public static final LocalDateTime DATE_2023_05_01_00_00_00 = LocalDateTime.of(2023, 5, 1, 0, 0, 0);
public static final LocalDateTime DATE_2023_05_01_23_59_59 = LocalDateTime.of(2023, 5, 1, 23, 59, 59);
public static final LocalDateTime DATE_2023_05_31_00_00_00 = LocalDateTime.of(2023, 5, 31, 0, 0, 0);
public static final LocalDateTime DATE_2023_05_31_23_59_59 = LocalDateTime.of(2023, 5, 31, 23, 59, 59);
public static final LocalDateTime DATE_2023_06_25_10_00_00 = LocalDateTime.of(2023, 6, 25, 10, 0, 0);
public static final LocalDateTime DATE_2023_07_12_00_00_00 = LocalDateTime.of(2023, 7, 12, 0, 0, 0);
public static final LocalDateTime DATE_2023_07_12_10_00_00 = LocalDateTime.of(2023, 7, 12, 10, 0, 0);
public static final LocalDateTime DATE_2023_07_12_18_00_00 = LocalDateTime.of(2023, 7, 12, 18, 0, 0);
public static final LocalDateTime DATE_2023_07_12_23_59_59 = LocalDateTime.of(2023, 7, 12, 23, 59, 59);
public static final LocalDateTime DATE_2023_07_28_10_00_00 = LocalDateTime.of(2023, 7, 28, 10, 0, 0);
public static final LocalDateTime DATE_2023_07_29_10_00_00 = LocalDateTime.of(2023, 7, 29, 10, 0, 0);
public static final LocalDateTime DATE_2023_08_30_12_00_00 = LocalDateTime.of(2023, 8, 30, 10, 0, 0);

/**
* REGISTER_REQUEST
*/
public static final ScheduleRegisterRequest MONTH_7_AND_DAY_12_N_HOUR_SCHEDULE_REGISTER_REQUEST = new ScheduleRegisterRequest(MONTH_7_AND_DAY_12_N_HOUR_SCHEDULE_TITLE, DATE_2023_07_12_10_00_00, DATE_2023_07_12_18_00_00);

/**
* UPDATE_REQUEST
*/
public static final ScheduleUpdateRequest MONTH_7_AND_DAY_12_N_HOUR_SCHEDULE_UPDATE_REQUEST = new ScheduleUpdateRequest(MONTH_7_AND_DAY_12_N_HOUR_SCHEDULE_TITLE, DATE_2023_07_12_00_00_00, DATE_2023_07_12_18_00_00);

/**
* ENTITY
*/
public static Schedule MONTH_5_FIRST_DAY_SCHEDULE(final Long teamPlaceId) {
return new Schedule(teamPlaceId, new Title(teamPlaceId + "번 팀플 " + MONTH_5_FIRST_DAY_SCHEDULE_TITLE), new Span(DATE_2023_05_01_00_00_00, DATE_2023_05_01_23_59_59));
}

public static Schedule MONTH_5_LAST_DAY_SCHEDULE(final Long teamPlaceId) {
return new Schedule(teamPlaceId, new Title(teamPlaceId + "번 팀플 " + MONTH_5_LAST_DAY_SCHEDULE_TITLE), new Span(DATE_2023_05_31_00_00_00, DATE_2023_05_31_23_59_59));
}

public static Schedule MONTH_6_AND_MONTH_7_SCHEDULE(final Long teamPlaceId) {
return new Schedule(teamPlaceId, new Title(teamPlaceId + "번 팀플 " + MONTH_6_AND_MONTH_7_SCHEDULE_TITLE), new Span(DATE_2023_06_25_10_00_00, DATE_2023_07_12_18_00_00));
}

public static Schedule MONTH_7_AND_DAY_12_N_HOUR_SCHEDULE(final Long teamPlaceId) {
return new Schedule(teamPlaceId, new Title(teamPlaceId + "번 팀플 " + MONTH_7_AND_DAY_12_N_HOUR_SCHEDULE_TITLE), new Span(DATE_2023_07_12_10_00_00, DATE_2023_07_12_18_00_00));
}

public static Schedule MONTH_7_AND_DAY_12_ALL_DAY_SCHEDULE(final Long teamPlaceId) {
return new Schedule(teamPlaceId, new Title(teamPlaceId + "번 팀플 " + MONTH_7_AND_DAY_12_ALL_DAY_SCHEDULE_TITLE), new Span(DATE_2023_07_12_00_00_00, DATE_2023_07_12_23_59_59));
}

public static Schedule MONTH_7_DAY_28_AND_MONTH_8_SCHEDULE(final Long teamPlaceId) {
return new Schedule(teamPlaceId, new Title(teamPlaceId + "번 팀플 " + MONTH_7_DAY_28_AND_MONTH_8_SCHEDULE_TITLE), new Span(DATE_2023_07_28_10_00_00, DATE_2023_08_30_12_00_00));
}

public static Schedule MONTH_7_DAY_29_AND_MONTH_8_SCHEDULE(final Long teamPlaceId) {
return new Schedule(teamPlaceId, new Title(teamPlaceId + "번 팀플 " + MONTH_7_DAY_29_AND_MONTH_8_SCHEDULE_TITLE), new Span(DATE_2023_07_29_10_00_00, DATE_2023_08_30_12_00_00));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package team.teamby.teambyteam.common.fixtures;

import team.teamby.teambyteam.teamplace.domain.TeamPlace;
import team.teamby.teambyteam.teamplace.domain.vo.Name;

public class TeamPlaceFixtures {

public static final String ENGLISH_TEAM_PLACE_NAME = "영어 팀플";
public static final String JAPANESE_TEAM_PLACE_NAME = "일본어 팀플";

public static TeamPlace ENGLISH_TEAM_PLACE() {
return new TeamPlace(new Name(ENGLISH_TEAM_PLACE_NAME));
}

public static TeamPlace JAPANESE_TEAM_PLACE() {
return new TeamPlace(new Name(JAPANESE_TEAM_PLACE_NAME));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package team.teamby.teambyteam.common.fixtures.acceptance;

import io.restassured.RestAssured;
import io.restassured.http.Header;
import io.restassured.response.ExtractableResponse;
import io.restassured.response.Response;

public class MyCalendarScheduleAcceptanceFixtures {

private static final String JWT_PREFIX = "Bearer ";
private static final String JWT_TOKEN = "eyJhbGciOiJIUzI1NiJ9.eyJlbWFpbCI6InBpaWx5YW5nLmRldkBnbWFpbC5jb20iLCJpYXQiOjE2OTA0MzEzMDIsImV4cCI6MTY5MTQzMTMwMn0.W32l9nFapiQXUuQ2WzQ8-X8PA8VsDIX1rC1X67PWcn0";

public static ExtractableResponse<Response> FIND_PERIOD_SCHEDULE_REQUEST(final Integer year, final Integer month) {
return RestAssured.given().log().all()
.header(new Header("Authorization", JWT_PREFIX + JWT_TOKEN))
.queryParam("year", year)
.queryParam("month", month)
.when().log().all()
.get("/api/my-calendar/schedules")
.then().log().all()
.extract();
}
}
Loading