Skip to content

Commit 913d59a

Browse files
authored
[DDING-000-club-test] Club service 테스트코드 리팩토링 (#350)
1 parent 4b07e0c commit 913d59a

File tree

4 files changed

+276
-220
lines changed

4 files changed

+276
-220
lines changed

src/test/java/ddingdong/ddingdongBE/common/fixture/FormFixture.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ public static Form createForm(Club club) {
2020
.endDate(LocalDate.of(2025, 4, 15))
2121
.hasInterview(true)
2222
.sections(List.of("자기소개", "지원 동기", "경력 및 경험"))
23+
.club(club)
2324
.build();
2425
}
2526

@@ -64,4 +65,16 @@ public static FormApplication createFormApplicationFinalPass(Form form) {
6465
.form(form) // 기존에 생성된 Form 객체
6566
.build();
6667
}
68+
69+
public static Form createFormWithStartAndEndDate(Club club, LocalDate startDate, LocalDate endDate) {
70+
return Form.builder()
71+
.title("모집 지원서")
72+
.description("동아리 모집을 위한 지원서입니다.")
73+
.startDate(startDate)
74+
.endDate(endDate)
75+
.hasInterview(true)
76+
.sections(List.of("자기소개", "지원 동기", "경력 및 경험"))
77+
.club(club)
78+
.build();
79+
}
6780
}
Lines changed: 35 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,16 @@
11
package ddingdong.ddingdongBE.domain.club.service;
22

33
import static org.assertj.core.api.Assertions.assertThat;
4+
import static org.junit.jupiter.api.Assertions.assertAll;
45

