Commit d1c5e1ca authored by Noel Alonso's avatar Noel Alonso
Browse files

Añade query de atlas en layer + tests

Si se hace una query con atlas = true en layer, solo se retornan las capas
 que tengan atlas activado.
parent 3e3a290f
Loading
Loading
Loading
Loading
+22 −0
Original line number Diff line number Diff line
@@ -171,6 +171,28 @@ public class LayerESRepository extends RWDataESRepository<Layer, SimpleQueryDTO>
		return result.getHits().getHits().get(0);
	}

	/**
	 * Sobrescribe a la función base por incompatibilidad de query. Función que dado
	 * un conjunto de términos, nos devuelve una query de elasticsearch. Debe estar
	 * implementado en cada repositorio para darle una funcionalidad específica y
	 * aquí estarán las funcionalidades que comparten todos los repositorios.
	 * 
	 * @param terms
	 *            Map de términos pasados por la query.
	 * @param query
	 *            QueryBuilder con la query de los términos acumulados en los
	 *            repositorios específicos.
	 * @return query de tipo terms de elasticsearch.
	 */
	@Override
	public QueryBuilder getTermQuery(Map<String, Object> terms, BoolQueryBuilder query) {

		if (terms.containsKey("atlas")) {
			query.must(QueryBuilders.termQuery("atlas", Boolean.valueOf(terms.get("atlas").toString())));
		}
		return super.getTermQuery(terms, query);
	}

	private QueryBuilder getLayerQuery() {
		return QueryBuilders.existsQuery(URL_SOURCE_PROPERTY);
	}
+52 −0
Original line number Diff line number Diff line
@@ -105,6 +105,7 @@ public class LayerControllerTest extends DocumentationViewBaseTest {

		try {
			layer = (Layer) JsonToBeanTestUtil.getBean("/data/model/layer/layer.json", Layer.class);
			layer.setAtlas(false);
		} catch (IOException e) {
			e.printStackTrace();
		}
@@ -166,6 +167,57 @@ public class LayerControllerTest extends DocumentationViewBaseTest {
		// @formatter:on
	}

	@Test
	public void searchLayersPost_NoReturnResult_WhenSearchLayersWithAtlasEqualToTrue() throws Exception {

		SimpleQueryDTO dataQuery = new SimpleQueryDTO();
		dataQuery.setSize(1);

		dataQuery.addTerm("atlas", true);

		// @formatter:off
		
		this.mockMvc
				.perform(post(LAYER_PATH + "/_search").content(mapper.writeValueAsString(dataQuery))
					.contentType(MediaType.APPLICATION_JSON).accept(MediaType.APPLICATION_JSON))
				.andExpect(status().isOk())
				.andExpect(jsonPath("$.success", is(true)))
				.andExpect(jsonPath("$.body.data", notNullValue()))
				.andExpect(jsonPath("$.body.data.length()", is(0)));
		
		// @formatter:on
	}

	@Test
	public void searchLayersPost_ReturnResult_WhenSearchLayersWithAtlasEqualToTrue() throws Exception {

		SimpleQueryDTO dataQuery = new SimpleQueryDTO();
		dataQuery.setSize(1);

		dataQuery.addTerm("atlas", true);

		Layer layerAtlas = (Layer) JsonToBeanTestUtil.getBean("/data/model/layer/layer.json", Layer.class);
		layerAtlas.setId("layer-1234");
		layerAtlas.setName("atlas");
		layerAtlas.getJoinIndex().setParent(PARENT_ID);
		repository.save(layerAtlas, PARENT_ID);

		// @formatter:off
		
		this.mockMvc
				.perform(post(LAYER_PATH + "/_search").content(mapper.writeValueAsString(dataQuery))
					.contentType(MediaType.APPLICATION_JSON).accept(MediaType.APPLICATION_JSON))
				.andExpect(status().isOk())
				.andExpect(jsonPath("$.success", is(true)))
				.andExpect(jsonPath("$.body.data", notNullValue()))
				.andExpect(jsonPath("$.body.data[0]", notNullValue()))
				.andExpect(jsonPath("$.body.data.length()", is(1)));
		
		// @formatter:on

		repository.delete(layerAtlas.getId(), PARENT_ID);
	}

	@Test
	public void searchLayersQueryString_Return200_WhenSearchIsCorrect() throws Exception {