Commit 50eb6c1f authored by Noel Alonso's avatar Noel Alonso
Browse files

Arregla/añade nuevos tests para checkeo de borrado

parent 9854c8f6
Loading
Loading
Loading
Loading
+76 −0
Original line number Diff line number Diff line
@@ -13,6 +13,7 @@ import javax.annotation.PostConstruct;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.joda.time.DateTime;
import org.junit.Before;
import org.junit.ClassRule;
import org.junit.Test;
@@ -38,6 +39,7 @@ import es.redmic.exception.data.DeleteItemException;
import es.redmic.exception.data.ItemAlreadyExistException;
import es.redmic.exception.data.ItemNotFoundException;
import es.redmic.test.vesselscommands.integration.KafkaEmbeddedConfig;
import es.redmic.test.vesselscommands.integration.vesseltracking.VesselTrackingDataUtil;
import es.redmic.test.vesselscommands.integration.vesseltype.VesselTypeDataUtil;
import es.redmic.testutils.kafka.KafkaBaseIntegrationTest;
import es.redmic.vesselscommands.VesselsCommandsApplication;
@@ -50,7 +52,10 @@ import es.redmic.vesselslib.events.vessel.create.CreateVesselEvent;
import es.redmic.vesselslib.events.vessel.create.CreateVesselFailedEvent;
import es.redmic.vesselslib.events.vessel.create.EnrichCreateVesselEvent;
import es.redmic.vesselslib.events.vessel.create.VesselCreatedEvent;
import es.redmic.vesselslib.events.vessel.delete.CheckDeleteVesselEvent;
import es.redmic.vesselslib.events.vessel.delete.DeleteVesselCancelledEvent;
import es.redmic.vesselslib.events.vessel.delete.DeleteVesselCheckFailedEvent;
import es.redmic.vesselslib.events.vessel.delete.DeleteVesselCheckedEvent;
import es.redmic.vesselslib.events.vessel.delete.DeleteVesselConfirmedEvent;
import es.redmic.vesselslib.events.vessel.delete.DeleteVesselFailedEvent;
import es.redmic.vesselslib.events.vessel.delete.VesselDeletedEvent;
@@ -60,6 +65,7 @@ import es.redmic.vesselslib.events.vessel.update.UpdateVesselConfirmedEvent;
import es.redmic.vesselslib.events.vessel.update.UpdateVesselEvent;
import es.redmic.vesselslib.events.vessel.update.UpdateVesselFailedEvent;
import es.redmic.vesselslib.events.vessel.update.VesselUpdatedEvent;
import es.redmic.vesselslib.events.vesseltracking.create.VesselTrackingCreatedEvent;
import es.redmic.vesselslib.events.vesseltype.create.VesselTypeCreatedEvent;

