Skip to content

Commit 67a49b8

Browse files
committed
Practice Post API 통합
1 parent 142b893 commit 67a49b8

File tree

6 files changed

+24
-64
lines changed

6 files changed

+24
-64
lines changed

back/src/main/java/com/back/domain/post/post/controller/PostController.java

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ public RsData<PostPagingResponse> getPostWithPage(
4040
return new RsData<>("200", "게시글이 조회 되었습니다.", resDto);
4141
}
4242

43-
@Operation(summary = "게시글 생성")
43+
@Operation(summary = "게시글 생성 ")
4444
@PostMapping
4545
public RsData<PostCreateResponse> createPost(
4646
@Valid @RequestBody PostCreateRequest postCreateRequest
@@ -52,18 +52,6 @@ public RsData<PostCreateResponse> createPost(
5252
return new RsData<>("200", "게시글이 성공적으로 생성되었습니다.", postCreateResponse);
5353
}
5454

55-
@Operation(summary = "게시글 생성 - PracticePost")
56-
@PostMapping("/practice")
57-
public RsData<PostCreateResponse> createPracticePost(
58-
@Valid @RequestBody PracticePostCreateRequest practicePostCreateRequest
59-
) {
60-
Member member = rq.getActor();
61-
Post post = postService.createPracticePost(practicePostCreateRequest, member);
62-
PostCreateResponse postCreateResponse = PostCreateResponse.from(post);
63-
64-
return new RsData<>("200", "게시글이 성공적으로 생성되었습니다.", postCreateResponse);
65-
}
66-
6755
@Operation(summary = "게시글 다건 조회")
6856
@GetMapping("/all")
6957
public RsData<List<PostAllResponse>> getAllPost() {

back/src/main/java/com/back/domain/post/post/dto/PostCreateRequest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ public record PostCreateRequest(
99
@NotBlank(message = "제목은 null 혹은 공백일 수 없습니다.")
1010
String title,
1111
@NotBlank(message = "내용은 null 혹은 공백일 수 없습니다.")
12-
String content
12+
String content,
13+
String job
1314
) {
1415

1516

back/src/main/java/com/back/domain/post/post/dto/PracticePostCreateRequest.java

Lines changed: 0 additions & 13 deletions
This file was deleted.

back/src/main/java/com/back/domain/post/post/entity/Post.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,9 @@ public void updateResolveStatus(Boolean isResolve) {
109109
}
110110

111111
public void updateJob(String job) {
112+
if (job == null || job.isBlank()) {
113+
throw new ServiceException("400", "직업은 null이거나 공백일 수 없습니다.");
114+
}
112115
this.job = job;
113116
}
114117
}

back/src/main/java/com/back/domain/post/post/service/PostService.java

Lines changed: 8 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,10 @@ public Post createPost(PostCreateRequest postCreateRequest, Member member) {
3535
Post.validPostType(postTypeStr);
3636
Post.PostType postType = Post.PostType.valueOf(postTypeStr);
3737

38-
38+
// PostType이 PracticePost인 경우 멘토인지 확인
39+
if (postType == Post.PostType.PRACTICEPOST && member.getRole() != Member.Role.MENTOR) {
40+
throw new ServiceException("400", "실무 경험 공유 게시글은 멘토만 작성할 수 있습니다.");
41+
}
3942

4043
Post post = Post.builder()
4144
.title(postCreateRequest.title())
@@ -45,6 +48,10 @@ public Post createPost(PostCreateRequest postCreateRequest, Member member) {
4548
.build();
4649

4750

51+
if(postType == Post.PostType.PRACTICEPOST) {
52+
post.updateJob(postCreateRequest.job());
53+
}
54+
4855
// PostType이 QUESTIONPOST인 경우 isResolve를 false로 초기화
4956
if(postType == Post.PostType.QUESTIONPOST) {
5057
post.updateResolveStatus(false);
@@ -55,31 +62,6 @@ public Post createPost(PostCreateRequest postCreateRequest, Member member) {
5562
return post;
5663
}
5764

58-
@Transactional
59-
public Post createPracticePost(PracticePostCreateRequest practicePostCreateRequest, Member member) {
60-
String postTypeStr = practicePostCreateRequest.postType();
61-
Post.validPostType(postTypeStr);
62-
Post.PostType postType = Post.PostType.valueOf(postTypeStr);
63-
64-
// PostType이 PracticePost인 경우 멘토인지 확인
65-
if (postType == Post.PostType.PRACTICEPOST && member.getRole() != Member.Role.MENTOR) {
66-
throw new ServiceException("400", "실무 경험 공유 게시글은 멘토만 작성할 수 있습니다.");
67-
}
68-
69-
Post post = Post.builder()
70-
.title(practicePostCreateRequest.title())
71-
.content(practicePostCreateRequest.content())
72-
.member(member)
73-
.postType(postType)
74-
.build();
75-
76-
post.updateJob(practicePostCreateRequest.job());
77-
78-
postRepository.save(post);
79-
80-
return post;
81-
}
82-
8365

8466
@Transactional
8567
public void removePost(Long postId, Member member) {

back/src/test/java/com/back/domain/post/post/service/PostServiceTest.java

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import com.back.domain.member.member.entity.Member;
44
import com.back.domain.post.post.dto.PostCreateRequest;
55
import com.back.domain.post.post.dto.PostDto;
6-
import com.back.domain.post.post.dto.PracticePostCreateRequest;
76
import com.back.domain.post.post.entity.Post;
87
import com.back.domain.post.post.repository.PostRepository;
98
import com.back.fixture.MemberFixture;
@@ -46,7 +45,7 @@ class CreatePostTest {
4645
void createPost_informationPost_success() {
4746
// given
4847
Member member = MemberFixture.create(1L, "[email protected]", "Test User", "password", Member.Role.MENTEE);
49-
PostCreateRequest request = new PostCreateRequest("INFORMATIONPOST","제목","내용");
48+
PostCreateRequest request = new PostCreateRequest("INFORMATIONPOST","제목","내용","");
5049

5150

5251
Post expectedPost = createPost("제목", "내용", member, Post.PostType.INFORMATIONPOST);
@@ -69,7 +68,7 @@ void createPost_informationPost_success() {
6968
void createPost_practicePost_mentor_success() {
7069
// given
7170
Member mentor = MemberFixture.create(1L, "[email protected]", "Mentor", "password", Member.Role.MENTOR);
72-
PostCreateRequest request = new PostCreateRequest("PRACTICEPOST","실무경험","실무내용");
71+
PostCreateRequest request = new PostCreateRequest("PRACTICEPOST","실무경험","실무내용","123");
7372
Post expectedPost = createPost("실무 경험", "실무 내용", mentor, Post.PostType.PRACTICEPOST);
7473

7574
when(postRepository.save(any(Post.class))).thenReturn(expectedPost);
@@ -87,10 +86,10 @@ void createPost_practicePost_mentor_success() {
8786
void createPost_practicePost_mentee_failure() {
8887
// given
8988
Member mentee = MemberFixture.create(1L, "[email protected]", "Mentee", "password", Member.Role.MENTEE);
90-
PracticePostCreateRequest request = new PracticePostCreateRequest("PRACTICEPOST","실무경험","실무내용","");
89+
PostCreateRequest request = new PostCreateRequest("PRACTICEPOST","실무경험","실무내용","");
9190

9291
// when & then
93-
assertThatThrownBy(() -> postService.createPracticePost(request, mentee))
92+
assertThatThrownBy(() -> postService.createPost(request, mentee))
9493
.isInstanceOf(ServiceException.class)
9594
.hasMessage("400 : 실무 경험 공유 게시글은 멘토만 작성할 수 있습니다.");
9695

@@ -102,7 +101,7 @@ void createPost_practicePost_mentee_failure() {
102101
void createPost_questionPost_initializeIsResolve() {
103102
// given
104103
Member member = MemberFixture.create(1L, "[email protected]", "Test User", "password", Member.Role.MENTEE);
105-
PostCreateRequest request = new PostCreateRequest("QUESTIONPOST","질문경험","질문내용");
104+
PostCreateRequest request = new PostCreateRequest("QUESTIONPOST","질문경험","질문내용","");
106105

107106
Post expectedPost = createPost("질문", "질문 내용", member, Post.PostType.QUESTIONPOST);
108107
expectedPost.updateResolveStatus(false);
@@ -123,7 +122,7 @@ void createPost_questionPost_initializeIsResolve() {
123122
void createPost_invalidPostType_failure() {
124123
// given
125124
Member member = MemberFixture.createDefault();
126-
PostCreateRequest request = new PostCreateRequest("INVALIDPOST","질문경험","질문내용");
125+
PostCreateRequest request = new PostCreateRequest("INVALIDPOST","질문경험","질문내용","");
127126

128127
// when & then
129128
assertThatThrownBy(() -> postService.createPost(request, member))
@@ -203,7 +202,7 @@ void updatePost_author_success() {
203202
Member author = MemberFixture.create(1L, "[email protected]", "Author", "password", Member.Role.MENTEE);
204203
Post post = createPost("기존 제목", "기존 내용", author, Post.PostType.INFORMATIONPOST);
205204
Long postId = 1L;
206-
PostCreateRequest updateRequest = new PostCreateRequest("INFORMATIONPOST","새 제목","새 내용");
205+
PostCreateRequest updateRequest = new PostCreateRequest("INFORMATIONPOST","새 제목","새 내용","");
207206

208207
when(postRepository.findById(postId)).thenReturn(Optional.of(post));
209208
when(postRepository.save(any(Post.class))).thenReturn(post);
@@ -225,7 +224,7 @@ void updatePost_notAuthor_failure() {
225224
Member otherUser = MemberFixture.create(2L, "[email protected]", "Other", "password", Member.Role.MENTEE);
226225
Post post = createPost("제목", "내용", author, Post.PostType.INFORMATIONPOST);
227226
Long postId = 1L;
228-
PostCreateRequest updateRequest = new PostCreateRequest("INFORMATIONPOST","새 내용","새 제목");
227+
PostCreateRequest updateRequest = new PostCreateRequest("INFORMATIONPOST","새 내용","새 제목","");
229228

230229

231230
when(postRepository.findById(postId)).thenReturn(Optional.of(post));
@@ -245,7 +244,7 @@ void updatePost_nullOrBlankTitle_failure() {
245244
Member author = MemberFixture.create(1L, "[email protected]", "Author", "password", Member.Role.MENTEE);
246245
Post post = createPost("제목", "내용", author, Post.PostType.INFORMATIONPOST);
247246
Long postId = 1L;
248-
PostCreateRequest updateRequest = new PostCreateRequest("INFORMATIONPOST","","새 내용");
247+
PostCreateRequest updateRequest = new PostCreateRequest("INFORMATIONPOST","","새 내용","");
249248

250249
when(postRepository.findById(postId)).thenReturn(Optional.of(post));
251250

@@ -264,7 +263,7 @@ void updatePost_nullOrBlankContent_failure() {
264263
Member author = MemberFixture.create(1L, "[email protected]", "Author", "password", Member.Role.MENTEE);
265264
Post post = createPost("제목", "내용", author, Post.PostType.INFORMATIONPOST);
266265
Long postId = 1L;
267-
PostCreateRequest updateRequest = new PostCreateRequest("INFORMATIONPOST","새 제목","");
266+
PostCreateRequest updateRequest = new PostCreateRequest("INFORMATIONPOST","새 제목","","");
268267

269268
when(postRepository.findById(postId)).thenReturn(Optional.of(post));
270269

0 commit comments

Comments
 (0)