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

Retorna resultados sin valores nulos en búsquedas

Solo para búsquedas de tipo get
Añade test de ese tipo de búsqueda en activity
parent 87166e8f
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@ import es.redmic.es.data.common.service.RDataESService;
import es.redmic.exception.databinding.DTONotValidException;
import es.redmic.models.es.common.dto.BaseDTO;
import es.redmic.models.es.common.dto.ElasticSearchDTO;
import es.redmic.models.es.common.dto.ElasticSearchNotNullDTO;
import es.redmic.models.es.common.dto.JSONCollectionDTO;
import es.redmic.models.es.common.dto.SuperDTO;
import es.redmic.models.es.common.model.BaseES;
@@ -63,8 +64,10 @@ public abstract class RController<TModel extends BaseES<?>, TDTO extends BaseDTO

		SimpleQueryDTO queryDTO = ESService.createSimpleQueryDTOFromTextQueryParams(fields, text, from, size, returnFields);
		processQuery((TQueryDTO) queryDTO);

		JSONCollectionDTO result = ESService.find(convertToDataQuery((TQueryDTO) queryDTO));
		return new ElasticSearchDTO(result, result.getTotal());

		return new ElasticSearchNotNullDTO(result, result.getTotal());
	}

	@PostMapping(value = "/_search")
+53 −0
Original line number Diff line number Diff line
package es.redmic.test.integration.administrative;

import static org.junit.Assert.assertEquals;

/*-
 * #%L
 * API
@@ -26,8 +28,10 @@ import static org.springframework.restdocs.operation.preprocess.Preprocessors.pr
import static org.springframework.restdocs.operation.preprocess.Preprocessors.preprocessResponse;
import static org.springframework.restdocs.operation.preprocess.Preprocessors.prettyPrint;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.delete;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;

import java.util.Arrays;
import java.util.HashMap;
@@ -48,7 +52,13 @@ import org.springframework.test.web.servlet.setup.MockMvcBuilders;

import com.fasterxml.jackson.databind.ObjectMapper;

import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.CoreMatchers.notNullValue;

import es.redmic.ApiApplication;
import es.redmic.es.administrative.repository.ActivityESRepository;
import es.redmic.models.es.administrative.model.Activity;
import es.redmic.models.es.common.model.DomainES;
import es.redmic.models.es.common.query.dto.DataQueryDTO;
import es.redmic.test.integration.ApiApplicationTest;
import es.redmic.test.integration.common.IntegrationTestBase;
@@ -65,6 +75,9 @@ public class ActivityControllerTest extends IntegrationTestBase {
	@Autowired
	ObjectMapper mapper;

	@Autowired
	ActivityESRepository repository;

	private RestDocumentationResultHandler document;

	private final String ACTIVITIES_URL_BASE = "/activities";
@@ -81,6 +94,24 @@ public class ActivityControllerTest extends IntegrationTestBase {
		mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).addFilters(springSecurityFilterChain)
				.apply(documentationConfiguration(this.restDocumentation)).alwaysDo(this.document).build();

		Activity modelToIndex = new Activity();
		modelToIndex.setId(3L);
		modelToIndex.setName("name");

		DomainES accessibility = new DomainES();
		accessibility.setId(1L);
		accessibility.setName("Libre");
		accessibility.setName_en("Free");
		modelToIndex.setAccessibility(accessibility);

		DomainES rank = new DomainES();
		rank.setId(3L);
		rank.setName("Actividad");
		rank.setName_en("Activity");
		modelToIndex.setRank(rank);

		modelToIndex = repository.save(modelToIndex);

		// @formatter:on
	}

@@ -128,4 +159,26 @@ public class ActivityControllerTest extends IntegrationTestBase {

		// @formatter:on
	}

	@Test
	public void getActivities_Return200_WhenSearchIsCorrect() throws Exception {

		// @formatter:off

		this.mockMvc
			.perform(get(ACTIVITIES_URL_BASE)
				.param("from", "0")
				.param("size", "10")
				.param("returnFields", "id")
				.param("returnFields", "name")
					.contentType(MediaType.APPLICATION_JSON).accept(MediaType.APPLICATION_JSON))
			.andExpect(status().isOk())
			.andExpect(jsonPath("$.body.data", notNullValue()))
			.andExpect(jsonPath("$.body.data[0]", notNullValue()))
			.andExpect(jsonPath("$.body.data[0].id", is(3)))
			.andExpect(jsonPath("$.body.data[0].name", is("name")))
			.andExpect(jsonPath("$.body.data.length()", is(1)));

		// @formatter:on
	}
}