From 9e1bf29ecdbdeb22b8e45b07ea50ce03fe6c7b0d Mon Sep 17 00:00:00 2001 From: Sulejman Karisik Date: Mon, 10 Jun 2024 16:30:46 +0200 Subject: [PATCH] fix: tests and use enum --- .../discovery/services/CkanFacetsQueryBuilder.java | 2 +- .../discovery/services/CkanQueryOperatorMapper.java | 5 +++-- src/main/openapi/discovery.yaml | 6 +++++- .../discovery/services/CkanFacetsQueryBuilderTest.java | 10 ++++++---- 4 files changed, 15 insertions(+), 8 deletions(-) diff --git a/src/main/java/io/github/genomicdatainfrastructure/discovery/services/CkanFacetsQueryBuilder.java b/src/main/java/io/github/genomicdatainfrastructure/discovery/services/CkanFacetsQueryBuilder.java index 779a200..45a4719 100644 --- a/src/main/java/io/github/genomicdatainfrastructure/discovery/services/CkanFacetsQueryBuilder.java +++ b/src/main/java/io/github/genomicdatainfrastructure/discovery/services/CkanFacetsQueryBuilder.java @@ -47,7 +47,7 @@ private Boolean isCkanGroupAndFacetIsNotBlank(DatasetSearchQueryFacet facet) { } private String getFacetQuery(String key, List facets, - String operator) { + DatasetSearchQuery.OperatorEnum operator) { var values = facets.stream() .map(facet -> QUOTED_VALUE.formatted(facet.getValue())) .collect(joining(CkanQueryOperatorMapper.getOperator(operator))); diff --git a/src/main/java/io/github/genomicdatainfrastructure/discovery/services/CkanQueryOperatorMapper.java b/src/main/java/io/github/genomicdatainfrastructure/discovery/services/CkanQueryOperatorMapper.java index 9da756c..ea992d0 100644 --- a/src/main/java/io/github/genomicdatainfrastructure/discovery/services/CkanQueryOperatorMapper.java +++ b/src/main/java/io/github/genomicdatainfrastructure/discovery/services/CkanQueryOperatorMapper.java @@ -4,6 +4,7 @@ package io.github.genomicdatainfrastructure.discovery.services; +import io.github.genomicdatainfrastructure.discovery.model.DatasetSearchQuery; import lombok.experimental.UtilityClass; @UtilityClass @@ -12,7 +13,7 @@ public class CkanQueryOperatorMapper { private final String AND = " AND "; private final String OR = " OR "; - public String getOperator(String operator) { - return operator.equals(CkanQueryOperator.Or) ? OR : AND; + public String getOperator(DatasetSearchQuery.OperatorEnum operator) { + return operator.equals(DatasetSearchQuery.OperatorEnum.OR) ? OR : AND; } } diff --git a/src/main/openapi/discovery.yaml b/src/main/openapi/discovery.yaml index f2307b4..1d76080 100644 --- a/src/main/openapi/discovery.yaml +++ b/src/main/openapi/discovery.yaml @@ -113,8 +113,12 @@ components: default: 0 minimum: 0 operator: + title: Ckan query operator type: string - default: "and" + enum: + - AND + - OR + default: AND DatasetSearchQueryFacet: type: object properties: diff --git a/src/test/java/io/github/genomicdatainfrastructure/discovery/services/CkanFacetsQueryBuilderTest.java b/src/test/java/io/github/genomicdatainfrastructure/discovery/services/CkanFacetsQueryBuilderTest.java index 29101e0..1fb6a76 100644 --- a/src/test/java/io/github/genomicdatainfrastructure/discovery/services/CkanFacetsQueryBuilderTest.java +++ b/src/test/java/io/github/genomicdatainfrastructure/discovery/services/CkanFacetsQueryBuilderTest.java @@ -20,15 +20,17 @@ class CkanFacetsQueryBuilderTest { @Test void can_parse_if_empty_list() { + var query = new DatasetSearchQuery(); + query.setFacets(List.of()); var expected = ""; - var actual = CkanFacetsQueryBuilder.buildFacetQuery(null); + var actual = CkanFacetsQueryBuilder.buildFacetQuery(query); assertEquals(expected, actual); } @Test void can_parse_if_null_list() { String expected = ""; - var actual = CkanFacetsQueryBuilder.buildFacetQuery(null); + var actual = CkanFacetsQueryBuilder.buildFacetQuery(new DatasetSearchQuery()); assertEquals(expected, actual); } @@ -50,7 +52,7 @@ void can_parse_with_and_operator(String value) { var query = new DatasetSearchQuery(); query.setFacets(facets); - query.setOperator(CkanQueryOperator.And); + query.setOperator(DatasetSearchQuery.OperatorEnum.AND); var expected = "field1:(\"value1\" AND \"value2\") AND field2:(\"value3\")"; var actual = CkanFacetsQueryBuilder.buildFacetQuery(query); @@ -75,7 +77,7 @@ void can_parse_with_or_operator(String value) { var query = new DatasetSearchQuery(); query.setFacets(facets); - query.setOperator(CkanQueryOperator.Or); + query.setOperator(DatasetSearchQuery.OperatorEnum.OR); var expected = "field1:(\"value1\" OR \"value2\") OR field2:(\"value3\")"; var actual = CkanFacetsQueryBuilder.buildFacetQuery(query);