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

Añade tests para comprobar enrequecimiento

parent a9a83a4e
Loading
Loading
Loading
Loading
+1 −3
Original line number Diff line number Diff line
@@ -31,12 +31,10 @@ public class KafkaEmbeddedConfig {
 
	public final static String[] TOPICS_NAME = new String[] { 
		"theme-inspire",
		"layer",
		"theme-inspire-updated",
		"layer-updated",
		"theme-inspire-snapshot",
		"layer",
		"layer-snapshot",
		"layer-agg-by-theme-inspire",
		"category",
		"category-snapshot"
	};
+49 −0
Original line number Diff line number Diff line
@@ -62,6 +62,7 @@ import es.redmic.atlaslib.events.layer.create.CreateLayerCancelledEvent;
import es.redmic.atlaslib.events.layer.create.CreateLayerConfirmedEvent;
import es.redmic.atlaslib.events.layer.create.CreateLayerEvent;
import es.redmic.atlaslib.events.layer.create.CreateLayerFailedEvent;
import es.redmic.atlaslib.events.layer.create.EnrichCreateLayerEvent;
import es.redmic.atlaslib.events.layer.create.LayerCreatedEvent;
import es.redmic.atlaslib.events.layer.delete.CheckDeleteLayerEvent;
import es.redmic.atlaslib.events.layer.delete.DeleteLayerCancelledEvent;
@@ -80,12 +81,14 @@ import es.redmic.atlaslib.events.layer.update.UpdateLayerCancelledEvent;
import es.redmic.atlaslib.events.layer.update.UpdateLayerConfirmedEvent;
import es.redmic.atlaslib.events.layer.update.UpdateLayerEvent;
import es.redmic.atlaslib.events.layer.update.UpdateLayerFailedEvent;
import es.redmic.atlaslib.events.themeinspire.create.ThemeInspireCreatedEvent;
import es.redmic.brokerlib.avro.common.Event;
import es.redmic.brokerlib.listener.SendListener;
import es.redmic.exception.data.DeleteItemException;
import es.redmic.exception.data.ItemAlreadyExistException;
import es.redmic.exception.data.ItemNotFoundException;
import es.redmic.test.atlascommands.integration.KafkaEmbeddedConfig;
import es.redmic.test.atlascommands.integration.themeinspire.ThemeInspireDataUtil;
import es.redmic.testutils.kafka.KafkaBaseIntegrationTest;

@RunWith(SpringJUnit4ClassRunner.class)
@@ -107,6 +110,9 @@ public class LayerCommandHandlerTest extends KafkaBaseIntegrationTest {
	@Value("${broker.topic.layer}")
	private String layer_topic;

	@Value("${broker.topic.theme-inspire}")
	private String theme_inspire_topic;

	@Autowired
	private KafkaTemplate<String, Event> kafkaTemplate;

@@ -130,6 +136,43 @@ public class LayerCommandHandlerTest extends KafkaBaseIntegrationTest {

	// Success cases

	// Envía un evento de enriquecimiento de creación y debe provocar un evento
	// Create con el item dentro
	@Test
	public void enrichCreateLayerEvent_SendCreateLayerEvent_IfReceivesSuccess() throws InterruptedException {

		logger.debug("----> createLayerEvent");

		String code = "cc";

		// Envía themeInspireCreatedEvent
		ThemeInspireCreatedEvent themeInspireCreatedEvent = ThemeInspireDataUtil.getThemeInspireCreatedEvent(code);
		kafkaTemplate.send(theme_inspire_topic, themeInspireCreatedEvent.getAggregateId(), themeInspireCreatedEvent);

		Thread.sleep(4000);

		// Envía enrichCreateLayer con id del themeInspire igual al enviado

		EnrichCreateLayerEvent enrichCreateLayerEvent = LayerDataUtil
				.getEnrichCreateLayerEvent("layer-" + UUID.randomUUID().toString());
		enrichCreateLayerEvent.setSessionId(UUID.randomUUID().toString());
		enrichCreateLayerEvent.getLayer()
				.setThemeInspire(ThemeInspireDataUtil.getThemeInspireCreatedEvent(code).getThemeInspire());
		enrichCreateLayerEvent.getLayer().getThemeInspire().setName(null);
		enrichCreateLayerEvent.getLayer().getThemeInspire().setName_en(null);
		enrichCreateLayerEvent.getLayer().getThemeInspire().setCode(null);
		kafkaTemplate.send(layer_topic, enrichCreateLayerEvent.getAggregateId(), enrichCreateLayerEvent);

		// Comprueba que recibe createLayerEvent con themeInspire enriquecido
		Event confirm = (Event) blockingQueue.poll(60, TimeUnit.SECONDS);

		assertNotNull(confirm);
		assertEquals(LayerEventTypes.CREATE, confirm.getType());

		assertEquals(themeInspireCreatedEvent.getThemeInspire(),
				((CreateLayerEvent) confirm).getLayer().getThemeInspire());
	}

	// Envía un evento de confirmación de creación y debe provocar un evento Created
	// con el item dentro
	@Test
@@ -391,6 +434,12 @@ public class LayerCommandHandlerTest extends KafkaBaseIntegrationTest {
		assertEquals(layerUpdateEvent.getLayer(), ((DeleteLayerCancelledEvent) confirm).getLayer());
	}

	@KafkaHandler
	public void createLayerEvent(CreateLayerEvent createdLayerEvent) {

		blockingQueue.offer(createdLayerEvent);
	}

	@KafkaHandler
	public void layerCreatedEvent(LayerCreatedEvent layerCreatedEvent) {

+10 −0
Original line number Diff line number Diff line
@@ -49,6 +49,7 @@ import es.redmic.atlaslib.events.layer.LayerEventTypes;
import es.redmic.atlaslib.events.layer.create.CreateLayerConfirmedEvent;
import es.redmic.atlaslib.events.layer.create.CreateLayerEvent;
import es.redmic.atlaslib.events.layer.create.CreateLayerFailedEvent;
import es.redmic.atlaslib.events.layer.create.EnrichCreateLayerEvent;
import es.redmic.atlaslib.events.layer.create.LayerCreatedEvent;
import es.redmic.atlaslib.events.layer.delete.CheckDeleteLayerEvent;
import es.redmic.atlaslib.events.layer.delete.DeleteLayerConfirmedEvent;
@@ -94,6 +95,15 @@ public abstract class LayerDataUtil {
		return event;
	}

	public static EnrichCreateLayerEvent getEnrichCreateLayerEvent(String code) {

		EnrichCreateLayerEvent enrichCreateLayerEvent = new EnrichCreateLayerEvent().buildFrom(getCreateEvent(code));

		enrichCreateLayerEvent.setLayer(getLayer(code));

		return enrichCreateLayerEvent;
	}

	public static CreateLayerConfirmedEvent getCreateLayerConfirmedEvent(String code) {

		return new CreateLayerConfirmedEvent().buildFrom(getCreateEvent(code));
+57 −7
Original line number Diff line number Diff line
@@ -82,9 +82,11 @@ import es.redmic.atlaslib.events.layer.refresh.RefreshLayerConfirmedEvent;
import es.redmic.atlaslib.events.layer.refresh.RefreshLayerEvent;
import es.redmic.atlaslib.events.layer.update.UpdateLayerConfirmedEvent;
import es.redmic.atlaslib.events.layer.update.UpdateLayerEvent;
import es.redmic.atlaslib.events.themeinspire.create.ThemeInspireCreatedEvent;
import es.redmic.brokerlib.avro.common.Event;
import es.redmic.brokerlib.listener.SendListener;
import es.redmic.test.atlascommands.integration.KafkaEmbeddedConfig;
import es.redmic.test.atlascommands.integration.themeinspire.ThemeInspireDataUtil;
import es.redmic.testutils.documentation.DocumentationCommandBaseTest;
import es.redmic.testutils.utils.JsonToBeanTestUtil;

@@ -104,7 +106,7 @@ public class LayerRestTest extends DocumentationCommandBaseTest {
	// @formatter:off
	
	private final String HOST = "redmic.es/api/atlas/commands",
			CATEGORY_PATH = "/layer";
			LAYER_PATH = "/layer";
	
	// @formatter:on

@@ -121,6 +123,9 @@ public class LayerRestTest extends DocumentationCommandBaseTest {
	@Value("${broker.topic.layer}")
	private String layer_topic;

	@Value("${broker.topic.theme-inspire}")
	private String theme_inspire_topic;

	@PostConstruct
	public void CreateLayerFromRestTestPostConstruct() throws Exception {

@@ -154,7 +159,52 @@ public class LayerRestTest extends DocumentationCommandBaseTest {
	}

	@Test
	public void createLayer_SendCreateLayerEvent_IfCommandWasSuccess() throws Exception {
	public void createLayer_SendCreateLayerEvent_IfThemeInspireIsNull() throws Exception {

		LayerInfoDTO layerInfoDTO = LayerDataUtil.getLayerInfo(CODE);

		String originalName = "batimetriaGlobal";

		layerInfoDTO.setUrlSource(new File("src/test/resources/data/capabilities/wms.xml").toURI().toString());
		layerInfoDTO.setName(originalName);

		layerInfoDTO.setThemeInspire(null);

		// @formatter:off
		
		String id = LayerDataUtil.PREFIX + CODE;
		
		this.mockMvc
				.perform(post(LAYER_PATH)
						.header("Authorization", "Bearer " + getTokenOAGUser())
						.content(LayerDataUtil.getLayerInfoToSave(layerInfoDTO))
						.contentType(MediaType.APPLICATION_JSON)
						.accept(MediaType.APPLICATION_JSON))
				.andExpect(status().isOk())
				.andExpect(jsonPath("$.success", is(true)))
				.andExpect(jsonPath("$.body", notNullValue()))
				.andExpect(jsonPath("$.body.id", is(id)))
				.andExpect(jsonPath("$.body.name", is(layerInfoDTO.getName())));
		
		// @formatter:on

		CreateLayerEvent event = (CreateLayerEvent) blockingQueue.poll(50, TimeUnit.SECONDS);

		CreateLayerEvent expectedEvent = LayerDataUtil.getCreateEvent(CODE);
		assertNotNull(event);
		assertEquals(event.getType(), expectedEvent.getType());
		assertEquals(event.getVersion(), expectedEvent.getVersion());
		assertEquals(event.getLayer().getName(), originalName);
	}

	@Test
	public void createLayer_SendCreateLayerEvent_IfThemeInspireIsNotNullAndDataIsEnriched() throws Exception {

		ThemeInspireCreatedEvent themeInspireCreatedEvent = ThemeInspireDataUtil.getThemeInspireCreatedEvent("cc");

		ListenableFuture<SendResult<String, Event>> future = kafkaTemplate.send(theme_inspire_topic,
				themeInspireCreatedEvent.getAggregateId(), themeInspireCreatedEvent);
		future.addCallback(new SendListener());

		LayerInfoDTO layerInfoDTO = LayerDataUtil.getLayerInfo(CODE);

@@ -168,7 +218,7 @@ public class LayerRestTest extends DocumentationCommandBaseTest {
		String id = LayerDataUtil.PREFIX + CODE;
		
		this.mockMvc
				.perform(post(CATEGORY_PATH)
				.perform(post(LAYER_PATH)
						.header("Authorization", "Bearer " + getTokenOAGUser())
						.content(LayerDataUtil.getLayerInfoToSave(layerInfoDTO))
						.contentType(MediaType.APPLICATION_JSON)
@@ -207,7 +257,7 @@ public class LayerRestTest extends DocumentationCommandBaseTest {
		String id = LayerDataUtil.PREFIX + CODE;
		
		this.mockMvc
				.perform(put(CATEGORY_PATH + "/" + id)
				.perform(put(LAYER_PATH + "/" + id)
						.header("Authorization", "Bearer " + getTokenOAGUser())
						.content(LayerDataUtil.getLayerInfoToSave(layerInfoDTO))
						.contentType(MediaType.APPLICATION_JSON)
@@ -247,7 +297,7 @@ public class LayerRestTest extends DocumentationCommandBaseTest {
		String id = source.getAggregateId();
		
		this.mockMvc
				.perform(put(CATEGORY_PATH + "/refresh/" + id)
				.perform(put(LAYER_PATH + "/refresh/" + id)
						.header("Authorization", "Bearer " + getTokenOAGUser())
						.content(mapper.writeValueAsString(request))
						.contentType(MediaType.APPLICATION_JSON)
@@ -279,7 +329,7 @@ public class LayerRestTest extends DocumentationCommandBaseTest {
		String id = LayerDataUtil.PREFIX + CODE;
		
		this.mockMvc
				.perform(delete(CATEGORY_PATH + "/" + id)
				.perform(delete(LAYER_PATH + "/" + id)
						.header("Authorization", "Bearer " + getTokenOAGUser())
						.accept(MediaType.APPLICATION_JSON))
				.andExpect(status().isOk())
@@ -305,7 +355,7 @@ public class LayerRestTest extends DocumentationCommandBaseTest {

		// @formatter:off
		
		this.mockMvc.perform(get(CATEGORY_PATH + editSchemaPath)
		this.mockMvc.perform(get(LAYER_PATH + editSchemaPath)
				.header("Authorization", "Bearer " + getTokenOAGUser())
				.accept(MediaType.APPLICATION_JSON))
			.andExpect(status().isOk())
+25 −3
Original line number Diff line number Diff line
@@ -43,7 +43,7 @@ import es.redmic.atlascommands.statestore.LayerStateStore;
import es.redmic.atlaslib.dto.layer.LayerDTO;
import es.redmic.atlaslib.dto.layerwms.LayerWMSDTO;
import es.redmic.atlaslib.events.layer.LayerEventTypes;
import es.redmic.atlaslib.events.layer.create.CreateLayerEvent;
import es.redmic.atlaslib.events.layer.common.LayerEvent;
import es.redmic.atlaslib.events.layer.delete.CheckDeleteLayerEvent;
import es.redmic.atlaslib.events.layer.refresh.RefreshLayerEvent;
import es.redmic.atlaslib.events.layer.update.UpdateLayerEvent;
@@ -69,15 +69,16 @@ public class ProcessEventTest {
	}

	@Test
	public void processCreateLayerCommand_ReturnLayerCreatedEvent_IfProcessIsOk() {
	public void processCreateLayerCommand_ReturnCreateLayerEvent_IfThemeInspireIsNull() {

		when(layerStateStore.getLayer(any())).thenReturn(null);

		LayerDTO layer = LayerDataUtil.getLayer(code);
		layer.setThemeInspire(null);

		CreateLayerCommand command = new CreateLayerCommand(layer);

		CreateLayerEvent evt = agg.process(command);
		LayerEvent evt = agg.process(command);

		assertNotNull(evt);
		assertNotNull(evt.getDate());
@@ -89,6 +90,27 @@ public class ProcessEventTest {
		assertTrue(evt.getVersion().equals(1));
	}

	@Test
	public void processCreateLayerCommand_ReturnEnrichCreateLayerEvent_IfThemeInspireIsNotNull() {

		when(layerStateStore.getLayer(any())).thenReturn(null);

		LayerDTO layer = LayerDataUtil.getLayer(code);

		CreateLayerCommand command = new CreateLayerCommand(layer);

		LayerEvent evt = agg.process(command);

		assertNotNull(evt);
		assertNotNull(evt.getDate());
		assertNotNull(evt.getLayer());
		assertEquals(evt.getLayer(), layer);
		assertNotNull(evt.getId());
		assertEquals(evt.getAggregateId(), layer.getId());
		assertEquals(evt.getType(), LayerEventTypes.ENRICH_CREATE);
		assertTrue(evt.getVersion().equals(1));
	}

	@Test
	public void processUpdateLayerCommand_ReturnLayerUpdatedEvent_IfProcessIsOk() {