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

Añade tests de enriquecimiento al editar

parent 5feb0b8d
Loading
Loading
Loading
Loading
+52 −4
Original line number Diff line number Diff line
@@ -76,12 +76,14 @@ import es.redmic.atlaslib.events.layer.refresh.RefreshLayerCancelledEvent;
import es.redmic.atlaslib.events.layer.refresh.RefreshLayerConfirmedEvent;
import es.redmic.atlaslib.events.layer.refresh.RefreshLayerEvent;
import es.redmic.atlaslib.events.layer.refresh.RefreshLayerFailedEvent;
import es.redmic.atlaslib.events.layer.update.EnrichUpdateLayerEvent;
import es.redmic.atlaslib.events.layer.update.LayerUpdatedEvent;
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.atlaslib.events.themeinspire.update.ThemeInspireUpdatedEvent;
import es.redmic.brokerlib.avro.common.Event;
import es.redmic.brokerlib.listener.SendListener;
import es.redmic.exception.data.DeleteItemException;
@@ -183,12 +185,13 @@ public class LayerCommandHandlerTest extends KafkaBaseIntegrationTest {
		// Envía create para meterlo en el stream
		CreateLayerEvent createLayerEvent = LayerDataUtil.getCreateEvent(code + "1");
		kafkaTemplate.send(layer_topic, createLayerEvent.getAggregateId(), createLayerEvent);
		Event request = (Event) blockingQueue.poll(60, TimeUnit.SECONDS);
		assertNotNull(request);

		// Envía confirmed y espera un evento de created con el layer original dentro
		CreateLayerConfirmedEvent event = LayerDataUtil.getCreateLayerConfirmedEvent(code + "1");

		kafkaTemplate.send(layer_topic, event.getAggregateId(), event);
		Event confirm = (Event) blockingQueue.poll(120, TimeUnit.SECONDS);
		Event confirm = (Event) blockingQueue.poll(60, TimeUnit.SECONDS);

		assertNotNull(confirm);
		assertEquals(LayerEventTypes.CREATED, confirm.getType());
@@ -197,6 +200,43 @@ public class LayerCommandHandlerTest extends KafkaBaseIntegrationTest {
				((LayerCreatedEvent) confirm).getLayer().toString(), false);
	}

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

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

		String code = "cc";

		// Envía themeInspireUpdatedEvent
		ThemeInspireUpdatedEvent themeInspireUpdatedEvent = ThemeInspireDataUtil.getThemeInspireUpdatedEvent(code);
		kafkaTemplate.send(theme_inspire_topic, themeInspireUpdatedEvent.getAggregateId(), themeInspireUpdatedEvent);

		Thread.sleep(4000);

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

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

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

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

		assertEquals(themeInspireUpdatedEvent.getThemeInspire(),
				((UpdateLayerEvent) confirm).getLayer().getThemeInspire());
	}

	// Envía un evento de confirmación de modificación y debe provocar un evento
	// Updated con el item dentro
	@Test
