Loading vessels-commands/src/test/java/es/redmic/test/vesselscommands/integration/vessel/VesselCommandHandlerTest.java +76 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading @@ -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; Loading @@ -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) Loading @@ -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; Loading Loading @@ -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 { Loading Loading @@ -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) Loading Loading @@ -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) { Loading vessels-commands/src/test/java/es/redmic/test/vesselscommands/integration/vessel/VesselDataUtil.java +6 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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)); Loading vessels-commands/src/test/java/es/redmic/test/vesselscommands/unit/aggregate/vessel/ProcessEventTest.java +3 −3 Original line number Diff line number Diff line Loading @@ -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 { Loading Loading @@ -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)); } Loading Loading
vessels-commands/src/test/java/es/redmic/test/vesselscommands/integration/vessel/VesselCommandHandlerTest.java +76 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading @@ -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; Loading @@ -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) Loading @@ -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; Loading Loading @@ -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 { Loading Loading @@ -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) Loading Loading @@ -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) { Loading
vessels-commands/src/test/java/es/redmic/test/vesselscommands/integration/vessel/VesselDataUtil.java +6 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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)); Loading
vessels-commands/src/test/java/es/redmic/test/vesselscommands/unit/aggregate/vessel/ProcessEventTest.java +3 −3 Original line number Diff line number Diff line Loading @@ -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 { Loading Loading @@ -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)); } Loading