Skip to content

Commit 85517ba

Browse files
authored
Merge pull request #863 from Clubber2024/test/#861-test-캘린더-통합테스트
test : 모집글 저장 이후 연동 캘린더 저장 통합 테스트 코드
2 parents e11008c + 817333a commit 85517ba

6 files changed

Lines changed: 110 additions & 10 deletions

File tree

src/main/java/com/clubber/ClubberServer/domain/recruit/domain/Recruit.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ public class Recruit extends BaseEntity {
5858
@NotNull
5959
private Club club;
6060

61-
@OneToOne
61+
@OneToOne(fetch = FetchType.LAZY)
6262
@JoinColumn(name = "calendar_id")
6363
private Calendar calendar;
6464

src/main/java/com/clubber/ClubberServer/domain/recruit/service/RecruitLinkedCalendarService.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,11 @@
1212
import com.clubber.ClubberServer.domain.recruit.dto.CreateLinkedCalendarRequest;
1313
import com.clubber.ClubberServer.domain.recruit.dto.CreateLinkedCalenderResponse;
1414
import com.clubber.ClubberServer.domain.recruit.implement.RecruitReader;
15-
import java.time.LocalDateTime;
1615
import lombok.RequiredArgsConstructor;
1716
import org.springframework.stereotype.Service;
1817
import org.springframework.transaction.annotation.Transactional;
1918

19+
import java.time.LocalDateTime;
2020

2121
@Service
2222
@RequiredArgsConstructor
@@ -36,7 +36,7 @@ public CreateLinkedCalenderResponse createLinkedCalender(CreateLinkedCalendarReq
3636

3737
Recruit recruit = recruitReader.findRecruitById(request.recruitId());
3838
CreateCalendarRequest calendarRequest = CreateCalendarRequest.from(recruit,
39-
request.recruitUrl());
39+
request.recruitUrl());
4040
Calendar savedCalendar = calendarAppender.append(calendarRequest.toEntity(club));
4141
recruit.linkCalendar(savedCalendar);
4242
return new CreateLinkedCalenderResponse(request.recruitId(), savedCalendar.getId());
@@ -45,7 +45,7 @@ public CreateLinkedCalenderResponse createLinkedCalender(CreateLinkedCalendarReq
4545

4646
@Transactional
4747
public void syncCalendarWithRecruit(Recruit recruit, String title, RecruitType recruitType,
48-
LocalDateTime startAt, LocalDateTime endAt) {
48+
LocalDateTime startAt, LocalDateTime endAt) {
4949
Calendar calendar = calendarReader.readById(recruit.getCalendar().getId());
5050
calendarAppender.update(calendar, title, recruitType, startAt, endAt);
5151
}
@@ -59,10 +59,8 @@ public void unlinkCalendar(Long calendarId) {
5959
}
6060

6161
@Transactional
62-
public void deleteLinkedCalendar(Long calendarId){
62+
public void deleteLinkedCalendar(Long calendarId) {
6363
Calendar calendar = calendarReader.readById(calendarId);
6464
calendarAppender.delete(calendar);
6565
}
66-
67-
6866
}
Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
package com.clubber.ClubberServer.integration.domain.recruit.service;
2+
3+
import com.clubber.ClubberServer.domain.admin.domain.Admin;
4+
import com.clubber.ClubberServer.domain.admin.repository.AdminRepository;
5+
import com.clubber.ClubberServer.domain.calendar.entity.Calendar;
6+
import com.clubber.ClubberServer.domain.club.domain.Club;
7+
import com.clubber.ClubberServer.domain.club.repository.ClubRepository;
8+
import com.clubber.ClubberServer.domain.recruit.domain.Recruit;
9+
import com.clubber.ClubberServer.domain.recruit.dto.CreateLinkedCalendarRequest;
10+
import com.clubber.ClubberServer.domain.recruit.repository.RecruitRepository;
11+
import com.clubber.ClubberServer.domain.recruit.service.RecruitLinkedCalendarService;
12+
import com.clubber.ClubberServer.global.config.security.AuthDetails;
13+
import com.clubber.ClubberServer.integration.util.fixture.AdminFixture;
14+
import com.clubber.ClubberServer.integration.util.fixture.ClubFixture;
15+
import com.clubber.ClubberServer.integration.util.fixture.RecruitFixture;
16+
import jakarta.persistence.EntityManager;
17+
import org.assertj.core.api.Assertions;
18+
import org.junit.jupiter.api.Test;
19+
import org.springframework.beans.factory.annotation.Autowired;
20+
import org.springframework.boot.test.context.SpringBootTest;
21+
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
22+
import org.springframework.security.core.context.SecurityContext;
23+
import org.springframework.security.core.context.SecurityContextHolder;
24+
import org.springframework.test.context.ActiveProfiles;
25+
import org.springframework.transaction.annotation.Transactional;
26+
27+
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
28+
@Transactional
29+
@ActiveProfiles("test")
30+
public class RecruitLinkedCalendarServiceTest {
31+
@Autowired
32+
private RecruitLinkedCalendarService recruitLinkedCalendarService;
33+
34+
@Autowired
35+
private RecruitRepository recruitRepository;
36+
37+
@Autowired
38+
private ClubRepository clubRepository;
39+
40+
@Autowired
41+
private AdminRepository adminRepository;
42+
43+
@Autowired
44+
private EntityManager entityManager;
45+
46+
private void createSecurityContext(Admin admin) {
47+
SecurityContext context = SecurityContextHolder.createEmptyContext();
48+
49+
AuthDetails adminDetails = new AuthDetails(admin.getId().toString(), "ADMIN");
50+
UsernamePasswordAuthenticationToken adminToken = new UsernamePasswordAuthenticationToken(
51+
adminDetails, "user", adminDetails.getAuthorities());
52+
context.setAuthentication(adminToken);
53+
SecurityContextHolder.setContext(context);
54+
}
55+
56+
@Test
57+
void 모집글에_캘린더를_연결하면_연결된_모집글정보가_정상적으로_저장_테스트() {
58+
//given
59+
Club club = ClubFixture.aClub().build();
60+
Club savedClub = clubRepository.save(club);
61+
62+
Admin admin = AdminFixture.aAdmin().club(savedClub).build();
63+
Admin savedAdmin = adminRepository.save(admin);
64+
createSecurityContext(savedAdmin);
65+
66+
Recruit recruit = RecruitFixture.aRecruit().club(savedClub).build();
67+
Recruit savedRecruit = recruitRepository.save(recruit);
68+
69+
String url = "url";
70+
CreateLinkedCalendarRequest request = new CreateLinkedCalendarRequest(savedRecruit.getId(), url);
71+
72+
//when
73+
entityManager.flush();
74+
entityManager.clear();
75+
76+
recruitLinkedCalendarService.createLinkedCalender(request);
77+
78+
entityManager.flush();
79+
entityManager.clear();
80+
81+
//then
82+
Recruit findRecruit = recruitRepository.findById(savedRecruit.getId()).get();
83+
Calendar calendar = findRecruit.getCalendar();
84+
Assertions.assertThat(calendar).isNotNull();
85+
Assertions.assertThat(calendar.getUrl()).isEqualTo(url);
86+
Assertions.assertThat(calendar.getTitle()).isEqualTo(findRecruit.getTitle());
87+
Assertions.assertThat(calendar.getRecruitType()).isEqualTo(findRecruit.getRecruitType());
88+
Assertions.assertThat(calendar.getStartAt()).isEqualTo(findRecruit.getStartAt());
89+
Assertions.assertThat(calendar.getEndAt()).isEqualTo(findRecruit.getEndAt());
90+
}
91+
}

src/test/java/com/clubber/ClubberServer/integration/util/fixture/AdminFixture.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@ public class AdminFixture {
4040

4141
public static Admin.AdminBuilder aAdmin() {
4242
return Admin.builder()
43-
.id(1L)
4443
.username(USERNAME)
4544
.email(EMAIL)
4645
.password(OLD_PASSWORD)

src/test/java/com/clubber/ClubberServer/integration/util/fixture/ClubFixture.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ public class ClubFixture {
2727

2828
public static Club.ClubBuilder aClub() {
2929
return Club.builder()
30-
.id(CLUB_ID)
3130
.name(CLUB_NAME)
3231
.clubType(ClubType.CENTER)
3332
.introduction(CLUB_INTRODUCTION)

src/test/java/com/clubber/ClubberServer/integration/util/fixture/RecruitFixture.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.clubber.ClubberServer.integration.util.fixture;
22

3+
import com.clubber.ClubberServer.domain.recruit.domain.Recruit;
34
import com.clubber.ClubberServer.domain.recruit.domain.RecruitType;
45
import com.clubber.ClubberServer.domain.recruit.dto.PostRecruitRequest;
56
import com.clubber.ClubberServer.domain.recruit.dto.UpdateRecruitRequest;
@@ -18,6 +19,10 @@ public class RecruitFixture {
1819
private static final LocalDateTime endAt2 = LocalDateTime.parse("2025-07-01 23:59",
1920
DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"));
2021

22+
public static final String TITLE = "title";
23+
public static final String CONTENT = "content";
24+
public static final String APPLY_LINK = "applylink";
25+
2126
// 모집글 작성 테스트 데이터
2227
public static final PostRecruitRequest VALID_RECRUIT_POST_REQUEST = new PostRecruitRequest(
2328
"title", RecruitType.REGULAR, startAt, endAt1, "content",
@@ -114,5 +119,13 @@ public class RecruitFixture {
114119
List.of("newImage1", "newImage2"), List.of("https://image.ssuclubber.com/image1"),
115120
List.of("newImage2", "https://image.ssuclubber.com/image1", "newImage1"));
116121

117-
122+
public static Recruit.RecruitBuilder aRecruit() {
123+
return Recruit.builder()
124+
.recruitType(RecruitType.REGULAR)
125+
.title(TITLE)
126+
.content(CONTENT)
127+
.startAt(startAt)
128+
.endAt(endAt1)
129+
.applyLink(APPLY_LINK);
130+
}
118131
}

0 commit comments

Comments
 (0)