5-
import com.navercorp.fixturemonkey.FixtureMonkey;
6-
import ddingdong.ddingdongBE.common.support.FixtureMonkeyFactory;
6+
import ddingdong.ddingdongBE.common.fixture.ClubFixture;
77
import ddingdong.ddingdongBE.common.support.TestContainerSupport;
88
import ddingdong.ddingdongBE.domain.club.entity.Club;
99
import ddingdong.ddingdongBE.domain.club.repository.ClubRepository;
1010
import ddingdong.ddingdongBE.domain.club.service.dto.command.CreateClubCommand;
1111
import ddingdong.ddingdongBE.domain.club.service.dto.query.AdminClubListQuery;
12-
import ddingdong.ddingdongBE.domain.scorehistory.entity.Score;
1312
import ddingdong.ddingdongBE.domain.user.entity.User;
1413
import ddingdong.ddingdongBE.domain.user.repository.UserRepository;
15-
import java.math.BigDecimal;
1614
import java.util.ArrayList;
1715
import java.util.List;
1816
import java.util.Optional;
@@ -25,65 +23,71 @@
2523
@SpringBootTest
2624
class FacadeAdminClubServiceImplTest extends TestContainerSupport {
2725

28-
@Autowired
29-
private FacadeAdminClubService facadeAdminClubService;
3026
@Autowired
3127
private ClubRepository clubRepository;
3228
@Autowired
3329
private UserRepository userRepository;
30+
@Autowired
31+
private FacadeAdminClubService facadeAdminClubService;
3432

35-
private final FixtureMonkey fixture = FixtureMonkeyFactory.getNotNullBuilderIntrospectorMonkey();
3633
private CreateClubCommand command;
3734

3835
@BeforeEach
3936
void setUp() {
4037
command = new CreateClubCommand(
41-
"test",
38+
"testName",
4239
"testCategory",
4340
"testLeaderName",
4441
"testTag",
45-
"testtest",
46-
"abcd1234"
42+
"testAuthId",
43+
"test1234"
4744
);
4845
}
4946

5047
@DisplayName("어드민: 동아리 생성")
5148
@Test
52-
void createClub() {
49+
void create() {
5350
// given
5451
// when
55-
Long createdClubId = facadeAdminClubService.create(command);
52+
Long clubId = facadeAdminClubService.create(command);
53+
54+
Optional<Club> testClub = clubRepository.findById(clubId);
55+
Optional<User> testUser = userRepository.findByAuthId(command.authId());
5656

5757
// then
58-
Club createdClub = clubRepository.findById(createdClubId).orElse(null);
59-
Optional<User> createUser = userRepository.findByAuthId(command.authId());
60-
61-
assertThat(createdClub).isNotNull();
62-
assertThat(createdClub.getName()).isEqualTo("test");
63-
assertThat(createdClub.getCategory()).isEqualTo("testCategory");
64-
assertThat(createdClub.getLeader()).isEqualTo("testLeaderName");
65-
assertThat(createdClub.getTag()).isEqualTo("testTag");
66-
assertThat(createUser).isPresent();
58+
assertThat(testClub).isPresent();
59+
assertThat(testClub.get().getName()).isEqualTo(command.clubName());
60+
assertThat(testClub.get().getCategory()).isEqualTo(command.category());
61+
assertThat(testClub.get().getLeader()).isEqualTo(command.leaderName());
62+
assertThat(testClub.get().getTag()).isEqualTo(command.tag());
63+
64+
assertThat(testUser).isPresent();
6765
}
6866

6967
@DisplayName("어드민: 동아리 목록 조회")
7068
@Test
71-
void findAllClubs() {
69+
void findAll() {
7270
// given
73-
List<Club> clubs = fixture.giveMeBuilder(Club.class)
74-
.set("id", null)
75-
.set("user", null)
76-
.set("score", Score.from(BigDecimal.ZERO))
77-
.set("clubMembers", new ArrayList<>())
78-
.set("deletedAt", null)
79-
.sampleList(3);
71+
List<Club> clubs = new ArrayList<>();
72+
73+
for (int i = 0; i < 5; i++) {
74+
Club club = ClubFixture.createClub();
75+
clubs.add(club);
76+
}
8077
clubRepository.saveAll(clubs);
8178

8279
// when
8380
List<AdminClubListQuery> result = facadeAdminClubService.findAll();
8481

8582
// then
86-
assertThat(result).hasSize(3);
83+
assertAll(
84+
() -> assertThat(result).hasSize(5),
85+
() -> assertThat(result)
86+
.extracting(AdminClubListQuery::id)
87+
.containsExactlyInAnyOrderElementsOf(
88+
clubs.stream().map(Club::getId).toList()
89+
)
90+
);
8791
}
8892

8993
@DisplayName("어드민: 동아리 삭제")
@@ -94,9 +98,9 @@ void deleteClub() {
9498

9599
// when
96100
facadeAdminClubService.deleteClub(clubId);
101+
Optional<Club> result = clubRepository.findById(clubId);
97102

98103
// then
99-
Optional<Club> result = clubRepository.findById(clubId);
100104
assertThat(result).isEmpty();
101105
}
102106
}

src/test/java/ddingdong/ddingdongBE/domain/club/service/FacadeCentralClubServiceImplTest.java

Lines changed: 34 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -2,27 +2,16 @@
22

33
import static org.assertj.core.api.Assertions.assertThat;
44

5-
import com.github.f4b6a3.uuid.UuidCreator;
6-
import com.navercorp.fixturemonkey.FixtureMonkey;
7-
import ddingdong.ddingdongBE.common.support.FixtureMonkeyFactory;
5+
import ddingdong.ddingdongBE.common.fixture.ClubFixture;
6+
import ddingdong.ddingdongBE.common.fixture.UserFixture;
87
import ddingdong.ddingdongBE.common.support.TestContainerSupport;
98
import ddingdong.ddingdongBE.domain.club.entity.Club;
10-
import ddingdong.ddingdongBE.domain.club.entity.Location;
11-
import ddingdong.ddingdongBE.domain.club.entity.PhoneNumber;
129
import ddingdong.ddingdongBE.domain.club.repository.ClubRepository;
1310
import ddingdong.ddingdongBE.domain.club.service.dto.command.UpdateClubInfoCommand;
1411
import ddingdong.ddingdongBE.domain.club.service.dto.query.MyClubInfoQuery;
15-
import ddingdong.ddingdongBE.domain.filemetadata.entity.DomainType;
16-
import ddingdong.ddingdongBE.domain.filemetadata.entity.FileMetaData;
17-
import ddingdong.ddingdongBE.domain.filemetadata.entity.FileStatus;
18-
import ddingdong.ddingdongBE.domain.filemetadata.repository.FileMetaDataRepository;
19-
import ddingdong.ddingdongBE.domain.form.repository.FormRepository;
20-
import ddingdong.ddingdongBE.domain.scorehistory.entity.Score;
2112
import ddingdong.ddingdongBE.domain.user.entity.User;
2213
import ddingdong.ddingdongBE.domain.user.repository.UserRepository;
23-
import java.math.BigDecimal;
24-
import java.util.List;
25-
import java.util.UUID;
14+
import java.util.Optional;
2615
import org.junit.jupiter.api.DisplayName;
2716
import org.junit.jupiter.api.Test;
2817
import org.springframework.beans.factory.annotation.Autowired;
@@ -31,96 +20,64 @@
3120
@SpringBootTest
3221
class FacadeCentralClubServiceImplTest extends TestContainerSupport {
3322

34-
@Autowired
35-
private FacadeCentralClubService facadeCentralClubService;
3623
@Autowired
3724
private ClubRepository clubRepository;
3825
@Autowired
3926
private UserRepository userRepository;
4027
@Autowired
41-
private FileMetaDataRepository fileMetaDataRepository;
42-
43-
private final FixtureMonkey fixture = FixtureMonkeyFactory.getNotNullBuilderIntrospectorMonkey();
44-
@Autowired
45-
private FormRepository formRepository;
28+
private FacadeCentralClubService facadeCentralClubService;
4629

4730
@DisplayName("중앙동아리: 내 동아리 정보 조회")
4831
@Test
4932
void getMyClubInfo() {
50-
//given
51-
User savedUser = userRepository.save(fixture.giveMeBuilder(User.class).set("id", null).sample());
52-
Club club = fixture.giveMeBuilder(Club.class)
53-
.set("id", null)
54-
.set("user", savedUser)
55-
.set("score", Score.from(BigDecimal.ZERO))
56-
.set("phoneNumber", PhoneNumber.from("010-1234-5678"))
57-
.set("location", Location.from("S1111"))
58-
.set("clubMembers", null)
59-
.set("deletedAt", null)
60-
.sample();
61-
Club savedClub = clubRepository.save(club);
62-
UUID id1 = UuidCreator.getTimeOrderedEpoch();
63-
UUID id2 = UuidCreator.getTimeOrderedEpoch();
64-
FileMetaData clubProfileImageFileMetaData = fixture.giveMeBuilder(FileMetaData.class)
65-
.set("id", id1)
66-
.set("fileKey", "test/IMAGE/2024-01-01/" + id1)
67-
.set("entityType", DomainType.CLUB_PROFILE)
68-
.set("entityId", savedClub.getId())
69-
.set("fileStatus", FileStatus.COUPLED)
70-
.sample();
71-
FileMetaData clubIntroductionImageFileMetaData = fixture.giveMeBuilder(FileMetaData.class)
72-
.set("id", id2)
73-
.set("fileKey", "test/IMAGE/2024-01-01/" + id2)
74-
.set("entityType", DomainType.CLUB_INTRODUCTION)
75-
.set("entityId", savedClub.getId())
76-
.set("fileStatus", FileStatus.COUPLED)
77-
.sample();
78-
fileMetaDataRepository.saveAll(List.of(clubProfileImageFileMetaData, clubIntroductionImageFileMetaData));
33+
// given
34+
User savedUser = userRepository.save(UserFixture.createClubUser());
35+
Club savedClub = clubRepository.save(ClubFixture.createClub(savedUser));
7936

80-
//when
37+
// when
8138
MyClubInfoQuery result = facadeCentralClubService.getMyClubInfo(savedUser.getId());
8239

83-
//then
40+
// then
8441
assertThat(result).isNotNull();
42+
assertThat(result.name()).isEqualTo(savedClub.getName());
43+
assertThat(result.category()).isEqualTo(savedClub.getCategory());
44+
assertThat(result.tag()).isEqualTo(savedClub.getTag());
45+
assertThat(result.leader()).isEqualTo(savedClub.getLeader());
46+
assertThat(result.phoneNumber()).isEqualTo(savedClub.getPhoneNumber().getNumber());
47+
assertThat(result.location()).isEqualTo(savedClub.getLocation().getValue());
8548
}
8649

8750
@DisplayName("중앙동아리: 동아리 정보 수정")
8851
@Test
8952
void updateClubInfo() {
90-
//given
91-
User savedUser = userRepository.save(fixture.giveMeBuilder(User.class).set("id", null).sample());
92-
Club club = fixture.giveMeBuilder(Club.class)
93-
.set("id", null)
94-
.set("user", savedUser)
95-
.set("score", Score.from(BigDecimal.ZERO))
96-
.set("phoneNumber", PhoneNumber.from("010-1234-5678"))
97-
.set("location", Location.from("S1111"))
98-
.set("clubMembers", null)
99-
.set("deletedAt", null)
100-
.sample();
101-
Club savedClub = clubRepository.save(club);
53+
// given
54+
User savedUser = userRepository.save(UserFixture.createClubUser());
55+
Club savedClub = clubRepository.save(ClubFixture.createClub(savedUser));
56+
10257
UpdateClubInfoCommand command = new UpdateClubInfoCommand(
10358
savedUser.getId(),
104-
"testname",
105-
"testcategory",
106-
"testtag",
107-
"testclubLeader",
59+
"updatedName",
60+
"updatedCategory",
61+
"updatedTag",
62+
"updatedClubLeader",
10863
"010-1234-5678",
10964
"S1111",
110-
"testregularMeeting",
111-
"testintroduction",
112-
"testactivity",
113-
"testideal",
65+
"updatedRegularMeeting",
66+
"updatedIntroduction",
67+
"updatedActivity",
68+
"updatedIdeal",
11469
null,
11570
null
11671
);
11772

118-
119-
//when
73+
// when
12074
facadeCentralClubService.updateClubInfo(command);
12175

122-
//then
123-
Club result = clubRepository.findById(savedClub.getId()).orElseThrow();
124-
assertThat(result.getName()).isEqualTo("testname");
76+
// then
77+
Optional<Club> result = clubRepository.findById(savedClub.getId());
78+
assertThat(result).isPresent();
79+
assertThat(result.get().getName()).isEqualTo(command.name());
80+
assertThat(result.get().getCategory()).isEqualTo(command.category());
81+
assertThat(result.get().getLeader()).isEqualTo(command.clubLeader());
12582
}
12683
}

0 commit comments

Comments
 (0)