Skip to content
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
@@ -0,0 +1,41 @@
package com.example.solidconnection.community.board.fixture;

import com.example.solidconnection.community.board.domain.Board;
import lombok.RequiredArgsConstructor;
import org.springframework.boot.test.context.TestComponent;

import static com.example.solidconnection.community.board.domain.BoardCode.AMERICAS;
import static com.example.solidconnection.community.board.domain.BoardCode.ASIA;
import static com.example.solidconnection.community.board.domain.BoardCode.EUROPE;
import static com.example.solidconnection.community.board.domain.BoardCode.FREE;

@TestComponent
@RequiredArgsConstructor
public class BoardFixture {

private final BoardFixtureBuilder boardFixtureBuilder;

public Board 미주권() {
return boardFixtureBuilder.code(AMERICAS.name())
.koreanName("미주권")
.findOrCreate();
}

public Board 아시아권() {
return boardFixtureBuilder.code(ASIA.name())
.koreanName("아시아권")
.findOrCreate();
}

public Board 유럽권() {
return boardFixtureBuilder.code(EUROPE.name())
.koreanName("유럽권")
.findOrCreate();
}

public Board 자유게시판() {
return boardFixtureBuilder.code(FREE.name())
.koreanName("자유게시판")
.findOrCreate();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package com.example.solidconnection.community.board.fixture;

import com.example.solidconnection.community.board.domain.Board;
import com.example.solidconnection.community.board.repository.BoardRepositoryForTest;
import lombok.RequiredArgsConstructor;
import org.springframework.boot.test.context.TestComponent;

@TestComponent
@RequiredArgsConstructor
public class BoardFixtureBuilder {

private final BoardRepositoryForTest boardRepositoryForTest;

private String code;
private String koreanName;

public BoardFixtureBuilder code(String code) {
this.code = code;
return this;
}

public BoardFixtureBuilder koreanName(String koreanName) {
this.koreanName = koreanName;
return this;
}

public Board findOrCreate() {
return boardRepositoryForTest.findByCodeWithPosts(code)
.orElseGet(() -> boardRepositoryForTest.save(new Board(code, koreanName)));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.example.solidconnection.community.board.repository;

import com.example.solidconnection.community.board.domain.Board;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;

import java.util.Optional;

public interface BoardRepositoryForTest extends JpaRepository<Board, Long> {

@Query("SELECT b FROM Board b LEFT JOIN FETCH b.postList WHERE b.code = :code")
Optional<Board> findByCodeWithPosts(@Param("code") String code);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package com.example.solidconnection.community.comment.fixture;

import com.example.solidconnection.community.comment.domain.Comment;
import com.example.solidconnection.community.post.domain.Post;
import com.example.solidconnection.siteuser.domain.SiteUser;
import lombok.RequiredArgsConstructor;
import org.springframework.boot.test.context.TestComponent;

@TestComponent
@RequiredArgsConstructor
public class CommentFixture {

private final CommentFixtureBuilder commentFixtureBuilder;

public Comment 부모_댓글(String content, Post post, SiteUser siteUser) {
return commentFixtureBuilder
.content(content)
.post(post)
.siteUser(siteUser)
.createParent();
}

public Comment 자식_댓글(
String content,
Post post,
SiteUser siteUser,
Comment parentComment) {
return commentFixtureBuilder
.content(content)
.post(post)
.siteUser(siteUser)
.parentComment(parentComment)
.createChild();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
package com.example.solidconnection.community.comment.fixture;

import com.example.solidconnection.community.comment.domain.Comment;
import com.example.solidconnection.community.comment.repository.CommentRepository;
import com.example.solidconnection.community.post.domain.Post;
import com.example.solidconnection.siteuser.domain.SiteUser;
import lombok.RequiredArgsConstructor;
import org.springframework.boot.test.context.TestComponent;

@TestComponent
@RequiredArgsConstructor
public class CommentFixtureBuilder {

private final CommentRepository commentRepository;

private String content;
private Post post;
private SiteUser siteUser;
private Comment parentComment;

public CommentFixtureBuilder content(String content) {
this.content = content;
return this;
}

public CommentFixtureBuilder post(Post post) {
this.post = post;
return this;
}

public CommentFixtureBuilder siteUser(SiteUser siteUser) {
this.siteUser = siteUser;
return this;
}

public CommentFixtureBuilder parentComment(Comment parentComment) {
this.parentComment = parentComment;
return this;
}

public Comment createParent() {
Comment comment = new Comment(content);
comment.setPostAndSiteUser(post, siteUser);
return commentRepository.save(comment);
}

public Comment createChild() {
Comment comment = new Comment(content);
comment.setPostAndSiteUser(post, siteUser);
comment.setParentCommentAndPostAndSiteUser(parentComment, post, siteUser);
return commentRepository.save(comment);
}
}
Loading
Loading