@RunWith(SpringJUnit4ClassRunner.class)
@@ -85,6 +91,9 @@ public class VesselCommandHandlerTest extends KafkaBaseIntegrationTest {
	@Value("${broker.topic.vessel-type}")
	private String vessel_type_topic;

	@Value("${broker.topic.vessel-tracking}")
	private String vessel_tracking_topic;

	@Autowired
	private KafkaTemplate<String, Event> kafkaTemplate;

@@ -219,6 +228,27 @@ public class VesselCommandHandlerTest extends KafkaBaseIntegrationTest {
		assertEquals(updateVesselEvent.getVessel(), ((VesselUpdatedEvent) confirm).getVessel());
	}

	// Envía un evento de comprobación de que el elemento puede ser borrado y debe
	// provocar un evento DeleteVesselCheckedEvent ya que no está referenciado
	@Test
	public void checkDeleteVesselEvent_SendDeleteVesselCheckedEvent_IfReceivesSuccess() throws InterruptedException {

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

		CheckDeleteVesselEvent event = VesselDataUtil.getCheckDeleteVesselEvent(mmsi + 33);

		kafkaTemplate.send(vessel_topic, event.getAggregateId(), event);

		Event confirm = (Event) blockingQueue.poll(60, TimeUnit.SECONDS);

		assertNotNull(confirm);
		assertEquals(VesselEventTypes.DELETE_CHECKED, confirm.getType());
		assertEquals(event.getAggregateId(), confirm.getAggregateId());
		assertEquals(event.getUserId(), confirm.getUserId());
		assertEquals(event.getSessionId(), confirm.getSessionId());
		assertEquals(event.getVersion(), confirm.getVersion());
	}

	// Envía un evento de confirmación de borrado y debe provocar un evento Deleted
	@Test
	public void deleteVesselConfirmedEvent_SendVesselDeletedEvent_IfReceivesSuccess() throws InterruptedException {
@@ -306,6 +336,40 @@ public class VesselCommandHandlerTest extends KafkaBaseIntegrationTest {
		assertEquals(vesselUpdatedEvent.getVessel(), ((UpdateVesselCancelledEvent) confirm).getVessel());
	}

	// Envía un evento de comprobación de que el elemento puede ser borrado y debe
	// provocar un evento DeleteVesselCheckFailedEvent ya que está referenciado
	@Test
	public void checkDeleteVesselEvent_SendDeleteVesselCheckFailedEvent_IfVesselIsReference()
			throws InterruptedException {

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

		String tstamp = String.valueOf(new DateTime().getMillis());

		CheckDeleteVesselEvent event = VesselDataUtil.getCheckDeleteVesselEvent(mmsi + 55);

		VesselTrackingCreatedEvent vesselTrackingWithVesselEvent = VesselTrackingDataUtil
				.getVesselTrackingCreatedEvent(1, tstamp);
		vesselTrackingWithVesselEvent.getVesselTracking().getProperties()
				.setVessel(VesselDataUtil.getVessel(mmsi + 55));

		kafkaTemplate.send(vessel_tracking_topic, vesselTrackingWithVesselEvent.getAggregateId(),
				vesselTrackingWithVesselEvent);

		Thread.sleep(4000);

		kafkaTemplate.send(vessel_topic, event.getAggregateId(), event);

		Event confirm = (Event) blockingQueue.poll(60, TimeUnit.SECONDS);

		assertNotNull(confirm);
		assertEquals(VesselEventTypes.DELETE_CHECK_FAILED, confirm.getType());
		assertEquals(event.getAggregateId(), confirm.getAggregateId());
		assertEquals(event.getUserId(), confirm.getUserId());
		assertEquals(event.getSessionId(), confirm.getSessionId());
		assertEquals(event.getVersion(), confirm.getVersion());
	}

	// Envía un evento de error de borrado y debe provocar un evento Cancelled con
	// el item dentro
	@Test(expected = DeleteItemException.class)
@@ -392,6 +456,18 @@ public class VesselCommandHandlerTest extends KafkaBaseIntegrationTest {
		blockingQueue.offer(deleteVesselCancelledEvent);
	}

	@KafkaHandler
	public void deleteVesselCheckedEvent(DeleteVesselCheckedEvent deleteVesselCheckedEvent) {

		blockingQueue.offer(deleteVesselCheckedEvent);
	}

	@KafkaHandler
	public void deleteVesselCheckFailedEvent(DeleteVesselCheckFailedEvent deleteVesselCheckFailedEvent) {

		blockingQueue.offer(deleteVesselCheckFailedEvent);
	}

	@KafkaHandler(isDefault = true)
	public void defaultEvent(Object def) {

+6 −0
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@ import es.redmic.vesselslib.events.vessel.create.CreateVesselEvent;
import es.redmic.vesselslib.events.vessel.create.CreateVesselFailedEvent;
import es.redmic.vesselslib.events.vessel.create.EnrichCreateVesselEvent;
import es.redmic.vesselslib.events.vessel.create.VesselCreatedEvent;
import es.redmic.vesselslib.events.vessel.delete.CheckDeleteVesselEvent;
import es.redmic.vesselslib.events.vessel.delete.DeleteVesselConfirmedEvent;
import es.redmic.vesselslib.events.vessel.delete.DeleteVesselEvent;
import es.redmic.vesselslib.events.vessel.delete.DeleteVesselFailedEvent;
@@ -143,6 +144,11 @@ public abstract class VesselDataUtil {
		return event;
	}

	public static CheckDeleteVesselEvent getCheckDeleteVesselEvent(Integer mmsi) {

		return new CheckDeleteVesselEvent().buildFrom(getDeleteEvent(mmsi));
	}

	public static DeleteVesselConfirmedEvent getDeleteVesselConfirmedEvent(Integer mmsi) {

		return new DeleteVesselConfirmedEvent().buildFrom(getDeleteEvent(mmsi));
+3 −3
Original line number Diff line number Diff line
@@ -18,7 +18,7 @@ import es.redmic.vesselscommands.commands.vessel.UpdateVesselCommand;
import es.redmic.vesselslib.dto.vessel.VesselDTO;
import es.redmic.vesselslib.events.vessel.VesselEventTypes;
import es.redmic.vesselslib.events.vessel.common.VesselEvent;
import es.redmic.vesselslib.events.vessel.delete.DeleteVesselEvent;
import es.redmic.vesselslib.events.vessel.delete.CheckDeleteVesselEvent;

@RunWith(MockitoJUnitRunner.class)
public class ProcessEventTest extends AggregateBaseTest {
@@ -96,13 +96,13 @@ public class ProcessEventTest extends AggregateBaseTest {

		DeleteVesselCommand command = new DeleteVesselCommand(vessel.getId());

		DeleteVesselEvent evt = agg.process(command);
		CheckDeleteVesselEvent evt = agg.process(command);

		assertNotNull(evt);
		assertNotNull(evt.getDate());
		assertNotNull(evt.getId());
		assertEquals(evt.getAggregateId(), vessel.getId());
		assertEquals(evt.getType(), VesselEventTypes.DELETE);
		assertEquals(evt.getType(), VesselEventTypes.CHECK_DELETE);
		assertTrue(evt.getVersion().equals(3));
	}