package sagan.search.support; import com.google.gson.Gson; import io.searchbox.core.Search; import org.elasticsearch.index.query.FilteredQueryBuilder; import org.junit.Test; import org.springframework.core.io.ClassPathResource; import org.springframework.data.domain.PageRequest; import org.springframework.util.StreamUtils; import java.nio.charset.Charset; import java.util.Arrays; import java.util.List; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.equalTo; public class SaganQueryBuildersTests { @Test public void deleteUnsupportedProjectEntries() { String projectId="spring-framework"; List<String> supportedVersions = Arrays.asList("4.1.0.RELEASE","4.0.0.RELEASE"); String expected = "{" + "\"query\":{" + "\"filtered\":{" + "\"query\":{\"match_all\":{}}," + "\"filter\":{" + "\"and\":{\"filters\":[" + "{\"term\":{\"projectId\":\"spring-framework\"}}," + "{\"not\":{\"filter\":{" + "\"or\":{\"filters\":[" + "{\"term\":{\"version\":\"4.1.0.RELEASE\"}}," + "{\"term\":{\"version\":\"4.0.0.RELEASE\"}}" + "]}" + "}}}" + "]}" + "}" + "}" + "}}"; FilteredQueryBuilder builder = SaganQueryBuilders.matchUnsupportedProjectEntries(projectId, supportedVersions); String result = SaganQueryBuilders.wrapQuery(builder.toString()); assertThat(result.replaceAll("[\\s|\\r|\\n]",""), equalTo(expected)); } @Test public void fullTextSearch() throws Exception { String query = "spring boot"; List<String> filters = Arrays.asList("Projects/Api", "Projects/Reference", "Blog/Engineering", "Projects/Reactor Project/1.1.0.RELEASE"); Search.Builder builder = SaganQueryBuilders.fullTextSearch(query, new PageRequest(0, 10), filters); String expected = StreamUtils.copyToString( new ClassPathResource("/fulltext-query.json", getClass()).getInputStream(), Charset.forName("UTF-8")); String actual = builder.build().getData(new Gson()); assertThat(actual.replaceAll("[\\s|\\r|\\n]",""), equalTo(expected.replaceAll("[\\s|\\r|\\n]",""))); } }