[Spring Test]Repository Test

dong's memory·2024년 4월 18일

Spring

목록 보기
11/11

스프링 프로젝션
Spring JPA에서 제공하는 Projection 기능은 엔티티의 일부 데이터만을 가져오게 하는 기능입니다.

package com.nineties.bhr.badge.repository;

import com.nineties.bhr.badge.domain.BadgeMaster;
import com.nineties.bhr.badge.domain.BadgeStatus;
import com.nineties.bhr.badge.dto.BadgeProjection;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.jdbc.Sql;

import java.util.List;

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

@DataJpaTest
@ActiveProfiles("test")
@Sql("/init.sql")
class BadgeMasterRepositoryTest {
    @Autowired
    private BadgeMasterRepository badgeMasterRepository;

    private BadgeProjection badgeProjection;

    @Test
    void 모든_배지목록_조회() {
        // given init.sql로 대체

        // when
        List<BadgeProjection> badgeProjections = badgeMasterRepository.findAllProjectedBy();

        // then
        // 모든 목록은 size 테스트
        assertThat(badgeProjections.size()).isEqualTo(8);
//        assertThat(badgeProjections).isNotNull();
    }

    @Test
    void 배지이름으로_조회() {
        // 배지이름으로 테스트 했을시 해당 배지가 나와야함
        // given init.sql로 대체

        // when
        BadgeMaster badgeMaster = badgeMasterRepository.findByBadgeName("귀여운건 나도 알아");

        // then
        assertThat(badgeMaster.getBadgeName()).isEqualTo("귀여운건 나도 알아");
    }

    @Test
    void 배지이름과_상태로_조회() {
        // when
        BadgeMaster badgeMaster = badgeMasterRepository.findByBadgeNameAndStatus("귀여운건 나도 알아", BadgeStatus.Enabled);

        // then
        assertThat(badgeMaster.getBadgeName()).isEqualTo("귀여운건 나도 알아");
        assertThat(badgeMaster.getStatus()).isEqualTo(BadgeStatus.Enabled);
    }
}

0개의 댓글