Skip to content

Commit f8a7496

Browse files
committed
test: 도감 테스트 추가 및 수정
1 parent 2b7b329 commit f8a7496

4 files changed

Lines changed: 58 additions & 0 deletions

File tree

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package org.devkor.apu.saerok_server.domain.dex.bird;
2+
3+
import jakarta.persistence.EntityManager;
4+
import org.devkor.apu.saerok_server.testsupport.AbstractPostgresContainerTest;
5+
import org.junit.jupiter.api.DisplayName;
6+
import org.junit.jupiter.api.Test;
7+
import org.springframework.beans.factory.annotation.Autowired;
8+
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
9+
import org.springframework.test.context.ActiveProfiles;
10+
11+
import static org.assertj.core.api.Assertions.assertThat;
12+
13+
@DataJpaTest
14+
@ActiveProfiles("test")
15+
class BirdConservationGradeMigrationTest extends AbstractPostgresContainerTest {
16+
17+
@Autowired
18+
EntityManager em;
19+
20+
@Test
21+
@DisplayName("Flyway 보호등급 데이터가 현재 도감 seed 기준 카운트와 일치한다")
22+
void conservationGradeCounts_matchSpreadsheet() {
23+
Object[] row = (Object[]) em.createNativeQuery("""
24+
SELECT
25+
COUNT(*) FILTER (WHERE conservation_grade = 'GRADE_I'),
26+
COUNT(*) FILTER (WHERE conservation_grade = 'GRADE_II'),
27+
COUNT(*) FILTER (WHERE conservation_grade = 'NONE')
28+
FROM bird
29+
""").getSingleResult();
30+
31+
assertThat(((Number) row[0]).longValue()).isEqualTo(16L);
32+
assertThat(((Number) row[1]).longValue()).isEqualTo(58L);
33+
assertThat(((Number) row[2]).longValue()).isEqualTo(512L);
34+
}
35+
}

src/test/java/org/devkor/apu/saerok_server/domain/dex/bird/core/repository/BirdRepositoryTest.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package org.devkor.apu.saerok_server.domain.dex.bird.core.repository;
22

33
import org.devkor.apu.saerok_server.domain.dex.bird.core.entity.Bird;
4+
import org.devkor.apu.saerok_server.domain.dex.bird.core.enums.ConservationGrade;
45
import org.devkor.apu.saerok_server.domain.dex.bird.query.dto.BirdSearchDto;
56
import org.devkor.apu.saerok_server.domain.dex.bird.query.dto.CmRangeDto;
67
import org.devkor.apu.saerok_server.domain.dex.bird.query.enums.BirdSearchSortDirType;
@@ -46,6 +47,14 @@ void findById_returnsActiveBird() {
4647
assertThat(found.get().getId()).isEqualTo(bird.getId());
4748
}
4849

50+
@Test @DisplayName("findById returns conservation grade")
51+
void findById_returnsConservationGrade() {
52+
Optional<Bird> found = repo.findById(600L);
53+
54+
assertThat(found).isPresent();
55+
assertThat(found.get().getConservationGrade()).isEqualTo(ConservationGrade.GRADE_I);
56+
}
57+
4958
@Test @DisplayName("findById - soft delete 된 새 제외")
5059
void findById_excludesSoftDeleted() {
5160
Bird bird = newBird("deleted-bird-" + System.nanoTime(), 10.0);

src/test/java/org/devkor/apu/saerok_server/domain/dex/bird/query/repository/BirdProfileViewRepositoryTest.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package org.devkor.apu.saerok_server.domain.dex.bird.query.repository;
22

33
import org.devkor.apu.saerok_server.domain.dex.bird.core.entity.Bird;
4+
import org.devkor.apu.saerok_server.domain.dex.bird.core.enums.ConservationGrade;
45
import org.devkor.apu.saerok_server.domain.dex.bird.core.repository.BirdRepository;
56
import org.devkor.apu.saerok_server.domain.dex.bird.query.view.BirdProfileView;
67
import org.devkor.apu.saerok_server.testsupport.AbstractPostgresContainerTest;
@@ -47,6 +48,16 @@ public class BirdProfileViewRepositoryTest extends AbstractPostgresContainerTest
4748
System.out.println(birdProfile.get().toSummaryString());
4849
}
4950

51+
@Test
52+
void 새프로필에_보호등급이_포함된다() {
53+
// when
54+
Optional<BirdProfileView> birdProfile = birdProfileRepository.findById(600L);
55+
56+
// then
57+
assertTrue(birdProfile.isPresent());
58+
assertEquals(ConservationGrade.GRADE_I, birdProfile.get().getConservationGrade());
59+
}
60+
5061
@Test
5162
void 새프로필_전부_조회하기() {
5263
// when

src/test/java/org/devkor/apu/saerok_server/domain/dex/bird/query/view/builder/BirdProfileViewTestBuilder.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import org.devkor.apu.saerok_server.domain.dex.bird.core.entity.BirdDescription;
44
import org.devkor.apu.saerok_server.domain.dex.bird.core.entity.BirdName;
55
import org.devkor.apu.saerok_server.domain.dex.bird.query.view.BirdProfileView;
6+
import org.devkor.apu.saerok_server.domain.dex.bird.core.enums.ConservationGrade;
67
import org.devkor.apu.saerok_server.domain.dex.bird.core.entity.BirdTaxonomy;
78
import org.devkor.apu.saerok_server.domain.dex.bird.core.enums.HabitatType;
89
import org.springframework.test.util.ReflectionTestUtils;
@@ -17,6 +18,7 @@ public class BirdProfileViewTestBuilder {
1718
private BirdDescription description = new BirdDescription();
1819
private Double bodyLengthCm = 25.0;
1920
private String nibrUrl = null;
21+
private ConservationGrade conservationGrade = ConservationGrade.NONE;
2022
private List<HabitatType> habitats = List.of();
2123
private List<BirdProfileView.SeasonWithRarity> seasonsWithRarity = List.of();
2224
private List<BirdProfileView.Image> images = List.of();
@@ -30,6 +32,7 @@ public BirdProfileView build() {
3032
ReflectionTestUtils.setField(birdProfileView, "description", description);
3133
ReflectionTestUtils.setField(birdProfileView, "bodyLengthCm", bodyLengthCm);
3234
ReflectionTestUtils.setField(birdProfileView, "nibrUrl", nibrUrl);
35+
ReflectionTestUtils.setField(birdProfileView, "conservationGrade", conservationGrade);
3336
ReflectionTestUtils.setField(birdProfileView, "habitats", habitats);
3437
ReflectionTestUtils.setField(birdProfileView, "seasonsWithRarity", seasonsWithRarity);
3538
ReflectionTestUtils.setField(birdProfileView, "images", images);

0 commit comments

Comments
 (0)