Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: TieredCategory에서 블로그 의존성 제거 #149

Merged
merged 2 commits into from
Dec 11, 2023
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
9 changes: 1 addition & 8 deletions src/main/java/com/mallang/category/TieredCategory.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
import static lombok.AccessLevel.PROTECTED;

import com.mallang.auth.domain.Member;
import com.mallang.blog.domain.Blog;
import com.mallang.common.domain.CommonRootEntity;
import jakarta.annotation.Nullable;
import jakarta.persistence.GeneratedValue;
Expand Down Expand Up @@ -38,15 +37,9 @@ public abstract class TieredCategory<T extends TieredCategory<T>> extends Common
@JoinColumn(name = "owner_id", nullable = false)
protected Member owner;

@ManyToOne(fetch = LAZY)
@JoinColumn(name = "blog_id", nullable = false)
protected Blog blog;

protected TieredCategory(String name, Member owner, Blog blog) {
protected TieredCategory(String name, Member owner) {
this.name = name;
this.owner = owner;
this.blog = blog;
blog.validateOwner(owner);
}

public abstract void validateOwner(Member member);
Expand Down
8 changes: 7 additions & 1 deletion src/main/java/com/mallang/post/domain/PostCategory.java
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,14 @@ public class PostCategory extends TieredCategory<PostCategory> {
@JoinColumn(name = "next_sibling_id")
private PostCategory nextSibling;

@ManyToOne(fetch = LAZY)
@JoinColumn(name = "blog_id", nullable = false)
protected Blog blog;

public PostCategory(String name, Member owner, Blog blog) {
super(name, owner, blog);
super(name, owner);
this.blog = blog;
blog.validateOwner(owner);
}

@Override
Expand Down
12 changes: 6 additions & 6 deletions src/main/resources/application.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@ spring:
jpa:
hibernate:
ddl-auto: create
show-sql: true
properties:
hibernate:
format_sql: true
use_sql_comments: true
highlight_sql: true
# show-sql: true
# properties:
# hibernate:
# format_sql: true
# use_sql_comments: true
# highlight_sql: true

auth:
oauth:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;

@DisplayName("카테고리 인수테스트")
@DisplayName("포스트 카테고리 인수테스트")
@SuppressWarnings("NonAsciiCharacters")
@DisplayNameGeneration(ReplaceUnderscores.class)
class PostCategoryAcceptanceTest extends AcceptanceTest {
Expand Down
234 changes: 111 additions & 123 deletions src/test/java/com/mallang/category/TieredCategoryTestTemplate.java

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;

@DisplayName("카테고리 서비스 (PostCategoryService) 은(는)")
@DisplayName("포스트 카테고리 서비스 (PostCategoryService) 은(는)")
@SuppressWarnings("NonAsciiCharacters")
@DisplayNameGeneration(ReplaceUnderscores.class)
class PostCategoryServiceTest extends ServiceTest {
Expand Down
32 changes: 25 additions & 7 deletions src/test/java/com/mallang/post/domain/PostCategoryTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,44 +2,62 @@

import static com.mallang.post.PostCategoryFixture.루트_카테고리;
import static com.mallang.post.PostCategoryFixture.하위_카테고리;
import static org.assertj.core.api.Assertions.assertThatThrownBy;

import com.mallang.auth.domain.Member;
import com.mallang.blog.domain.Blog;
import com.mallang.blog.exception.NoAuthorityBlogException;
import com.mallang.category.TieredCategoryTestTemplate;
import com.mallang.post.exception.NoAuthorityPostCategoryException;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.DisplayNameGeneration;
import org.junit.jupiter.api.DisplayNameGenerator.ReplaceUnderscores;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;

@DisplayName("카테고리 (PostCategory) 은(는)")
@DisplayName("포스트 카테고리 (PostCategory) 은(는)")
@SuppressWarnings("NonAsciiCharacters")
@DisplayNameGeneration(ReplaceUnderscores.class)
class PostCategoryTest extends TieredCategoryTestTemplate<PostCategory> {

@Override
protected PostCategory createRoot(String name, Member owner, Blog blog) {
return 루트_카테고리(name, owner, blog);
protected PostCategory createRoot(String name, Member owner) {
return 루트_카테고리(name, owner, new Blog("blog", owner));
}

@Override
protected PostCategory createChild(String name, Member owner, Blog blog, PostCategory parent) {
return 하위_카테고리(name, owner, blog, parent);
protected PostCategory createChild(String name, Member owner, PostCategory parent) {
return 하위_카테고리(name, owner, new Blog("blog", owner), parent);
}

@Override
protected PostCategory createChild(
String name,
Member owner,
Blog blog,
PostCategory parent,
PostCategory prev,
PostCategory next
) {
return 하위_카테고리(name, owner, blog, parent, prev, next);
return 하위_카테고리(name, owner, new Blog("blog", owner), parent, prev, next);
}

@Override
protected Class<?> 권한_없음_예외() {
return NoAuthorityPostCategoryException.class;
}

@Nested
class 생성_시 extends TieredCategoryTestTemplate<PostCategory>.생성_시 {

@Test
void 다른_사람의_블로그에_카테고리_생성_시도_시_예외() {
// given
Blog otherBlog = new Blog("other", otherMember);

// when & then
assertThatThrownBy(() -> {
new PostCategory("root", member, otherBlog);
}).isInstanceOf(NoAuthorityBlogException.class);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
import org.junit.jupiter.api.DisplayNameGenerator.ReplaceUnderscores;
import org.junit.jupiter.api.Test;

@DisplayName("카테고리 조회 서비스 (PostCategoryQueryService) 은(는)")
@DisplayName("포스트 카테고리 조회 서비스 (PostCategoryQueryService) 은(는)")
@SuppressWarnings("NonAsciiCharacters")
@DisplayNameGeneration(ReplaceUnderscores.class)
class PostCategoryQueryServiceTest extends ServiceTest {
Expand Down