From b77ca49bbbd5cb935fc62035da3a7f620eff578d Mon Sep 17 00:00:00 2001 From: Cristina Yenyxe Gonzalez Garcia Date: Mon, 23 Apr 2018 18:06:51 +0100 Subject: [PATCH 1/2] Filter EVA browsable studies by date --- .../ac/ebi/eva/server/ws/ArchiveWSServer.java | 13 +++- .../eva/server/ws/ArchiveWSServerTest.java | 63 +++++++++++++++---- 2 files changed, 63 insertions(+), 13 deletions(-) diff --git a/eva-server/src/main/java/uk/ac/ebi/eva/server/ws/ArchiveWSServer.java b/eva-server/src/main/java/uk/ac/ebi/eva/server/ws/ArchiveWSServer.java index a354b5119..5494f4541 100644 --- a/eva-server/src/main/java/uk/ac/ebi/eva/server/ws/ArchiveWSServer.java +++ b/eva-server/src/main/java/uk/ac/ebi/eva/server/ws/ArchiveWSServer.java @@ -22,6 +22,7 @@ import io.swagger.annotations.Api; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.format.annotation.DateTimeFormat; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; @@ -39,6 +40,7 @@ import uk.ac.ebi.eva.lib.utils.QueryResult; import java.io.IOException; +import java.util.Date; import java.util.List; @RestController @@ -89,10 +91,17 @@ public QueryResponse getStudies(@RequestParam(name = "species", required = false } @RequestMapping(value = "/studies/list", method = RequestMethod.GET) - public QueryResponse getBrowsableStudies(@RequestParam("species") String species) + public QueryResponse getBrowsableStudies(@RequestParam(name = "species") String species, + @RequestParam(name = "fromDate", required = false) + @DateTimeFormat(pattern="yyyy-MM-dd") Date date) throws IOException { MultiMongoDbFactory.setDatabaseNameForCurrentThread(DBAdaptorConnector.getDBName(species)); - List uniqueStudies = variantStudySummaryService.findAll(); + List uniqueStudies; + if (date == null) { + uniqueStudies = variantStudySummaryService.findAll(); + } else { + uniqueStudies = variantStudySummaryService.findByFromDate(date); + } QueryResult result = buildQueryResult(uniqueStudies); return setQueryResponse(result); } diff --git a/eva-server/src/test/java/uk/ac/ebi/eva/server/ws/ArchiveWSServerTest.java b/eva-server/src/test/java/uk/ac/ebi/eva/server/ws/ArchiveWSServerTest.java index c84dc864d..e4550a7e9 100644 --- a/eva-server/src/test/java/uk/ac/ebi/eva/server/ws/ArchiveWSServerTest.java +++ b/eva-server/src/test/java/uk/ac/ebi/eva/server/ws/ArchiveWSServerTest.java @@ -62,6 +62,7 @@ import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import static org.mockito.BDDMockito.given; +import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyObject; @RunWith(SpringRunner.class) @@ -165,18 +166,21 @@ public void setup() throws URISyntaxException, IOException { given(archiveDgvaDBAdaptor.countStudiesPerType(anyObject())) .willReturn(encapsulateInQueryResult(svStudiesGroupedByStudyType.entrySet().toArray())); - List studies = buildVariantStudySummaries(); - given(service.findAll()).willReturn(studies); + given(service.findAll()).willReturn(buildVariantStudySummaries(study1, study2, study3)); + given(service.findByFromDate(any())).willReturn(buildVariantStudySummaries(study1)); } - private List buildVariantStudySummaries() { - List studies = new ArrayList<>(); - VariantStudySummary study = new VariantStudySummary(); - study.setFilesCount(1); - study.setStudyId("studyId"); - study.setStudyName("studyName"); - studies.add(study); - return studies; + private List buildVariantStudySummaries(VariantStudy... studies) { + List summaries = new ArrayList<>(); + + for (VariantStudy study : studies) { + VariantStudySummary summary = new VariantStudySummary(); + summary.setFilesCount(1); + summary.setStudyId(study.getId()); + summary.setStudyName(study.getName()); + summaries.add(summary); + } + return summaries; } private QueryResult encapsulateInQueryResult(T... results) { @@ -281,7 +285,8 @@ public void testGetBrowsableStudiesBySpecies() throws URISyntaxException { assertEquals(1, queryResponse.getResponse().size()); List results = queryResponse.getResponse().get(0).getResult(); - assertTrue(results.size() >= 1); + System.out.println(results); + assertEquals(3, results.size()); for (VariantStudySummary variantStudySummary : results) { assertTrue(variantStudySummary.getFilesCount() > 0); @@ -290,6 +295,42 @@ public void testGetBrowsableStudiesBySpecies() throws URISyntaxException { } } + @Test + public void testGetBrowsableStudiesBySpeciesAndFromDate() throws URISyntaxException { + String url = "/v1/meta/studies/list?species=hsapiens_grch37&fromDate=2018-01-01"; + ResponseEntity>> response = restTemplate.exchange( + url, HttpMethod.GET, null, + new ParameterizedTypeReference>>() {}); + assertEquals(HttpStatus.OK, response.getStatusCode()); + + QueryResponse> queryResponse = response.getBody(); + assertEquals(1, queryResponse.getResponse().size()); + + List results = queryResponse.getResponse().get(0).getResult(); + assertEquals(1, results.size()); + + for (VariantStudySummary variantStudySummary : results) { + assertTrue(variantStudySummary.getFilesCount() > 0); + assertEquals("Human Test study 1", variantStudySummary.getStudyName()); + assertEquals("S1", variantStudySummary.getStudyId()); + } + } + + @Test + public void testGetBrowsableStudiesBySpeciesAndFutureFromDate() throws URISyntaxException { + String url = "/v1/meta/studies/list?species=hsapiens_grch37&fromDate=3000-01-01"; + ResponseEntity>> response = restTemplate.exchange( + url, HttpMethod.GET, null, + new ParameterizedTypeReference>>() {}); + assertEquals(HttpStatus.OK, response.getStatusCode()); + + QueryResponse> queryResponse = response.getBody(); + assertEquals(1, queryResponse.getResponse().size()); + + List results = queryResponse.getResponse().get(0).getResult(); + assertEquals(0, results.size()); + } + @Test public void testGetStudies() throws URISyntaxException { String url = "/v1/meta/studies/all"; From 9ca77016d840400b7e959b8c16361a68d3a50bb8 Mon Sep 17 00:00:00 2001 From: Cristina Yenyxe Gonzalez Garcia Date: Tue, 1 May 2018 06:18:19 -0400 Subject: [PATCH 2/2] Removed println statement --- .../test/java/uk/ac/ebi/eva/server/ws/ArchiveWSServerTest.java | 1 - 1 file changed, 1 deletion(-) diff --git a/eva-server/src/test/java/uk/ac/ebi/eva/server/ws/ArchiveWSServerTest.java b/eva-server/src/test/java/uk/ac/ebi/eva/server/ws/ArchiveWSServerTest.java index e4550a7e9..96f81dcab 100644 --- a/eva-server/src/test/java/uk/ac/ebi/eva/server/ws/ArchiveWSServerTest.java +++ b/eva-server/src/test/java/uk/ac/ebi/eva/server/ws/ArchiveWSServerTest.java @@ -285,7 +285,6 @@ public void testGetBrowsableStudiesBySpecies() throws URISyntaxException { assertEquals(1, queryResponse.getResponse().size()); List results = queryResponse.getResponse().get(0).getResult(); - System.out.println(results); assertEquals(3, results.size()); for (VariantStudySummary variantStudySummary : results) {