API Spec 상태 조회 및 관리 기능 추가
- ApiSpecStatusRepository 신규 추가 - 스펙 상태 검색 조건/그룹 조회 및 UI 반영
This commit is contained in:
+84
@@ -0,0 +1,84 @@
|
||||
package com.eactive.eai.rms.data.entity.onl.apim.apispec;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.HashSet;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
import javax.persistence.EntityManager;
|
||||
|
||||
import com.eactive.apim.portal.apispec.entity.ApiSpecInfo;
|
||||
import org.hibernate.SessionFactory;
|
||||
import org.hibernate.cfg.Configuration;
|
||||
import org.junit.jupiter.api.AfterAll;
|
||||
import org.junit.jupiter.api.BeforeAll;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.data.jpa.repository.support.JpaRepositoryFactory;
|
||||
|
||||
class ApiSpecStatusRepositoryTest {
|
||||
private static SessionFactory sessionFactory;
|
||||
private static EntityManager entityManager;
|
||||
private static ApiSpecStatusRepository repository;
|
||||
|
||||
@BeforeAll
|
||||
static void setUp() {
|
||||
sessionFactory = new Configuration()
|
||||
.addAnnotatedClass(ApiSpecInfo.class)
|
||||
.setProperty("hibernate.dialect", "org.hibernate.dialect.H2Dialect")
|
||||
.setProperty("hibernate.connection.driver_class", "org.h2.Driver")
|
||||
.setProperty("hibernate.connection.url", "jdbc:h2:mem:apiSpecStatus;DB_CLOSE_DELAY=-1")
|
||||
.setProperty("hibernate.hbm2ddl.auto", "create-drop")
|
||||
.buildSessionFactory();
|
||||
entityManager = sessionFactory.createEntityManager();
|
||||
repository = new JpaRepositoryFactory(entityManager).getRepository(ApiSpecStatusRepository.class);
|
||||
entityManager.getTransaction().begin();
|
||||
save("PUBLISHED1", "Y");
|
||||
save("REGISTERED1", "N");
|
||||
save("LEGACY2", null);
|
||||
entityManager.getTransaction().commit();
|
||||
entityManager.clear();
|
||||
}
|
||||
|
||||
private static void save(String apiId, String displayYn) {
|
||||
ApiSpecInfo spec = new ApiSpecInfo();
|
||||
spec.setApiId(apiId);
|
||||
spec.setDisplayYn(displayYn);
|
||||
entityManager.persist(spec);
|
||||
}
|
||||
|
||||
@AfterAll
|
||||
static void tearDown() {
|
||||
if (entityManager != null) entityManager.close();
|
||||
if (sessionFactory != null) sessionFactory.close();
|
||||
}
|
||||
|
||||
@Test
|
||||
void publishedIncludesOnlyDisplayedSpecs() {
|
||||
assertEquals(Arrays.asList("PUBLISHED1"), repository.findApiIdsByStatus("PUBLISHED"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void registeredIncludesNonDisplayedAndLegacyNullSpecs() {
|
||||
assertEquals(new HashSet<>(Arrays.asList("REGISTERED1", "LEGACY2")),
|
||||
new HashSet<>(repository.findApiIdsByStatus("REGISTERED")));
|
||||
}
|
||||
|
||||
@Test
|
||||
void statusProjectionIncludesOnlyRequestedExistingSpecs() {
|
||||
Map<String, String> statuses = repository.findStatusesByApiIds(
|
||||
Arrays.asList("PUBLISHED1", "LEGACY2", "MISSING2")).stream()
|
||||
.collect(Collectors.toMap(ApiSpecStatusRepository.SpecStatus::getApiId,
|
||||
spec -> "Y".equals(spec.getDisplayYn()) ? "PUBLISHED" : "REGISTERED"));
|
||||
assertEquals(2, statuses.size());
|
||||
assertEquals("PUBLISHED", statuses.get("PUBLISHED1"));
|
||||
assertEquals("REGISTERED", statuses.get("LEGACY2"));
|
||||
assertEquals("UNREGISTERED", statuses.getOrDefault("MISSING2", "UNREGISTERED"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void missingApiHasNoSpecStatus() {
|
||||
assertTrue(repository.findStatusesByApiIds(Arrays.asList("MISSING2")).isEmpty());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user