관리 메뉴

JIE0025

[Testcode][도메인][Entity] CategoryTest 본문

백엔드/테스트

[Testcode][도메인][Entity] CategoryTest

Kangjieun11 2023. 1. 9. 02:22
728x90

 

내가 해볼 수 있는 거의 모든 테스트코드를 적은 것 같다.

 


 

 

일단 첫번쨰는 엔티티를 검증하는 도메인테스트!

 

 

엔티티에 대해 값의 추가와 수정만 있으므로 3가지 테스트를 제작했다.

 

package com.FlagHome.backend.domain.category.entity;
import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;

import static org.assertj.core.api.Assertions.*;

import java.util.ArrayList;


public class CategoryTest {

    public Category activityCategoryDepth0() {
        return Category.builder()
                .koreanName("활동게시판")
                .englishName("Activity")
                .categoryDepth(0L)
                .postList(new ArrayList<>())
                .build();
    }
    public Category algorithmCategoryDepth1() {

        return Category.builder()
                .koreanName("알고리즘")
                .englishName("Activity")
                .categoryDepth(1L)
                .postList(new ArrayList<>())
                .build();
    }

    @Test
    @DisplayName("[도메인 테스트] 카테고리 생성")
    void createCategoryTest(){
        //given
        Category category = activityCategoryDepth0();

        //when, then
        Assertions.assertThat(category.getKoreanName()).isEqualTo("활동게시판") ;
        Assertions.assertThat(category.getEnglishName()).isEqualTo("Activity");
        Assertions.assertThat(category.getPostList().size()).isEqualTo(0) ;
        Assertions.assertThat(category.getParent()).isEqualTo(null);
        Assertions.assertThat(category.getCategoryDepth()).isEqualTo(0L);
    }

    @Test
    @DisplayName("[도메인 테스트] 카테고리 데이터 수정")
    void updateCategoryTest(){
        //given
        Category category = algorithmCategoryDepth1();
        category.setParent(activityCategoryDepth0());

        //when
        category.setKoreanName("알고리즘-코테반");
        category.setEnglishName("algorithm-codetest");

        //then
        Assertions.assertThat(category.getKoreanName()).isEqualTo("알고리즘-코테반");
        Assertions.assertThat(category.getEnglishName()).isEqualTo("algorithm-codetest");
    }

    @Test
    @DisplayName("[도메인 테스트] 카테고리 수정 : 부모 카테고리 변경")
    void updateCategoryChangeParent(){
        //given
        Category algorithm = algorithmCategoryDepth1();
        algorithm.setParent(activityCategoryDepth0()); //원래 부모

        Assertions.assertThat(algorithm.getParent().getKoreanName()).isEqualTo("활동게시판");
        Assertions.assertThat(algorithm.getParent().getEnglishName()).isEqualTo("Activity");

        //새 부모 생성
        Category study =   Category.builder()
                .categoryDepth(0L)
                .koreanName("스터디")
                .englishName("Study")
                .postList(new ArrayList<>())
                .build();

        //when
        algorithm.setParent(study);

        //then
        Assertions.assertThat(algorithm.getParent().getKoreanName()).isEqualTo("스터디");
        Assertions.assertThat(algorithm.getParent().getEnglishName()).isEqualTo("Study");
        Assertions.assertThat(algorithm.getParent().getCategoryDepth()).isEqualTo(algorithm.getCategoryDepth() - 1);
    }

}