@@ -208,6 +248,8 @@ public class LayerCommandHandlerTest extends KafkaBaseIntegrationTest {
		// Envía update para meterlo en el stream
		UpdateLayerEvent updateLayerEvent = LayerDataUtil.getUpdateEvent(code + "2");
		kafkaTemplate.send(layer_topic, updateLayerEvent.getAggregateId(), updateLayerEvent);
		Event request = (Event) blockingQueue.poll(60, TimeUnit.SECONDS);
		assertNotNull(request);

		// Envía confirmed y espera un evento de updated con el layer original dentro
		UpdateLayerConfirmedEvent event = LayerDataUtil.getUpdateLayerConfirmedEvent(code + "2");
@@ -435,9 +477,9 @@ public class LayerCommandHandlerTest extends KafkaBaseIntegrationTest {
	}

	@KafkaHandler
	public void createLayerEvent(CreateLayerEvent createdLayerEvent) {
	public void createLayerEvent(CreateLayerEvent createLayerEvent) {

		blockingQueue.offer(createdLayerEvent);
		blockingQueue.offer(createLayerEvent);
	}

	@KafkaHandler
@@ -452,6 +494,12 @@ public class LayerCommandHandlerTest extends KafkaBaseIntegrationTest {
		blockingQueue.offer(createLayerCancelledEvent);
	}

	@KafkaHandler
	public void updateLayerEvent(UpdateLayerEvent updateLayerEvent) {

		blockingQueue.offer(updateLayerEvent);
	}

	@KafkaHandler
	public void layerUpdatedEvent(LayerUpdatedEvent layerUpdatedEvent) {

+10 −0
Original line number Diff line number Diff line
@@ -61,6 +61,7 @@ import es.redmic.atlaslib.events.layer.refresh.RefreshLayerCancelledEvent;
import es.redmic.atlaslib.events.layer.refresh.RefreshLayerConfirmedEvent;
import es.redmic.atlaslib.events.layer.refresh.RefreshLayerEvent;
import es.redmic.atlaslib.events.layer.refresh.RefreshLayerFailedEvent;
import es.redmic.atlaslib.events.layer.update.EnrichUpdateLayerEvent;
import es.redmic.atlaslib.events.layer.update.LayerUpdatedEvent;
import es.redmic.atlaslib.events.layer.update.UpdateLayerConfirmedEvent;
import es.redmic.atlaslib.events.layer.update.UpdateLayerEvent;
@@ -147,6 +148,15 @@ public abstract class LayerDataUtil {
		return event;
	}

	public static EnrichUpdateLayerEvent getEnrichUpdateLayerEvent(String code) {

		EnrichUpdateLayerEvent enrichUpdateLayerEvent = new EnrichUpdateLayerEvent().buildFrom(getUpdateEvent(code));

		enrichUpdateLayerEvent.setLayer(getLayer(code));

		return enrichUpdateLayerEvent;
	}

	public static UpdateLayerConfirmedEvent getUpdateLayerConfirmedEvent(String code) {

		return new UpdateLayerConfirmedEvent().buildFrom(getUpdateEvent(code));
+48 −1
Original line number Diff line number Diff line
@@ -241,7 +241,7 @@ public class LayerRestTest extends DocumentationCommandBaseTest {
	}

	@Test
	public void updateLayer_SendUpdateLayerEvent_IfCommandWasSuccess() throws Exception {
	public void updateLayer_SendUpdateLayerEvent_IfThemeInspireIsNull() throws Exception {

		when(layerStateStore.getLayer(anyString())).thenReturn(LayerDataUtil.getLayerCreatedEvent(CODE));

@@ -252,6 +252,53 @@ public class LayerRestTest extends DocumentationCommandBaseTest {
		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(put(LAYER_PATH + "/" + id)
						.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)));
		
		// @formatter:on

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

		UpdateLayerEvent expectedEvent = LayerDataUtil.getUpdateEvent(CODE);
		assertNotNull(event);
		assertEquals(event.getType(), expectedEvent.getType());
		assertEquals(event.getVersion(), expectedEvent.getVersion());
		assertEquals(event.getLayer().getName(), originalName);
		assertEquals(event.getAggregateId(), expectedEvent.getAggregateId());
	}

	@Test
	public void updateLayer_SendUpdateLayerEvent_IfThemeInspireIsNotNullAndDataIsEnriched() throws Exception {

		when(layerStateStore.getLayer(anyString())).thenReturn(LayerDataUtil.getLayerCreatedEvent(CODE));

		String originalName = "batimetriaGlobal";

		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);

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

		// @formatter:off
		
		String id = LayerDataUtil.PREFIX + CODE;
+24 −3
Original line number Diff line number Diff line
@@ -46,7 +46,6 @@ import es.redmic.atlaslib.events.layer.LayerEventTypes;
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;
import es.redmic.commandslib.exceptions.ItemLockedException;
import es.redmic.exception.data.ItemNotFoundException;
import es.redmic.test.atlascommands.integration.layer.LayerDataUtil;
@@ -112,15 +111,16 @@ public class ProcessEventTest {
	}

	@Test
	public void processUpdateLayerCommand_ReturnLayerUpdatedEvent_IfProcessIsOk() {
	public void processUpdateLayerCommand_ReturnUpdateLayerEvent_IfThemeInspireIsNul() {

		when(layerStateStore.getLayer(any())).thenReturn(LayerDataUtil.getLayerCreatedEvent(code));

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

		UpdateLayerCommand command = new UpdateLayerCommand(layer);

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

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

	@Test
	public void processUpdateLayerCommand_ReturnEnrichUpdateLayerEvent_IfThemeInspireIsNotNul() {

		when(layerStateStore.getLayer(any())).thenReturn(LayerDataUtil.getLayerCreatedEvent(code));

		LayerDTO layer = LayerDataUtil.getLayer(code);

		UpdateLayerCommand command = new UpdateLayerCommand(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_UPDATE);
		assertTrue(evt.getVersion().equals(2));
	}

	// Editar un elemento ya borrado
	@Test(expected = ItemNotFoundException.class)
	public void processUpdateLayerCommand_ThrowItemNotFoundException_IfItemIsDeleted() {