diff --git a/src/main/java/edu/harvard/dbmi/avillach/dictionary/legacysearch/MetadataResultSetUtil.java b/src/main/java/edu/harvard/dbmi/avillach/dictionary/legacysearch/MetadataResultSetUtil.java index a1d5212..9e94602 100644 --- a/src/main/java/edu/harvard/dbmi/avillach/dictionary/legacysearch/MetadataResultSetUtil.java +++ b/src/main/java/edu/harvard/dbmi/avillach/dictionary/legacysearch/MetadataResultSetUtil.java @@ -43,8 +43,8 @@ public Result mapContinuousMetadata(ResultSet rs) throws SQLException { rs.getString("dsFullName"), parentName, parentDisplay, rs.getString("conceptPath"), min, max ); return new Result( - metadata, jsonBlobParser.parseValues(rs.getString("values")), rs.getString("dataset"), - parentName == null || parentName.isBlank() ? "All Variables" : parentName, rs.getString("name"), false, true + metadata, jsonBlobParser.parseValues(rs.getString("values")), rs.getString("dataset"), parentName, rs.getString("name"), false, + true ); } @@ -53,7 +53,7 @@ private static String getParentDisplay(ResultSet rs) throws SQLException { } private static String getParentName(ResultSet rs) throws SQLException { - return rs.getString("parentName") == null || rs.getString("parentName").isBlank() ? "" : rs.getString("parentName"); + return rs.getString("parentName") == null || rs.getString("parentName").isBlank() ? "All Variables" : rs.getString("parentName"); } private static String getDescription(ResultSet rs) throws SQLException { @@ -75,8 +75,8 @@ public Result mapCategoricalMetadata(ResultSet rs) throws SQLException { ); return new Result( - metadata, jsonBlobParser.parseValues(rs.getString("values")), rs.getString("dataset"), - parentName == null || parentName.isBlank() ? "All Variables" : parentName, rs.getString("name"), true, false + metadata, jsonBlobParser.parseValues(rs.getString("values")), rs.getString("dataset"), parentName, rs.getString("name"), true, + false ); } diff --git a/src/test/java/edu/harvard/dbmi/avillach/dictionary/legacysearch/LegacySearchControllerIntegrationTest.java b/src/test/java/edu/harvard/dbmi/avillach/dictionary/legacysearch/LegacySearchControllerIntegrationTest.java new file mode 100644 index 0000000..d68a4f4 --- /dev/null +++ b/src/test/java/edu/harvard/dbmi/avillach/dictionary/legacysearch/LegacySearchControllerIntegrationTest.java @@ -0,0 +1,57 @@ +package edu.harvard.dbmi.avillach.dictionary.legacysearch; + +import edu.harvard.dbmi.avillach.dictionary.legacysearch.model.LegacyResponse; +import edu.harvard.dbmi.avillach.dictionary.legacysearch.model.Results; +import edu.harvard.dbmi.avillach.dictionary.legacysearch.model.SearchResult; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.test.context.DynamicPropertyRegistry; +import org.springframework.test.context.DynamicPropertySource; +import org.testcontainers.containers.PostgreSQLContainer; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; +import org.testcontainers.utility.MountableFile; + +import java.io.IOException; +import java.util.List; + +@SpringBootTest +@Testcontainers +class LegacySearchControllerIntegrationTest { + + @Autowired + LegacySearchController legacySearchController; + + @Container + static final PostgreSQLContainer databaseContainer = new PostgreSQLContainer<>("postgres:16").withReuse(true) + .withCopyFileToContainer(MountableFile.forClasspathResource("seed.sql"), "/docker-entrypoint-initdb.d/seed.sql"); + + @DynamicPropertySource + static void mySQLProperties(DynamicPropertyRegistry registry) { + registry.add("spring.datasource.url", databaseContainer::getJdbcUrl); + registry.add("spring.datasource.username", databaseContainer::getUsername); + registry.add("spring.datasource.password", databaseContainer::getPassword); + registry.add("spring.datasource.db", databaseContainer::getDatabaseName); + } + + @Test + void shouldGetLegacyResponseByStudyID() throws IOException { + String jsonString = """ + {"query":{"searchTerm":"phs000007","includedTags":[],"excludedTags":[],"returnTags":"true","offset":0,"limit":100}} + """; + + ResponseEntity legacyResponseResponseEntity = legacySearchController.legacySearch(jsonString); + System.out.println(legacyResponseResponseEntity); + Assertions.assertEquals(HttpStatus.OK, legacyResponseResponseEntity.getStatusCode()); + LegacyResponse legacyResponseBody = legacyResponseResponseEntity.getBody(); + Assertions.assertNotNull(legacyResponseBody); + Results results = legacyResponseBody.results(); + List searchResults = results.searchResults(); + searchResults.forEach(searchResult -> Assertions.assertEquals("phs000007", searchResult.result().studyId())); + } + +}