Skip to content

Commit 76b0998

Browse files
authored
Feat/meeting test 75 (#77)
* feat : Meetingtest 를 위한 Util 파일입니니다. * feat : Meetingtest 를 위한 Util 파일입니니다. * feat : MeetingServiceImplTest 단위테스트입니다. * feat : MeetingControllerTest 통합테스트입니다. * feat : Build Lombok을 테스트를 위한 수정입니다. * feat : Tag 엔티티 Tag List<String> content 를 변환하기 위한 파일입니다. * feat : MeetingServiceImpl * feat : MeetingServiceImpl에서 수정하는 응답을 수정 , 매퍼를 수정하였습니다. * feat : Meeting에서 필요한 url을 열어뒀습니다.
1 parent f69afe9 commit 76b0998

File tree

14 files changed

+1410
-596
lines changed

14 files changed

+1410
-596
lines changed

build.gradle

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ dependencies {
3636
implementation 'org.springframework.ai:spring-ai-starter-model-openai'
3737
compileOnly 'org.projectlombok:lombok'
3838
annotationProcessor 'org.projectlombok:lombok'
39+
testCompileOnly 'org.projectlombok:lombok'
40+
testAnnotationProcessor 'org.projectlombok:lombok'
3941
testImplementation 'org.springframework.boot:spring-boot-starter-test'
4042
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
4143

src/main/java/sevenstar/marineleisure/global/config/SecurityConfig.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,9 @@ public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
5656
// 위험경보관련 API는 인증이 필요하지 않습니다.
5757
.requestMatchers("/alerts/**").permitAll()
5858
.requestMatchers("/activities/**").permitAll()
59+
//Meeting 조회에는 인증이 필요하지 않습니다.
60+
.requestMatchers(HttpMethod.GET, "/meetings").permitAll()
61+
.requestMatchers(HttpMethod.GET, "/meetings/{id}").permitAll()
5962
// (6) 나머지는 인증 필요
6063
.anyRequest().authenticated()
6164
)

src/main/java/sevenstar/marineleisure/meeting/domain/Tag.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22

33
import java.util.List;
44

5+
import jakarta.persistence.AttributeConverter;
56
import jakarta.persistence.Column;
7+
import jakarta.persistence.Convert;
68
import jakarta.persistence.Entity;
79
import jakarta.persistence.GeneratedValue;
810
import jakarta.persistence.GenerationType;
@@ -14,6 +16,7 @@
1416
import lombok.Getter;
1517
import lombok.NoArgsConstructor;
1618
import sevenstar.marineleisure.global.domain.BaseEntity;
19+
import sevenstar.marineleisure.meeting.service.util.StringListConverter;
1720

1821
@Entity
1922
@Getter
@@ -31,6 +34,7 @@ public class Tag extends BaseEntity {
3134
private Long meetingId;
3235

3336

37+
@Convert(converter = StringListConverter.class)
3438
private List<String> content;
3539

3640

src/main/java/sevenstar/marineleisure/meeting/dto/mapper/MeetingMapper.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,8 @@ public MeetingDetailResponse MeetingDetailResponseMapper(Meeting targetMeeting,
103103

104104
public MeetingDetailAndMemberResponse meetingDetailAndMemberResponseMapper
105105
(Meeting targetMeeting, Member host, OutdoorSpot targetSpot,
106-
List<ParticipantResponse> participantResponseList) {
106+
List<ParticipantResponse> participantResponseList
107+
, Tag tag) {
107108
return MeetingDetailAndMemberResponse.builder()
108109
.id(targetMeeting.getId())
109110
.title(targetMeeting.getTitle())
@@ -126,6 +127,7 @@ public MeetingDetailResponse MeetingDetailResponseMapper(Meeting targetMeeting,
126127
participantResponseList
127128
)
128129
.createdAt(targetMeeting.getCreatedAt())
130+
.tagList(DetailTag(tag))
129131
.build();
130132
}
131133

@@ -158,4 +160,10 @@ public Tag saveTag(Long meetingId, CreateMeetingRequest request){
158160
.content(request.tags())
159161
.build();
160162
}
163+
164+
public TagList DetailTag(Tag tag){
165+
return TagList.builder()
166+
.content(tag.getContent())
167+
.build();
168+
}
161169
}

src/main/java/sevenstar/marineleisure/meeting/dto/response/MeetingDetailAndMemberResponse.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import sevenstar.marineleisure.global.enums.ActivityCategory;
88
import sevenstar.marineleisure.global.enums.MeetingStatus;
99
import sevenstar.marineleisure.meeting.dto.vo.DetailSpot;
10-
10+
import sevenstar.marineleisure.meeting.dto.vo.TagList;
1111

1212
/**
1313
*
@@ -39,6 +39,7 @@ public record MeetingDetailAndMemberResponse(
3939
LocalDateTime meetingTime,
4040
MeetingStatus status,
4141
List<ParticipantResponse> participants,
42+
TagList tagList,
4243
LocalDateTime createdAt
4344
) {
4445
}

src/main/java/sevenstar/marineleisure/meeting/service/MeetingServiceImpl.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -105,8 +105,9 @@ public MeetingDetailAndMemberResponse getMeetingDetailAndMember(Long memberId ,
105105
.toList();
106106
Map<Long,String> participantNicknames = memberRepository.findAllById(participantUserIds).stream()
107107
.collect(Collectors.toMap(Member::getId, Member::getNickname));
108+
Tag targetTag = tagValidate.findByMeetingId(meetingId).orElse(null);
108109
List<ParticipantResponse> participantResponseList = meetingMapper.toParticipantResponseList(participants,participantNicknames);
109-
return meetingMapper.meetingDetailAndMemberResponseMapper(targetMeeting,host,targetSpot,participantResponseList);
110+
return meetingMapper.meetingDetailAndMemberResponseMapper(targetMeeting,host,targetSpot,participantResponseList,targetTag);
110111
}
111112

112113
@Override
@@ -169,7 +170,7 @@ public Long createMeeting(Long memberId, CreateMeetingRequest request) {
169170
public Long updateMeeting(Long meetingId, Long memberId, UpdateMeetingRequest request) {
170171
Member host = memberValidate.foundMember(memberId);
171172
Meeting targetMeeting = meetingValidate.foundMeeting(meetingId);
172-
meetingValidate.verifyIsHost(targetMeeting.getId(), host.getId());
173+
meetingValidate.verifyIsHost(host.getId(), targetMeeting.getHostId());
173174
Tag targetTag = tagValidate.findByMeetingId(meetingId).orElse(null);
174175
Meeting updateMeeting = meetingRepository.save(meetingMapper.UpdateMeeting(request, targetMeeting));
175176
tagRepository.save(
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package sevenstar.marineleisure.meeting.service.util;
2+
3+
import java.util.Arrays;
4+
import java.util.Collections;
5+
import java.util.List;
6+
import java.util.stream.Collectors;
7+
8+
import jakarta.persistence.AttributeConverter;
9+
import jakarta.persistence.Converter;
10+
11+
@Converter
12+
public class StringListConverter implements AttributeConverter<List<String>, String> {
13+
14+
private static final String SPLIT_CHAR = ",";
15+
16+
@Override
17+
public String convertToDatabaseColumn(List<String> attribute) {
18+
if (attribute == null || attribute.isEmpty()) {
19+
return null;
20+
}
21+
return attribute.stream().map(String::trim).collect(Collectors.joining(SPLIT_CHAR));
22+
}
23+
24+
@Override
25+
public List<String> convertToEntityAttribute(String dbData) {
26+
if (dbData == null || dbData.trim().isEmpty()) {
27+
return Collections.emptyList();
28+
}
29+
return Arrays.stream(dbData.split(SPLIT_CHAR))
30+
.map(String::trim)
31+
.collect(Collectors.toList());
32+
}
33+
}

0 commit comments

Comments
 (0)