Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id C245A200BA9 for ; Sun, 23 Oct 2016 16:23:46 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id C0FDD160B00; Sun, 23 Oct 2016 14:23:46 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 52AD7160B03 for ; Sun, 23 Oct 2016 16:23:44 +0200 (CEST) Received: (qmail 4970 invoked by uid 500); 23 Oct 2016 14:23:43 -0000 Mailing-List: contact commits-help@zest.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@zest.apache.org Delivered-To: mailing list commits@zest.apache.org Received: (qmail 4913 invoked by uid 99); 23 Oct 2016 14:23:43 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 23 Oct 2016 14:23:43 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 70088E00B3; Sun, 23 Oct 2016 14:23:42 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit From: niclas@apache.org To: commits@zest.apache.org Date: Sun, 23 Oct 2016 14:23:44 -0000 Message-Id: In-Reply-To: <3f3ec355a5d74b458c2770b6459f4d60@git.apache.org> References: <3f3ec355a5d74b458c2770b6459f4d60@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [03/28] zest-java git commit: ZEST-180, ZEST-186, ZEST-187, ZEST-188 Big Identity refactoring UnitOfWorkFactory is auto added to all modules that doesn't declare one IdentityGenerator is auto-added to all modules that deosn't declare one. Removed DCI/DDD archived-at: Sun, 23 Oct 2016 14:23:47 -0000 http://git-wip-us.apache.org/repos/asf/zest-java/blob/103c59cb/samples/dci-cargo/dcisample_b/src/test/java/org/apache/zest/sample/dcicargo/sample_b/context/test/booking/BookNewCargoTest.java ---------------------------------------------------------------------- diff --git a/samples/dci-cargo/dcisample_b/src/test/java/org/apache/zest/sample/dcicargo/sample_b/context/test/booking/BookNewCargoTest.java b/samples/dci-cargo/dcisample_b/src/test/java/org/apache/zest/sample/dcicargo/sample_b/context/test/booking/BookNewCargoTest.java deleted file mode 100644 index 58c8e42..0000000 --- a/samples/dci-cargo/dcisample_b/src/test/java/org/apache/zest/sample/dcicargo/sample_b/context/test/booking/BookNewCargoTest.java +++ /dev/null @@ -1,220 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * - */ -package org.apache.zest.sample.dcicargo.sample_b.context.test.booking; - -import org.apache.zest.sample.dcicargo.sample_b.data.structure.cargo.Cargo; -import org.junit.Before; -import org.junit.Test; -import org.apache.zest.api.constraint.ConstraintViolationException; -import org.apache.zest.api.unitofwork.UnitOfWork; -import org.apache.zest.sample.dcicargo.sample_b.bootstrap.test.TestApplication; -import org.apache.zest.sample.dcicargo.sample_b.context.interaction.booking.BookNewCargo; -import org.apache.zest.sample.dcicargo.sample_b.data.aggregateroot.CargoAggregateRoot; -import org.apache.zest.sample.dcicargo.sample_b.data.factory.exception.CannotCreateCargoException; -import org.apache.zest.sample.dcicargo.sample_b.data.factory.exception.CannotCreateRouteSpecificationException; - -import static org.hamcrest.CoreMatchers.equalTo; -import static org.hamcrest.CoreMatchers.is; -import static org.junit.Assert.assertThat; -import static org.apache.zest.sample.dcicargo.sample_b.data.structure.delivery.RoutingStatus.NOT_ROUTED; -import static org.apache.zest.sample.dcicargo.sample_b.data.structure.delivery.TransportStatus.NOT_RECEIVED; -import static org.apache.zest.sample.dcicargo.sample_b.data.structure.handling.HandlingEventType.RECEIVE; - -/** - * {@link BookNewCargo} tests - * - * FIXME: Every test method call the one above to allow ordered execution, ie. tests are not indepedants ! - */ -public class BookNewCargoTest extends TestApplication -{ - - private CargoAggregateRoot CARGOS; - - @Before - public void prepareTest() - throws Exception - { - super.prepareTest(); - UnitOfWork uow = uowf.currentUnitOfWork(); - CARGOS = uow.get( CargoAggregateRoot.class, CargoAggregateRoot.CARGOS_ID ); - } - - @Test - public void deviation_2a_OriginAndDestinationSame() - throws Exception - { - try - { - thrown.expect( CannotCreateRouteSpecificationException.class, "Origin location can't be same as destination location." ); - new BookNewCargo( CARGOS, HONGKONG, HONGKONG, DAY24 ).getTrackingId(); - } - catch( Exception ex ) - { - ex.printStackTrace(); - throw ex; - } - } - - @Test - public void deviation_2b_DeadlineInThePastNotAccepted() - throws Exception - { - deviation_2a_OriginAndDestinationSame(); - thrown.expect( CannotCreateRouteSpecificationException.class, "Arrival deadline is in the past or Today." ); - new BookNewCargo( CARGOS, HONGKONG, STOCKHOLM, day( -1 ) ).getTrackingId(); - } - - @Test - public void deviation_2b_DeadlineTodayIsTooEarly() - throws Exception - { - deviation_2b_DeadlineInThePastNotAccepted(); - thrown.expect( CannotCreateRouteSpecificationException.class, "Arrival deadline is in the past or Today." ); - new BookNewCargo( CARGOS, HONGKONG, STOCKHOLM, day( 0 ) ).getTrackingId(); - } - - @Test - public void deviation_2b_DeadlineTomorrowIsOkay() - throws Exception - { - deviation_2b_DeadlineTodayIsTooEarly(); - new BookNewCargo( CARGOS, HONGKONG, STOCKHOLM, DAY1 ).getTrackingId(); - } - - @Test - public void step_2_CanCreateRouteSpecification() - throws Exception - { - deviation_2b_DeadlineTomorrowIsOkay(); - UnitOfWork uow = uowf.currentUnitOfWork(); - trackingId = new BookNewCargo( CARGOS, HONGKONG, STOCKHOLM, DAY24 ).getTrackingId(); - cargo = uow.get( Cargo.class, trackingId.id().get() ); - assertThat( cargo.routeSpecification().get().origin().get(), is( equalTo( HONGKONG ) ) ); - assertThat( cargo.routeSpecification().get().destination().get(), is( equalTo( STOCKHOLM ) ) ); - assertThat( cargo.routeSpecification().get().arrivalDeadline().get(), is( equalTo( DAY24 ) ) ); - } - - @Test - public void step_3_CanDeriveInitialDeliveryData() - throws Exception - { - step_2_CanCreateRouteSpecification(); - UnitOfWork uow = uowf.currentUnitOfWork(); - trackingId = new BookNewCargo( CARGOS, HONGKONG, STOCKHOLM, DAY24 ).getTrackingId(); - cargo = uow.get( Cargo.class, trackingId.id().get() ); - assertDelivery( null, null, null, null, - NOT_RECEIVED, notArrived, - NOT_ROUTED, directed, unknownETA, unknownLeg, - RECEIVE, HONGKONG, noSpecificDate, noVoyage ); - } - - @Test - public void deviation_4a_TrackingIdTooShort() - throws Exception - { - step_3_CanDeriveInitialDeliveryData(); - thrown.expect( ConstraintViolationException.class, "for value 'no'" ); - new BookNewCargo( CARGOS, HONGKONG, STOCKHOLM, DAY24 ).withTrackingId( "no" ); - } - - @Test - public void deviation_4a_TrackingIdNotTooShort() - throws Exception - { - deviation_4a_TrackingIdTooShort(); - UnitOfWork uow = uowf.currentUnitOfWork(); - trackingId = new BookNewCargo( CARGOS, HONGKONG, STOCKHOLM, DAY24 ).withTrackingId( "yes" ); - cargo = uow.get( Cargo.class, trackingId.id().get() ); - assertThat( cargo.trackingId().get().id().get(), is( equalTo( "yes" ) ) ); - } - - @Test - public void deviation_4a_TrackingIdTooLong() - throws Exception - { - deviation_4a_TrackingIdNotTooShort(); - thrown.expect( ConstraintViolationException.class, "for value '1234567890123456789012345678901'" ); - new BookNewCargo( CARGOS, HONGKONG, STOCKHOLM, DAY24 ).withTrackingId( "1234567890123456789012345678901" ); - } - - @Test - public void deviation_4a_TrackingIdNotTooLong() - throws Exception - { - deviation_4a_TrackingIdTooLong(); - UnitOfWork uow = uowf.currentUnitOfWork(); - trackingId = new BookNewCargo( CARGOS, HONGKONG, STOCKHOLM, DAY24 ).withTrackingId( "123456789012345678901234567890" ); - cargo = uow.get( Cargo.class, trackingId.id().get() ); - assertThat( cargo.trackingId().get().id().get(), is( equalTo( "123456789012345678901234567890" ) ) ); - } - - @Test - public void deviation_4a_TrackingIdWithWrongCharacter() - throws Exception - { - deviation_4a_TrackingIdNotTooLong(); - thrown.expect( ConstraintViolationException.class, "for value 'Göteborg1234'" ); - new BookNewCargo( CARGOS, HONGKONG, STOCKHOLM, DAY24 ).withTrackingId( "Göteborg1234" ); - } - - @Test - public void deviation_4b_TrackingIdNotUnique() - throws Exception - { - deviation_4a_TrackingIdWithWrongCharacter(); - thrown.expect( CannotCreateCargoException.class, "Tracking id 'yes' is not unique." ); - new BookNewCargo( CARGOS, HONGKONG, STOCKHOLM, DAY24 ).withTrackingId( "yes" ); - } - - @Test - public void step_4_CanAutoCreateTrackingIdFromEmptyString() - throws Exception - { - deviation_4b_TrackingIdNotUnique(); - new BookNewCargo( CARGOS, HONGKONG, STOCKHOLM, DAY24 ).withTrackingId( "" ); - } - - @Test - public void step_4_CanAutoCreateTrackingIdFromNull() - throws Exception - { - step_4_CanAutoCreateTrackingIdFromEmptyString(); - new BookNewCargo( CARGOS, HONGKONG, STOCKHOLM, DAY24 ).withTrackingId( null ); - } - - @Test - public void success_BookNewCargo() - throws Exception - { - step_4_CanAutoCreateTrackingIdFromNull(); - UnitOfWork uow = uowf.currentUnitOfWork(); - trackingId = new BookNewCargo( CARGOS, HONGKONG, STOCKHOLM, DAY24 ).withTrackingId( "ABC" ); - cargo = uow.get( Cargo.class, trackingId.id().get() ); - - assertThat( cargo.trackingId().get(), is( equalTo( trackingId ) ) ); - assertThat( cargo.trackingId().get().id().get(), is( equalTo( "ABC" ) ) ); - assertThat( cargo.origin().get(), is( equalTo( HONGKONG ) ) ); - - assertDelivery( null, null, null, null, - NOT_RECEIVED, notArrived, - NOT_ROUTED, directed, unknownETA, unknownLeg, - RECEIVE, HONGKONG, noSpecificDate, noVoyage ); - } -} http://git-wip-us.apache.org/repos/asf/zest-java/blob/103c59cb/samples/dci-cargo/dcisample_b/src/test/java/org/apache/zest/sample/dcicargo/sample_b/context/test/booking/routing/AssignCargoToRouteTest.java ---------------------------------------------------------------------- diff --git a/samples/dci-cargo/dcisample_b/src/test/java/org/apache/zest/sample/dcicargo/sample_b/context/test/booking/routing/AssignCargoToRouteTest.java b/samples/dci-cargo/dcisample_b/src/test/java/org/apache/zest/sample/dcicargo/sample_b/context/test/booking/routing/AssignCargoToRouteTest.java deleted file mode 100644 index 9c38ae6..0000000 --- a/samples/dci-cargo/dcisample_b/src/test/java/org/apache/zest/sample/dcicargo/sample_b/context/test/booking/routing/AssignCargoToRouteTest.java +++ /dev/null @@ -1,198 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * - */ -package org.apache.zest.sample.dcicargo.sample_b.context.test.booking.routing; - -import java.time.LocalDate; -import org.junit.Before; -import org.junit.Test; -import org.apache.zest.api.unitofwork.UnitOfWork; -import org.apache.zest.sample.dcicargo.sample_b.bootstrap.test.TestApplication; -import org.apache.zest.sample.dcicargo.sample_b.context.interaction.booking.exception.RoutingException; -import org.apache.zest.sample.dcicargo.sample_b.context.interaction.booking.exception.UnsatisfyingRouteException; -import org.apache.zest.sample.dcicargo.sample_b.context.interaction.booking.routing.AssignCargoToRoute; -import org.apache.zest.sample.dcicargo.sample_b.data.aggregateroot.CargoAggregateRoot; -import org.apache.zest.sample.dcicargo.sample_b.data.aggregateroot.HandlingEventAggregateRoot; -import org.apache.zest.sample.dcicargo.sample_b.data.structure.itinerary.Itinerary; - -import static org.apache.zest.sample.dcicargo.sample_b.data.structure.delivery.RoutingStatus.NOT_ROUTED; -import static org.apache.zest.sample.dcicargo.sample_b.data.structure.delivery.RoutingStatus.ROUTED; -import static org.apache.zest.sample.dcicargo.sample_b.data.structure.delivery.TransportStatus.CLAIMED; -import static org.apache.zest.sample.dcicargo.sample_b.data.structure.delivery.TransportStatus.IN_PORT; -import static org.apache.zest.sample.dcicargo.sample_b.data.structure.delivery.TransportStatus.NOT_RECEIVED; -import static org.apache.zest.sample.dcicargo.sample_b.data.structure.delivery.TransportStatus.ONBOARD_CARRIER; -import static org.apache.zest.sample.dcicargo.sample_b.data.structure.handling.HandlingEventType.CUSTOMS; -import static org.apache.zest.sample.dcicargo.sample_b.data.structure.handling.HandlingEventType.LOAD; -import static org.apache.zest.sample.dcicargo.sample_b.data.structure.handling.HandlingEventType.RECEIVE; -import static org.apache.zest.sample.dcicargo.sample_b.data.structure.handling.HandlingEventType.UNLOAD; - -/** - * {@link AssignCargoToRoute} tests - * - * FIXME: Every test method call the one above to allow ordered execution, ie. tests are not independent! - */ -public class AssignCargoToRouteTest extends TestApplication -{ - private static Itinerary itinerary2; - private HandlingEventAggregateRoot HANDLING_EVENTS; - - @Before - public void prepareTest() - throws Exception - { - super.prepareTest(); - UnitOfWork uow = uowf.currentUnitOfWork(); - HANDLING_EVENTS = uow.get( HandlingEventAggregateRoot.class, HandlingEventAggregateRoot.HANDLING_EVENTS_ID ); - CargoAggregateRoot CARGOS = uow.get( CargoAggregateRoot.class, CargoAggregateRoot.CARGOS_ID ); - - // Create new cargo - routeSpec = routeSpecFactory.build( HONGKONG, STOCKHOLM, LocalDate.now(), deadline = DAY24 ); - delivery = delivery( TODAY, NOT_RECEIVED, NOT_ROUTED, unknownLeg ); - cargo = CARGOS.createCargo( routeSpec, delivery, "ABC" ); - trackingId = cargo.trackingId().get(); - delivery = cargo.delivery().get(); - } - - @Test - public void precondition_x1_CannotReRouteClaimedCargo() - throws Exception - { - cargo.delivery().set( delivery( TODAY, CLAIMED, ROUTED, unknownLeg ) ); - thrown.expect( RoutingException.class, "Can't re-route claimed cargo" ); - new AssignCargoToRoute( cargo, itinerary ).assign(); - } - - @Test - public void deviation_1a_UnsatisfyingItinerary() - throws Exception - { - precondition_x1_CannotReRouteClaimedCargo(); - - cargo.delivery().set( delivery( TODAY, NOT_RECEIVED, NOT_ROUTED, unknownLeg ) ); - thrown.expect( UnsatisfyingRouteException.class, "Route specification was not satisfied with itinerary" ); - new AssignCargoToRoute( cargo, wrongItinerary ).assign(); - } - - @Test - public void deviation_3a_Routing_UnhandledCargo() - throws Exception - { - deviation_1a_UnsatisfyingItinerary(); - - cargo.delivery().set( delivery( TODAY, NOT_RECEIVED, NOT_ROUTED, unknownLeg ) ); - new AssignCargoToRoute( cargo, itinerary ).assign(); - assertDelivery( null, null, null, null, - NOT_RECEIVED, notArrived, - ROUTED, directed, itinerary.eta(), leg1, - RECEIVE, HONGKONG, noSpecificDate, noVoyage ); - } - - @Test - public void deviation_3b_ReRouting_OnBoard() - throws Exception - { - deviation_3a_Routing_UnhandledCargo(); - - // Load cargo - cargo.itinerary().set( itinerary ); - handlingEvent = HANDLING_EVENTS.createHandlingEvent( DAY5, DAY5, trackingId, LOAD, CHICAGO, V201 ); - cargo.delivery().set( delivery( handlingEvent, ONBOARD_CARRIER, notArrived, - ROUTED, directed, DAY23, leg2, - nextHandlingEvent( UNLOAD, NEWYORK, DAY6, V201 ) ) ); - - // New itinerary with arrival location of current carrier movement - // Earliest departure date is after carrier arrival - itinerary2 = itinerary( leg( V202, NEWYORK, STOCKHOLM, DAY8, DAY17 ) ); - - // Re-route cargo while on board a carrier - new AssignCargoToRoute( cargo, itinerary2 ).assign(); - assertDelivery( LOAD, CHICAGO, DAY5, V201, - ONBOARD_CARRIER, notArrived, - ROUTED, directed, itinerary2.eta(), leg1, - UNLOAD, NEWYORK, DAY6, V201 ); // from old itinerary! - } - - @Test - public void deviation_3c_ReRouting_InPort_Received() - throws Exception - { - deviation_3b_ReRouting_OnBoard(); - - // Receive cargo - cargo.itinerary().set( itinerary ); - handlingEvent = HANDLING_EVENTS.createHandlingEvent( DAY1, DAY1, trackingId, RECEIVE, HONGKONG, noVoyage ); - cargo.delivery().set( delivery( handlingEvent, IN_PORT, notArrived, - ROUTED, directed, unknownETA, unknownLeg, - nextHandlingEvent( LOAD, HONGKONG, DAY1, V201 ) ) ); - - // New itinerary going from current port - itinerary2 = itinerary( leg( V202, HONGKONG, STOCKHOLM, DAY3, DAY17 ) ); - - // Re-route cargo after receipt in port - new AssignCargoToRoute( cargo, itinerary2 ).assign(); - assertDelivery( RECEIVE, HONGKONG, DAY1, noVoyage, - IN_PORT, notArrived, - ROUTED, directed, itinerary2.eta(), leg1, - LOAD, HONGKONG, DAY3, V202 ); // from new itinerary! - } - - @Test - public void deviation_3c_ReRouting_InPort_Unloaded() - throws Exception - { - deviation_3c_ReRouting_InPort_Received(); - - // Unload cargo - cargo.itinerary().set( itinerary ); - handlingEvent = HANDLING_EVENTS.createHandlingEvent( DAY5, DAY5, trackingId, UNLOAD, CHICAGO, V201 ); - cargo.delivery().set( delivery( handlingEvent, IN_PORT, notArrived, - ROUTED, directed, unknownETA, leg2, - nextHandlingEvent( UNLOAD, NEWYORK, DAY6, V201 ) ) ); - - // Re-route cargo unloaded in port - itinerary2 = itinerary( leg( V202, CHICAGO, STOCKHOLM, DAY6, DAY19 ) ); - new AssignCargoToRoute( cargo, itinerary2 ).assign(); - assertDelivery( UNLOAD, CHICAGO, DAY5, V201, - IN_PORT, notArrived, - ROUTED, directed, itinerary2.eta(), leg1, - LOAD, CHICAGO, DAY6, V202 ); - } - - @Test - public void deviation_3c_ReRouting_InPort_InCustoms() - throws Exception - { - deviation_3c_ReRouting_InPort_Unloaded(); - - // Receive cargo - cargo.itinerary().set( itinerary ); - handlingEvent = HANDLING_EVENTS.createHandlingEvent( DAY6, DAY6, trackingId, CUSTOMS, NEWYORK, noVoyage ); - cargo.delivery().set( delivery( handlingEvent, IN_PORT, notArrived, - ROUTED, directed, unknownETA, leg3, - unknownNextHandlingEvent ) ); - - // Re-route cargo while in customs - itinerary2 = itinerary( leg( V202, NEWYORK, STOCKHOLM, DAY8, DAY18 ) ); - new AssignCargoToRoute( cargo, itinerary2 ).assign(); - assertDelivery( CUSTOMS, NEWYORK, DAY6, noVoyage, - IN_PORT, notArrived, - ROUTED, directed, itinerary2.eta(), leg1, - LOAD, NEWYORK, DAY8, V202 ); - } -} http://git-wip-us.apache.org/repos/asf/zest-java/blob/103c59cb/samples/dci-cargo/dcisample_b/src/test/java/org/apache/zest/sample/dcicargo/sample_b/context/test/booking/routing/RegisterNewDestinationTest.java ---------------------------------------------------------------------- diff --git a/samples/dci-cargo/dcisample_b/src/test/java/org/apache/zest/sample/dcicargo/sample_b/context/test/booking/routing/RegisterNewDestinationTest.java b/samples/dci-cargo/dcisample_b/src/test/java/org/apache/zest/sample/dcicargo/sample_b/context/test/booking/routing/RegisterNewDestinationTest.java deleted file mode 100644 index 1f84e3d..0000000 --- a/samples/dci-cargo/dcisample_b/src/test/java/org/apache/zest/sample/dcicargo/sample_b/context/test/booking/routing/RegisterNewDestinationTest.java +++ /dev/null @@ -1,316 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * - */ -package org.apache.zest.sample.dcicargo.sample_b.context.test.booking.routing; - -import org.junit.Before; -import org.junit.Test; -import org.apache.zest.api.unitofwork.UnitOfWork; -import org.apache.zest.sample.dcicargo.sample_b.bootstrap.test.TestApplication; -import org.apache.zest.sample.dcicargo.sample_b.context.interaction.booking.exception.ChangeDestinationException; -import org.apache.zest.sample.dcicargo.sample_b.context.interaction.booking.routing.RegisterNewDestination; -import org.apache.zest.sample.dcicargo.sample_b.context.interaction.handling.inspection.exception.CargoMisroutedException; -import org.apache.zest.sample.dcicargo.sample_b.data.aggregateroot.CargoAggregateRoot; -import org.apache.zest.sample.dcicargo.sample_b.data.aggregateroot.HandlingEventAggregateRoot; - -import static org.junit.Assert.fail; -import static org.apache.zest.sample.dcicargo.sample_b.data.structure.delivery.RoutingStatus.MISROUTED; -import static org.apache.zest.sample.dcicargo.sample_b.data.structure.delivery.RoutingStatus.NOT_ROUTED; -import static org.apache.zest.sample.dcicargo.sample_b.data.structure.delivery.RoutingStatus.ROUTED; -import static org.apache.zest.sample.dcicargo.sample_b.data.structure.delivery.TransportStatus.CLAIMED; -import static org.apache.zest.sample.dcicargo.sample_b.data.structure.delivery.TransportStatus.IN_PORT; -import static org.apache.zest.sample.dcicargo.sample_b.data.structure.delivery.TransportStatus.NOT_RECEIVED; -import static org.apache.zest.sample.dcicargo.sample_b.data.structure.delivery.TransportStatus.ONBOARD_CARRIER; -import static org.apache.zest.sample.dcicargo.sample_b.data.structure.handling.HandlingEventType.CUSTOMS; -import static org.apache.zest.sample.dcicargo.sample_b.data.structure.handling.HandlingEventType.LOAD; -import static org.apache.zest.sample.dcicargo.sample_b.data.structure.handling.HandlingEventType.RECEIVE; -import static org.apache.zest.sample.dcicargo.sample_b.data.structure.handling.HandlingEventType.UNLOAD; - -/** - * {@link RegisterNewDestination} tests - * - * FIXME: Every test method call the one above to allow ordered execution, ie. tests are not indepedants ! - */ -public class RegisterNewDestinationTest extends TestApplication -{ - private HandlingEventAggregateRoot HANDLING_EVENTS; - - @Before - public void prepareTest() - throws Exception - { - super.prepareTest(); - UnitOfWork uow = uowf.currentUnitOfWork(); - HANDLING_EVENTS = uow.get( HandlingEventAggregateRoot.class, HandlingEventAggregateRoot.HANDLING_EVENTS_ID ); - CargoAggregateRoot CARGOS = uow.get( CargoAggregateRoot.class, CargoAggregateRoot.CARGOS_ID ); - - // Create new cargo - routeSpec = routeSpecFactory.build( HONGKONG, STOCKHOLM, TODAY, deadline = DAY24 ); - delivery = delivery( TODAY, NOT_RECEIVED, NOT_ROUTED, leg1 ); - cargo = CARGOS.createCargo( routeSpec, delivery, "ABC" ); - trackingId = cargo.trackingId().get(); - delivery = cargo.delivery().get(); - } - - @Test - public void precondition_x1_CannotChangeDestinationOfClaimedCargo() - throws Exception - { - cargo.delivery().set( delivery( DAY1, CLAIMED, ROUTED, leg1 ) ); - thrown.expect( ChangeDestinationException.class, "Can't change destination of claimed cargo" ); - new RegisterNewDestination( cargo ).to( "USCHI" ); - } - - @Test - public void deviation_1a_UnrecognizedLocation() - throws Exception - { - precondition_x1_CannotChangeDestinationOfClaimedCargo(); - - cargo.delivery().set( delivery( DAY1, IN_PORT, ROUTED, leg1 ) ); - thrown.expect( ChangeDestinationException.class, "Didn't recognize location 'XXXXX'" ); - new RegisterNewDestination( cargo ).to( "XXXXX" ); - } - - @Test - public void deviation_1b_NewDestinationSameAsOldDestination() - throws Exception - { - deviation_1a_UnrecognizedLocation(); - - cargo.delivery().set( delivery( DAY1, IN_PORT, ROUTED, leg1 ) ); - thrown.expect( ChangeDestinationException.class, "New destination is same as old destination." ); - new RegisterNewDestination( cargo ).to( "SESTO" ); - } - - @Test - public void step_2_NotRouted() - throws Exception - { - deviation_1b_NewDestinationSameAsOldDestination(); - - cargo.routeSpecification().set( routeSpec ); - cargo.delivery().set( delivery( DAY1, NOT_RECEIVED, NOT_ROUTED, leg1 ) ); - - assertRouteSpec( HONGKONG, STOCKHOLM, TODAY, DAY24 ); - assertDelivery( null, null, null, null, - NOT_RECEIVED, notArrived, - NOT_ROUTED, directed, unknownETA, unknownLeg, - unknownNextHandlingEvent ); - - new RegisterNewDestination( cargo ).to( "CNSHA" ); - - assertRouteSpec( HONGKONG, SHANGHAI, TODAY, DAY24 ); - assertDelivery( null, null, null, null, - NOT_RECEIVED, notArrived, - NOT_ROUTED, directed, unknownETA, unknownLeg, - RECEIVE, HONGKONG, noSpecificDate, noVoyage ); - } - - @Test - public void step_2_NotReceived() - throws Exception - { - step_2_NotRouted(); - - cargo.routeSpecification().set( routeSpec ); - cargo.itinerary().set( itinerary ); - cargo.delivery().set( delivery( null, NOT_RECEIVED, notArrived, - ROUTED, directed, itinerary.eta(), leg1, - nextHandlingEvent( RECEIVE, HONGKONG, noSpecificDate, noVoyage ) ) ); - - assertRouteSpec( HONGKONG, STOCKHOLM, TODAY, DAY24 ); - - // No last handling event - assertDelivery( null, null, null, null, - NOT_RECEIVED, notArrived, - ROUTED, directed, itinerary.eta(), leg1, - RECEIVE, HONGKONG, noSpecificDate, noVoyage ); - - new RegisterNewDestination( cargo ).to( "CNSHA" ); - - // Destination changed, deadline is the same - assertRouteSpec( HONGKONG, SHANGHAI, TODAY, DAY24 ); - - /** - * Delivery status was updated in {@link InspectUnhandledCargo} - * Still expects receipt in cargo origin (Hong Kong). - * */ - assertDelivery( null, null, null, null, - NOT_RECEIVED, notArrived, - MISROUTED, directed, unknownETA, unknownLeg, - RECEIVE, HONGKONG, noSpecificDate, noVoyage ); - } - - @Test - public void step_2_Received() - throws Exception - { - step_2_NotReceived(); - - cargo.routeSpecification().set( routeSpec ); - cargo.itinerary().set( itinerary ); - handlingEvent = HANDLING_EVENTS.createHandlingEvent( DAY1, DAY1, trackingId, RECEIVE, HONGKONG, noVoyage ); - cargo.delivery().set( delivery( handlingEvent, IN_PORT, notArrived, - ROUTED, directed, itinerary.eta(), leg1, - nextHandlingEvent( LOAD, HONGKONG, DAY1, V201 ) ) ); - - assertRouteSpec( HONGKONG, STOCKHOLM, TODAY, DAY24 ); - assertDelivery( RECEIVE, HONGKONG, DAY1, noVoyage, - IN_PORT, notArrived, - ROUTED, directed, itinerary.eta(), leg1, - LOAD, HONGKONG, DAY1, V201 ); - - new RegisterNewDestination( cargo ).to( "CNSHA" ); - - assertRouteSpec( HONGKONG, // Unchanged - SHANGHAI, // New destination - DAY1, // Completion time of last handling event - DAY24 ); // Unchanged - - /** - * Delivery status was updated in {@link InspectReceivedCargo} - * Before cargo has been re-routed we don't know which voyage the cargo is going with next. - * */ - assertDelivery( RECEIVE, HONGKONG, DAY1, noVoyage, - IN_PORT, notArrived, - MISROUTED, directed, unknownETA, unknownLeg, - unknownNextHandlingEvent ); - } - - @Test - public void deviation_2a_OnBoardCarrier() - throws Exception - { - step_2_Received(); - - cargo.routeSpecification().set( routeSpec ); - cargo.itinerary().set( itinerary ); - handlingEvent = HANDLING_EVENTS.createHandlingEvent( DAY1, DAY1, trackingId, LOAD, HONGKONG, V201 ); - cargo.delivery().set( delivery( handlingEvent, ONBOARD_CARRIER, notArrived, - ROUTED, directed, itinerary.eta(), leg1, - nextHandlingEvent( UNLOAD, CHICAGO, DAY5, V201 ) ) ); - - assertRouteSpec( HONGKONG, STOCKHOLM, TODAY, DAY24 ); - assertDelivery( LOAD, HONGKONG, DAY1, V201, - ONBOARD_CARRIER, notArrived, - ROUTED, directed, itinerary.eta(), leg1, - UNLOAD, CHICAGO, DAY5, V201 ); - try - { - new RegisterNewDestination( cargo ).to( "CNSHA" ); - fail(); - } - catch( CargoMisroutedException e ) - { - assertMessage( e, "MISROUTED! Route specification is not satisfied with itinerary" ); - assertRouteSpec( CHICAGO, // Arrival location of current carrier movement - SHANGHAI, // New destination - DAY5, // Arrival time of current carrier movement - DAY24 ); // Unchanged - - /** - * Delivery status was updated in {@link InspectLoadedCargo} - * We still expect unload in Chicago - * */ - assertDelivery( LOAD, HONGKONG, DAY1, V201, - ONBOARD_CARRIER, notArrived, - MISROUTED, directed, unknownETA, unknownLeg, - UNLOAD, CHICAGO, DAY5, V201 ); - } - } - - @Test - public void deviation_2b_InPort_Unloaded() - throws Exception - { - deviation_2a_OnBoardCarrier(); - - cargo.routeSpecification().set( routeSpec ); - cargo.itinerary().set( itinerary ); - handlingEvent = HANDLING_EVENTS.createHandlingEvent( DAY5, DAY5, trackingId, UNLOAD, CHICAGO, V201 ); - cargo.delivery().set( delivery( handlingEvent, IN_PORT, notArrived, - ROUTED, directed, itinerary.eta(), leg2, - nextHandlingEvent( LOAD, CHICAGO, DAY5, V201 ) ) ); - - assertRouteSpec( HONGKONG, STOCKHOLM, TODAY, DAY24 ); - assertDelivery( UNLOAD, CHICAGO, DAY5, V201, - IN_PORT, notArrived, - ROUTED, directed, itinerary.eta(), leg2, - LOAD, CHICAGO, DAY5, V201 ); - try - { - new RegisterNewDestination( cargo ).to( "CNSHA" ); - fail(); - } - catch( CargoMisroutedException e ) - { - assertMessage( e, "MISROUTED! Route specification is not satisfied with itinerary" ); - assertRouteSpec( CHICAGO, // Current location - SHANGHAI, // New destination - DAY5, // Last completion time - DAY24 ); // Unchanged - - /** - * Delivery status was updated in {@link InspectUnloadedCargo} - * We still expect unload in Chicago - * */ - assertDelivery( UNLOAD, CHICAGO, DAY5, V201, - IN_PORT, notArrived, - MISROUTED, directed, unknownETA, unknownLeg, - unknownNextHandlingEvent ); - } - } - - @Test - public void deviation_2b_InPort_InCustoms() - throws Exception - { - deviation_2b_InPort_Unloaded(); - - cargo.routeSpecification().set( routeSpec ); - cargo.itinerary().set( itinerary ); - handlingEvent = HANDLING_EVENTS.createHandlingEvent( DAY5, DAY5, trackingId, CUSTOMS, CHICAGO, noVoyage ); - cargo.delivery().set( delivery( handlingEvent, IN_PORT, notArrived, - ROUTED, directed, itinerary.eta(), leg2, - unknownNextHandlingEvent ) ); - - assertRouteSpec( HONGKONG, STOCKHOLM, TODAY, DAY24 ); - assertDelivery( CUSTOMS, CHICAGO, DAY5, noVoyage, - IN_PORT, notArrived, - ROUTED, directed, itinerary.eta(), leg2, - unknownNextHandlingEvent ); - - new RegisterNewDestination( cargo ).to( "CNSHA" ); - - assertRouteSpec( CHICAGO, // Current location - SHANGHAI, // New destination - DAY5, // Last completion time - DAY24 ); // Unchanged - - /** - * Delivery status was updated in {@link InspectCargoInCustoms} - * We still expect unload in Chicago - */ - assertDelivery( CUSTOMS, CHICAGO, DAY5, noVoyage, - IN_PORT, notArrived, - MISROUTED, directed, unknownETA, unknownLeg, - unknownNextHandlingEvent ); - } -} http://git-wip-us.apache.org/repos/asf/zest-java/blob/103c59cb/samples/dci-cargo/dcisample_b/src/test/java/org/apache/zest/sample/dcicargo/sample_b/context/test/booking/specification/DeriveUpdatedRouteSpecTest.java ---------------------------------------------------------------------- diff --git a/samples/dci-cargo/dcisample_b/src/test/java/org/apache/zest/sample/dcicargo/sample_b/context/test/booking/specification/DeriveUpdatedRouteSpecTest.java b/samples/dci-cargo/dcisample_b/src/test/java/org/apache/zest/sample/dcicargo/sample_b/context/test/booking/specification/DeriveUpdatedRouteSpecTest.java deleted file mode 100644 index a907b1a..0000000 --- a/samples/dci-cargo/dcisample_b/src/test/java/org/apache/zest/sample/dcicargo/sample_b/context/test/booking/specification/DeriveUpdatedRouteSpecTest.java +++ /dev/null @@ -1,160 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * - */ -package org.apache.zest.sample.dcicargo.sample_b.context.test.booking.specification; - -import org.junit.Before; -import org.junit.Test; -import org.apache.zest.api.unitofwork.UnitOfWork; -import org.apache.zest.sample.dcicargo.sample_b.bootstrap.test.TestApplication; -import org.apache.zest.sample.dcicargo.sample_b.context.interaction.booking.specification.DeriveUpdatedRouteSpecification; -import org.apache.zest.sample.dcicargo.sample_b.data.aggregateroot.CargoAggregateRoot; -import org.apache.zest.sample.dcicargo.sample_b.data.aggregateroot.HandlingEventAggregateRoot; - -import static org.apache.zest.sample.dcicargo.sample_b.data.structure.delivery.RoutingStatus.ROUTED; -import static org.apache.zest.sample.dcicargo.sample_b.data.structure.delivery.TransportStatus.IN_PORT; -import static org.apache.zest.sample.dcicargo.sample_b.data.structure.delivery.TransportStatus.NOT_RECEIVED; -import static org.apache.zest.sample.dcicargo.sample_b.data.structure.delivery.TransportStatus.ONBOARD_CARRIER; -import static org.apache.zest.sample.dcicargo.sample_b.data.structure.handling.HandlingEventType.LOAD; -import static org.apache.zest.sample.dcicargo.sample_b.data.structure.handling.HandlingEventType.RECEIVE; -import static org.apache.zest.sample.dcicargo.sample_b.data.structure.handling.HandlingEventType.UNLOAD; - -public class DeriveUpdatedRouteSpecTest extends TestApplication -{ - private HandlingEventAggregateRoot HANDLING_EVENTS; - - @Before - public void prepareTest() - throws Exception - { - super.prepareTest(); - UnitOfWork uow = uowf.currentUnitOfWork(); - HANDLING_EVENTS = uow.get( HandlingEventAggregateRoot.class, HandlingEventAggregateRoot.HANDLING_EVENTS_ID ); - CargoAggregateRoot CARGOS = uow.get( CargoAggregateRoot.class, CargoAggregateRoot.CARGOS_ID ); - - // Create new cargo - routeSpec = routeSpecFactory.build( HONGKONG, STOCKHOLM, TODAY, deadline = DAY24 ); - delivery = delivery( TODAY, NOT_RECEIVED, ROUTED, unknownLeg ); - cargo = CARGOS.createCargo( routeSpec, delivery, "ABC" ); - cargo.itinerary().set( itinerary ); - trackingId = cargo.trackingId().get(); - } - - @Test - public void deviation_1a_Destination_changed() - throws Exception - { - cargo.routeSpecification().set( routeSpec ); - handlingEvent = HANDLING_EVENTS.createHandlingEvent( DAY1, DAY1, trackingId, RECEIVE, HONGKONG, noVoyage ); - cargo.delivery().set( delivery( handlingEvent, IN_PORT, notArrived, - ROUTED, directed, itinerary.eta(), leg1, - nextHandlingEvent( LOAD, HONGKONG, DAY1, V201 ) ) ); - - assertRouteSpec( HONGKONG, STOCKHOLM, TODAY, DAY24 ); - - newRouteSpec = new DeriveUpdatedRouteSpecification( cargo, ROTTERDAM ).getRouteSpec(); - cargo.routeSpecification().set( newRouteSpec ); - - assertRouteSpec( HONGKONG, // Unchanged - ROTTERDAM, // New destination - DAY1, // Completion time of last handling event - DAY24 ); // Unchanged - } - - @Test - public void step_1_Destination_unchanged() - throws Exception - { - cargo.routeSpecification().set( routeSpec ); - handlingEvent = HANDLING_EVENTS.createHandlingEvent( DAY1, DAY1, trackingId, RECEIVE, HONGKONG, noVoyage ); - cargo.delivery().set( delivery( handlingEvent, IN_PORT, notArrived, - ROUTED, directed, itinerary.eta(), leg1, - nextHandlingEvent( LOAD, HONGKONG, DAY1, V201 ) ) ); - - assertRouteSpec( HONGKONG, STOCKHOLM, TODAY, DAY24 ); - - newRouteSpec = new DeriveUpdatedRouteSpecification( cargo ).getRouteSpec(); - cargo.routeSpecification().set( newRouteSpec ); - - assertRouteSpec( HONGKONG, // Unchanged - STOCKHOLM, // Unchanged - DAY1, // Completion time of last handling event - DAY24 ); // Unchanged - } - - @Test - public void deviation_2a_NotReceived() - throws Exception - { - cargo.routeSpecification().set( routeSpec ); - cargo.delivery().set( delivery( TODAY, NOT_RECEIVED, ROUTED, unknownLeg ) ); - - assertRouteSpec( HONGKONG, STOCKHOLM, TODAY, DAY24 ); - - newRouteSpec = new DeriveUpdatedRouteSpecification( cargo ).getRouteSpec(); - cargo.routeSpecification().set( newRouteSpec ); - - assertRouteSpec( HONGKONG, // Unchanged - STOCKHOLM, // Unchanged - TODAY, // Unchanged - DAY24 ); // Unchanged - } - - @Test - public void deviation_2b_OnBoardCarrier() - throws Exception - { - cargo.routeSpecification().set( routeSpec ); - handlingEvent = HANDLING_EVENTS.createHandlingEvent( DAY1, DAY1, trackingId, LOAD, HONGKONG, V201 ); - cargo.delivery().set( delivery( handlingEvent, ONBOARD_CARRIER, notArrived, - ROUTED, directed, itinerary.eta(), leg1, - nextHandlingEvent( UNLOAD, CHICAGO, DAY5, V201 ) ) ); - - assertRouteSpec( HONGKONG, STOCKHOLM, TODAY, DAY24 ); - - newRouteSpec = new DeriveUpdatedRouteSpecification( cargo ).getRouteSpec(); - cargo.routeSpecification().set( newRouteSpec ); - - assertRouteSpec( CHICAGO, // Arrival location of current carrier movement - STOCKHOLM, // Unchanged - DAY5, // Arrival time of current carrier movement - DAY24 ); // Unchanged - } - - @Test - public void step_3_InPort() - throws Exception - { - cargo.routeSpecification().set( routeSpec ); - handlingEvent = HANDLING_EVENTS.createHandlingEvent( DAY5, DAY5, trackingId, UNLOAD, CHICAGO, V201 ); - cargo.delivery().set( delivery( handlingEvent, IN_PORT, notArrived, - ROUTED, directed, itinerary.eta(), leg2, - nextHandlingEvent( LOAD, CHICAGO, DAY5, V201 ) ) ); - - assertRouteSpec( HONGKONG, STOCKHOLM, TODAY, DAY24 ); - - newRouteSpec = new DeriveUpdatedRouteSpecification( cargo ).getRouteSpec(); - cargo.routeSpecification().set( newRouteSpec ); - - assertRouteSpec( CHICAGO, // Current location - STOCKHOLM, // Unchanged - DAY5, // Last completion time - DAY24 ); // Unchanged - } -} http://git-wip-us.apache.org/repos/asf/zest-java/blob/103c59cb/samples/dci-cargo/dcisample_b/src/test/java/org/apache/zest/sample/dcicargo/sample_b/context/test/handling/inspection/event/InspectArrivedCargoTest.java ---------------------------------------------------------------------- diff --git a/samples/dci-cargo/dcisample_b/src/test/java/org/apache/zest/sample/dcicargo/sample_b/context/test/handling/inspection/event/InspectArrivedCargoTest.java b/samples/dci-cargo/dcisample_b/src/test/java/org/apache/zest/sample/dcicargo/sample_b/context/test/handling/inspection/event/InspectArrivedCargoTest.java deleted file mode 100644 index 1661406..0000000 --- a/samples/dci-cargo/dcisample_b/src/test/java/org/apache/zest/sample/dcicargo/sample_b/context/test/handling/inspection/event/InspectArrivedCargoTest.java +++ /dev/null @@ -1,140 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * - */ -package org.apache.zest.sample.dcicargo.sample_b.context.test.handling.inspection.event; - -import java.time.LocalDate; -import org.junit.Before; -import org.junit.Test; -import org.apache.zest.api.unitofwork.UnitOfWork; -import org.apache.zest.sample.dcicargo.sample_b.bootstrap.test.TestApplication; -import org.apache.zest.sample.dcicargo.sample_b.context.interaction.handling.inspection.event.InspectArrivedCargo; -import org.apache.zest.sample.dcicargo.sample_b.context.interaction.handling.inspection.exception.CargoArrivedException; -import org.apache.zest.sample.dcicargo.sample_b.data.aggregateroot.CargoAggregateRoot; -import org.apache.zest.sample.dcicargo.sample_b.data.aggregateroot.HandlingEventAggregateRoot; - -import static org.junit.Assert.fail; -import static org.apache.zest.sample.dcicargo.sample_b.data.structure.delivery.RoutingStatus.MISROUTED; -import static org.apache.zest.sample.dcicargo.sample_b.data.structure.delivery.RoutingStatus.NOT_ROUTED; -import static org.apache.zest.sample.dcicargo.sample_b.data.structure.delivery.RoutingStatus.ROUTED; -import static org.apache.zest.sample.dcicargo.sample_b.data.structure.delivery.TransportStatus.IN_PORT; -import static org.apache.zest.sample.dcicargo.sample_b.data.structure.delivery.TransportStatus.ONBOARD_CARRIER; -import static org.apache.zest.sample.dcicargo.sample_b.data.structure.handling.HandlingEventType.CLAIM; -import static org.apache.zest.sample.dcicargo.sample_b.data.structure.handling.HandlingEventType.UNLOAD; - -/** - * {@link InspectArrivedCargo} tests - */ -public class InspectArrivedCargoTest extends TestApplication -{ - private HandlingEventAggregateRoot HANDLING_EVENTS; - - @Before - public void prepareTest() - throws Exception - { - super.prepareTest(); - UnitOfWork uow = uowf.currentUnitOfWork(); - HANDLING_EVENTS = uow.get( HandlingEventAggregateRoot.class, HandlingEventAggregateRoot.HANDLING_EVENTS_ID ); - CargoAggregateRoot CARGOS = uow.get( CargoAggregateRoot.class, CargoAggregateRoot.CARGOS_ID ); - - // Create new cargo - routeSpec = routeSpecFactory.build( HONGKONG, STOCKHOLM, LocalDate.now(), deadline = DAY24 ); - delivery = delivery( TODAY, IN_PORT, ROUTED, leg5 ); - cargo = CARGOS.createCargo( routeSpec, delivery, "Arrived_CARGO" ); - trackingId = cargo.trackingId().get(); - } - - @Test - public void deviation_2a_NotRouted_MissingItinerary_UnloadedInFinalDestination() - throws Exception - { - // Cargo not routed - cargo.itinerary().set( null ); - cargo.delivery().set( delivery( TODAY, ONBOARD_CARRIER, NOT_ROUTED, leg5 ) ); - - // Unload in final destination (with no itinerary!) - handlingEvent = HANDLING_EVENTS.createHandlingEvent( DAY23, DAY23, trackingId, UNLOAD, STOCKHOLM, V203 ); - try - { - new InspectArrivedCargo( cargo, handlingEvent ).inspect(); - fail(); - } - catch( CargoArrivedException e ) - { - assertMessage( e, "Cargo 'Arrived_CARGO' has arrived in destination Stockholm (SESTO)" ); - - // An unexpected unload shouldn't be considered an itinerary progress - legIndex stays unchanged - assertDelivery( UNLOAD, STOCKHOLM, DAY23, V203, - IN_PORT, arrived, - NOT_ROUTED, directed, unknownETA, unknownLeg, - CLAIM, STOCKHOLM, DAY23, noVoyage ); - } - } - - @Test - public void deviation_2b_Misrouted_WrongItineraryWithoutCurrentUnloadLocation_UnloadedInFinalDestination() - throws Exception - { - // Misroute cargo - assign unsatisfying itinerary not going to Stockholm - cargo.itinerary().set( wrongItinerary ); - cargo.delivery().set( delivery( TODAY, ONBOARD_CARRIER, MISROUTED, leg5 ) ); - - // Unload in final destination (with wrong itinerary) - handlingEvent = HANDLING_EVENTS.createHandlingEvent( DAY23, DAY23, trackingId, UNLOAD, STOCKHOLM, V203 ); - try - { - new InspectArrivedCargo( cargo, handlingEvent ).inspect(); - fail(); - } - catch( CargoArrivedException e ) - { - assertMessage( e, "Cargo 'Arrived_CARGO' has arrived in destination Stockholm (SESTO)" ); - assertDelivery( UNLOAD, STOCKHOLM, DAY23, V203, - IN_PORT, arrived, - MISROUTED, directed, unknownETA, unknownLeg, - CLAIM, STOCKHOLM, DAY23, noVoyage ); - } - } - - @Test - public void success_UnloadInDestination() - throws Exception - { - // Assign satisfying route going to Stockholm - cargo.itinerary().set( itinerary ); - cargo.delivery().set( delivery( TODAY, ONBOARD_CARRIER, ROUTED, leg5 ) ); - - // Unload in final destination (with satisfying itinerary) - handlingEvent = HANDLING_EVENTS.createHandlingEvent( DAY23, DAY23, trackingId, UNLOAD, STOCKHOLM, V203 ); - try - { - new InspectArrivedCargo( cargo, handlingEvent ).inspect(); - fail(); - } - catch( CargoArrivedException e ) - { - assertMessage( e, "Cargo 'Arrived_CARGO' has arrived in destination Stockholm (SESTO)" ); - assertDelivery( UNLOAD, STOCKHOLM, DAY23, V203, - IN_PORT, arrived, - ROUTED, directed, itinerary.eta(), leg5, - CLAIM, STOCKHOLM, DAY23, noVoyage ); - } - } -} http://git-wip-us.apache.org/repos/asf/zest-java/blob/103c59cb/samples/dci-cargo/dcisample_b/src/test/java/org/apache/zest/sample/dcicargo/sample_b/context/test/handling/inspection/event/InspectCargoInCustomsTest.java ---------------------------------------------------------------------- diff --git a/samples/dci-cargo/dcisample_b/src/test/java/org/apache/zest/sample/dcicargo/sample_b/context/test/handling/inspection/event/InspectCargoInCustomsTest.java b/samples/dci-cargo/dcisample_b/src/test/java/org/apache/zest/sample/dcicargo/sample_b/context/test/handling/inspection/event/InspectCargoInCustomsTest.java deleted file mode 100644 index 44c931e..0000000 --- a/samples/dci-cargo/dcisample_b/src/test/java/org/apache/zest/sample/dcicargo/sample_b/context/test/handling/inspection/event/InspectCargoInCustomsTest.java +++ /dev/null @@ -1,138 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * - */ -package org.apache.zest.sample.dcicargo.sample_b.context.test.handling.inspection.event; - -import java.time.LocalDate; -import org.junit.Before; -import org.junit.Test; -import org.apache.zest.api.unitofwork.UnitOfWork; -import org.apache.zest.sample.dcicargo.sample_b.bootstrap.test.TestApplication; -import org.apache.zest.sample.dcicargo.sample_b.context.interaction.handling.inspection.event.InspectCargoInCustoms; -import org.apache.zest.sample.dcicargo.sample_b.context.interaction.handling.inspection.exception.InspectionFailedException; -import org.apache.zest.sample.dcicargo.sample_b.data.aggregateroot.CargoAggregateRoot; -import org.apache.zest.sample.dcicargo.sample_b.data.aggregateroot.HandlingEventAggregateRoot; - -import static org.junit.Assert.fail; -import static org.apache.zest.sample.dcicargo.sample_b.data.structure.delivery.RoutingStatus.MISROUTED; -import static org.apache.zest.sample.dcicargo.sample_b.data.structure.delivery.RoutingStatus.NOT_ROUTED; -import static org.apache.zest.sample.dcicargo.sample_b.data.structure.delivery.RoutingStatus.ROUTED; -import static org.apache.zest.sample.dcicargo.sample_b.data.structure.delivery.TransportStatus.IN_PORT; -import static org.apache.zest.sample.dcicargo.sample_b.data.structure.delivery.TransportStatus.ONBOARD_CARRIER; -import static org.apache.zest.sample.dcicargo.sample_b.data.structure.handling.HandlingEventType.CUSTOMS; - -/** - * {@link InspectCargoInCustoms} tests - */ -public class InspectCargoInCustomsTest extends TestApplication -{ - private HandlingEventAggregateRoot HANDLING_EVENTS; - - @Before - public void prepareTest() - throws Exception - { - super.prepareTest(); - UnitOfWork uow = uowf.currentUnitOfWork(); - HANDLING_EVENTS = uow.get( HandlingEventAggregateRoot.class, HandlingEventAggregateRoot.HANDLING_EVENTS_ID ); - CargoAggregateRoot CARGOS = uow.get( CargoAggregateRoot.class, CargoAggregateRoot.CARGOS_ID ); - - // Create new cargo - routeSpec = routeSpecFactory.build( HONGKONG, STOCKHOLM, LocalDate.now(), deadline = DAY24 ); - delivery = delivery( TODAY, IN_PORT, ROUTED, leg1 ); - cargo = CARGOS.createCargo( routeSpec, delivery, "CARGO_in_customs" ); - trackingId = cargo.trackingId().get(); - } - - @Test - public void precondition_CustomsHandlingNotOnBoardCarrier() - throws Exception - { - cargo.itinerary().set( itinerary ); - - // No customs handling on board a carrier... - handlingEvent = HANDLING_EVENTS.createHandlingEvent( DAY1, DAY1, trackingId, CUSTOMS, STOCKHOLM, noVoyage ); - cargo.delivery().set( delivery( handlingEvent, ONBOARD_CARRIER, notArrived, - ROUTED, directed, unknownETA, unknownLeg, - unknownNextHandlingEvent ) ); - try - { - new InspectCargoInCustoms( cargo, handlingEvent ).inspect(); - fail(); - } - catch( InspectionFailedException e ) - { - assertMessage( e, "INTERNAL ERROR: Cannot handle cargo in customs on board a carrier." ); - } - } - - @Test - public void deviation_2a_NotRouted_CustomsLocation_FinalDestination() - throws Exception - { - // Cargo not routed - cargo.itinerary().set( null ); - cargo.delivery().set( delivery( TODAY, IN_PORT, NOT_ROUTED, leg5 ) ); - - // Handle in customs (without itinerary!) - handlingEvent = HANDLING_EVENTS.createHandlingEvent( DAY1, DAY1, trackingId, CUSTOMS, STOCKHOLM, noVoyage ); - new InspectCargoInCustoms( cargo, handlingEvent ).inspect(); - - assertDelivery( CUSTOMS, STOCKHOLM, DAY1, noVoyage, - IN_PORT, notArrived, - NOT_ROUTED, directed, unknownETA, unknownLeg, - unknownNextHandlingEvent ); - } - - @Test - public void deviation_2b_Misrouted_CustomsLocation_DestinationOfWrongItinerary() - throws Exception - { - // Misroute cargo - assign unsatisfying itinerary not going to Stockholm - cargo.itinerary().set( wrongItinerary ); - cargo.delivery().set( delivery( TODAY, IN_PORT, MISROUTED, leg3 ) ); - - // Handle in customs (with wrong itinerary) - handlingEvent = HANDLING_EVENTS.createHandlingEvent( DAY20, DAY20, trackingId, CUSTOMS, MELBOURNE, noVoyage ); - new InspectCargoInCustoms( cargo, handlingEvent ).inspect(); - - assertDelivery( CUSTOMS, MELBOURNE, DAY20, noVoyage, - IN_PORT, notArrived, - MISROUTED, directed, unknownETA, unknownLeg, - unknownNextHandlingEvent ); - } - - @Test - public void step_2_Routed_CustomsLocation_FinalDestination() - throws Exception - { - // Assign satisfying route going to Stockholm - cargo.itinerary().set( itinerary ); - cargo.delivery().set( delivery( TODAY, IN_PORT, MISROUTED, leg5 ) ); - - // Handle in customs (without itinerary!) - handlingEvent = HANDLING_EVENTS.createHandlingEvent( DAY24, DAY24, trackingId, CUSTOMS, STOCKHOLM, noVoyage ); - new InspectCargoInCustoms( cargo, handlingEvent ).inspect(); - - assertDelivery( CUSTOMS, STOCKHOLM, DAY24, noVoyage, - IN_PORT, notArrived, - ROUTED, directed, itinerary.eta(), leg5, - unknownNextHandlingEvent ); - } -} http://git-wip-us.apache.org/repos/asf/zest-java/blob/103c59cb/samples/dci-cargo/dcisample_b/src/test/java/org/apache/zest/sample/dcicargo/sample_b/context/test/handling/inspection/event/InspectClaimedCargoTest.java ---------------------------------------------------------------------- diff --git a/samples/dci-cargo/dcisample_b/src/test/java/org/apache/zest/sample/dcicargo/sample_b/context/test/handling/inspection/event/InspectClaimedCargoTest.java b/samples/dci-cargo/dcisample_b/src/test/java/org/apache/zest/sample/dcicargo/sample_b/context/test/handling/inspection/event/InspectClaimedCargoTest.java deleted file mode 100644 index 570b3f7..0000000 --- a/samples/dci-cargo/dcisample_b/src/test/java/org/apache/zest/sample/dcicargo/sample_b/context/test/handling/inspection/event/InspectClaimedCargoTest.java +++ /dev/null @@ -1,133 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * - */ -package org.apache.zest.sample.dcicargo.sample_b.context.test.handling.inspection.event; - -import java.time.LocalDate; -import org.apache.zest.api.unitofwork.UnitOfWork; -import org.apache.zest.sample.dcicargo.sample_b.bootstrap.test.TestApplication; -import org.apache.zest.sample.dcicargo.sample_b.context.interaction.handling.inspection.event.InspectClaimedCargo; -import org.apache.zest.sample.dcicargo.sample_b.data.aggregateroot.CargoAggregateRoot; -import org.apache.zest.sample.dcicargo.sample_b.data.aggregateroot.HandlingEventAggregateRoot; -import org.junit.Before; -import org.junit.Test; - -import static org.apache.zest.sample.dcicargo.sample_b.data.structure.delivery.RoutingStatus.MISROUTED; -import static org.apache.zest.sample.dcicargo.sample_b.data.structure.delivery.RoutingStatus.NOT_ROUTED; -import static org.apache.zest.sample.dcicargo.sample_b.data.structure.delivery.RoutingStatus.ROUTED; -import static org.apache.zest.sample.dcicargo.sample_b.data.structure.delivery.TransportStatus.CLAIMED; -import static org.apache.zest.sample.dcicargo.sample_b.data.structure.delivery.TransportStatus.IN_PORT; -import static org.apache.zest.sample.dcicargo.sample_b.data.structure.handling.HandlingEventType.CLAIM; - -/** - * {@link InspectClaimedCargo} tests - */ -public class InspectClaimedCargoTest extends TestApplication -{ - private HandlingEventAggregateRoot HANDLING_EVENTS; - - @Before - public void prepareTest() - throws Exception - { - super.prepareTest(); - UnitOfWork uow = uowf.currentUnitOfWork(); - HANDLING_EVENTS = uow.get( HandlingEventAggregateRoot.class, HandlingEventAggregateRoot.HANDLING_EVENTS_ID ); - CargoAggregateRoot CARGOS = uow.get( CargoAggregateRoot.class, CargoAggregateRoot.CARGOS_ID ); - - // Create new cargo - routeSpec = routeSpecFactory.build( HONGKONG, STOCKHOLM, LocalDate.now(),deadline = DAY24 ); - delivery = delivery( TODAY, IN_PORT, ROUTED, leg1 ); - cargo = CARGOS.createCargo( routeSpec, delivery, "Claimed_CARGO" ); - trackingId = cargo.trackingId().get(); - } - - @Test - public void deviation_2a_NotRouted_ClaimInFinalDestination() - throws Exception - { - // Cargo not routed - cargo.itinerary().set( null ); - cargo.delivery().set( delivery( TODAY, IN_PORT, NOT_ROUTED, leg5 ) ); - - // Claim in final destination (without itinerary!) - handlingEvent = HANDLING_EVENTS.createHandlingEvent( DAY1, DAY1, trackingId, CLAIM, STOCKHOLM, noVoyage ); - - new InspectClaimedCargo( cargo, handlingEvent ).inspect(); - - assertDelivery( CLAIM, STOCKHOLM, DAY1, noVoyage, - CLAIMED, notArrived, - NOT_ROUTED, directed, unknownETA, unknownLeg, - unknownNextHandlingEvent ); - } - - @Test - public void deviation_2b_Misrouted_ClaimInDestinationOfWrongItinerary() - throws Exception - { - // Misroute cargo - assign unsatisfying itinerary not going to Stockholm - cargo.itinerary().set( wrongItinerary ); - cargo.delivery().set( delivery( TODAY, IN_PORT, MISROUTED, leg3 ) ); - - // Claim in final destination (with wrong itinerary) - handlingEvent = HANDLING_EVENTS.createHandlingEvent( DAY20, DAY20, trackingId, CLAIM, MELBOURNE, noVoyage ); - new InspectClaimedCargo( cargo, handlingEvent ).inspect(); - - assertDelivery( CLAIM, MELBOURNE, DAY20, noVoyage, - CLAIMED, notArrived, - MISROUTED, directed, unknownETA, unknownLeg, - unknownNextHandlingEvent ); - } - - @Test - public void step_2_Routed_ClaimInMidpointLocation() - throws Exception - { - // Assign satisfying route going to Stockholm - cargo.itinerary().set( itinerary ); - cargo.delivery().set( delivery( TODAY, IN_PORT, ROUTED, leg3 ) ); - - // Claim in midpoint before arrival at final destination - // Should this really be considered misdirected?! - handlingEvent = HANDLING_EVENTS.createHandlingEvent( DAY9, DAY9, trackingId, CLAIM, DALLAS, noVoyage ); - new InspectClaimedCargo( cargo, handlingEvent ).inspect(); - - assertDelivery( CLAIM, DALLAS, DAY9, noVoyage, - CLAIMED, notArrived, - ROUTED, misdirected, itinerary.eta(), leg3, - unknownNextHandlingEvent ); - } - - @Test - public void step_2_Routed_ClaimInFinalDestination() - throws Exception - { - cargo.itinerary().set( itinerary ); - cargo.delivery().set( delivery( TODAY, IN_PORT, ROUTED, leg5 ) ); - - // Claim in final destination - handlingEvent = HANDLING_EVENTS.createHandlingEvent( DAY24, DAY24, trackingId, CLAIM, STOCKHOLM, noVoyage ); - new InspectClaimedCargo( cargo, handlingEvent ).inspect(); - - assertDelivery( CLAIM, STOCKHOLM, DAY24, noVoyage, - CLAIMED, notArrived, - ROUTED, directed, itinerary.eta(), leg5, - unknownNextHandlingEvent ); - } -} http://git-wip-us.apache.org/repos/asf/zest-java/blob/103c59cb/samples/dci-cargo/dcisample_b/src/test/java/org/apache/zest/sample/dcicargo/sample_b/context/test/handling/inspection/event/InspectLoadedCargoTest.java ---------------------------------------------------------------------- diff --git a/samples/dci-cargo/dcisample_b/src/test/java/org/apache/zest/sample/dcicargo/sample_b/context/test/handling/inspection/event/InspectLoadedCargoTest.java b/samples/dci-cargo/dcisample_b/src/test/java/org/apache/zest/sample/dcicargo/sample_b/context/test/handling/inspection/event/InspectLoadedCargoTest.java deleted file mode 100644 index 2dd657a..0000000 --- a/samples/dci-cargo/dcisample_b/src/test/java/org/apache/zest/sample/dcicargo/sample_b/context/test/handling/inspection/event/InspectLoadedCargoTest.java +++ /dev/null @@ -1,515 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * - */ -package org.apache.zest.sample.dcicargo.sample_b.context.test.handling.inspection.event; - -import java.time.LocalDate; -import org.junit.Before; -import org.junit.Test; -import org.apache.zest.api.unitofwork.UnitOfWork; -import org.apache.zest.sample.dcicargo.sample_b.bootstrap.test.TestApplication; -import org.apache.zest.sample.dcicargo.sample_b.context.interaction.handling.inspection.event.InspectLoadedCargo; -import org.apache.zest.sample.dcicargo.sample_b.context.interaction.handling.inspection.exception.CargoHijackedException; -import org.apache.zest.sample.dcicargo.sample_b.context.interaction.handling.inspection.exception.CargoMisdirectedException; -import org.apache.zest.sample.dcicargo.sample_b.context.interaction.handling.inspection.exception.CargoMisroutedException; -import org.apache.zest.sample.dcicargo.sample_b.context.interaction.handling.inspection.exception.CargoNotRoutedException; -import org.apache.zest.sample.dcicargo.sample_b.context.interaction.handling.inspection.exception.InspectionFailedException; -import org.apache.zest.sample.dcicargo.sample_b.context.interaction.handling.inspection.exception.UnexpectedCarrierException; -import org.apache.zest.sample.dcicargo.sample_b.data.aggregateroot.CargoAggregateRoot; -import org.apache.zest.sample.dcicargo.sample_b.data.aggregateroot.HandlingEventAggregateRoot; -import org.apache.zest.sample.dcicargo.sample_b.data.structure.cargo.RouteSpecification; -import org.apache.zest.sample.dcicargo.sample_b.data.structure.delivery.Delivery; -import org.apache.zest.sample.dcicargo.sample_b.data.structure.delivery.TransportStatus; -import org.apache.zest.sample.dcicargo.sample_b.data.structure.itinerary.Leg; - -import static org.hamcrest.CoreMatchers.equalTo; -import static org.hamcrest.CoreMatchers.is; -import static org.junit.Assert.assertThat; -import static org.junit.Assert.fail; -import static org.apache.zest.sample.dcicargo.sample_b.data.structure.delivery.RoutingStatus.MISROUTED; -import static org.apache.zest.sample.dcicargo.sample_b.data.structure.delivery.RoutingStatus.NOT_ROUTED; -import static org.apache.zest.sample.dcicargo.sample_b.data.structure.delivery.RoutingStatus.ROUTED; -import static org.apache.zest.sample.dcicargo.sample_b.data.structure.delivery.TransportStatus.IN_PORT; -import static org.apache.zest.sample.dcicargo.sample_b.data.structure.delivery.TransportStatus.ONBOARD_CARRIER; -import static org.apache.zest.sample.dcicargo.sample_b.data.structure.handling.HandlingEventType.LOAD; -import static org.apache.zest.sample.dcicargo.sample_b.data.structure.handling.HandlingEventType.UNLOAD; - -/** - * {@link InspectLoadedCargo} tests - * - * FIXME: Every test method call the one above to allow ordered execution, ie. tests are not indepedants ! - */ -public class InspectLoadedCargoTest extends TestApplication -{ - private HandlingEventAggregateRoot HANDLING_EVENTS; - private CargoAggregateRoot CARGOS; - - @Before - public void prepareTest() - throws Exception - { - super.prepareTest(); - UnitOfWork uow = uowf.currentUnitOfWork(); - CARGOS = uow.get( CargoAggregateRoot.class, CargoAggregateRoot.CARGOS_ID ); - HANDLING_EVENTS = uow.get( HandlingEventAggregateRoot.class, HandlingEventAggregateRoot.HANDLING_EVENTS_ID ); - // Create new cargo - RouteSpecification routeSpec = routeSpecFactory.build( HONGKONG, STOCKHOLM, TODAY, deadline = DAY24 ); - Delivery delivery = delivery( TODAY, IN_PORT, ROUTED, leg1 ); - cargo = CARGOS.createCargo( routeSpec, delivery, "Loaded_CARGO" ); - trackingId = cargo.trackingId().get(); -// delivery = cargo.delivery().get(); - } - - @Test - public void deviation_2a_WrongCarrierSchedule() - throws Exception - { - cargo.itinerary().set( itinerary ); - cargo.delivery().set( delivery( TODAY, IN_PORT, ROUTED, leg1 ) ); - - // V202 doesn't expect a load in Hongkong - can't determine much more before we get a correct voyage schedule - handlingEvent = HANDLING_EVENTS.createHandlingEvent( DAY1, DAY1, trackingId, LOAD, HONGKONG, V202 ); - try - { - new InspectLoadedCargo( cargo, handlingEvent ).inspect(); - fail(); - } - catch( UnexpectedCarrierException e ) - { - assertMessage( e, "Carrier of voyage V202 didn't expect a load in Hongkong (CNHKG)" ); - assertDelivery( LOAD, HONGKONG, DAY1, V202, - ONBOARD_CARRIER, notArrived, - ROUTED, misdirected, unknownETA, unknownLeg, - unknownNextHandlingEvent ); - } - } - - @Test - public void deviation_2a_CarrierOnTime_ArrivalDate_Planned() - throws Exception - { - deviation_2a_WrongCarrierSchedule(); - - cargo.itinerary().set( itinerary ); - cargo.delivery().set( delivery( TODAY, IN_PORT, ROUTED, leg1 ) ); - - // - handlingEvent = HANDLING_EVENTS.createHandlingEvent( DAY1, DAY1, trackingId, LOAD, HONGKONG, V201 ); - new InspectLoadedCargo( cargo, handlingEvent ).inspect(); - assertDelivery( LOAD, HONGKONG, DAY1, V201, - ONBOARD_CARRIER, notArrived, - ROUTED, directed, itinerary.eta(), leg1, - UNLOAD, CHICAGO, DAY5, V201 ); // Arrival date 1 is planned - } - - @Test - public void deviation_2a_CarrierDelayed_ArrivalDate_Estimated() - throws Exception - { - deviation_2a_CarrierOnTime_ArrivalDate_Planned(); - - cargo.itinerary().set( itinerary ); - cargo.delivery().set( delivery( TODAY, IN_PORT, ROUTED, leg1 ) ); - - // - handlingEvent = HANDLING_EVENTS.createHandlingEvent( DAY2, DAY2, trackingId, LOAD, HONGKONG, V201 ); - new InspectLoadedCargo( cargo, handlingEvent ).inspect(); - assertDelivery( LOAD, HONGKONG, DAY2, V201, - ONBOARD_CARRIER, notArrived, - ROUTED, directed, itinerary.eta(), leg1, - UNLOAD, CHICAGO, DAY6, V201 ); // Arrival date has been postponed 1 day - } - - @Test - public void deviation_3a_NotRouted_MissingItinerary() - throws Exception - { - deviation_2a_CarrierDelayed_ArrivalDate_Estimated(); - - // Cargo not routed - cargo.itinerary().set( null ); - cargo.delivery().set( delivery( TODAY, IN_PORT, NOT_ROUTED, leg1 ) ); - - // Load cargo in Hong Kong (without an itinerary!) - handlingEvent = HANDLING_EVENTS.createHandlingEvent( DAY1, DAY1, trackingId, LOAD, HONGKONG, V201 ); - try - { - new InspectLoadedCargo( cargo, handlingEvent ).inspect(); - fail(); - } - catch( CargoNotRoutedException e ) - { - assertMessage( e, "NOT ROUTED while being handled!" ); - assertDelivery( LOAD, HONGKONG, DAY1, V201, - ONBOARD_CARRIER, notArrived, - NOT_ROUTED, directed, unknownETA, unknownLeg, - UNLOAD, CHICAGO, DAY5, V201 ); - } - } - - @Test - public void deviation_3b_Misrouted_LoadLocationOfWrongItinerary_Origin() - throws Exception - { - deviation_3a_NotRouted_MissingItinerary(); - - // Misroute cargo - assign unsatisfying itinerary not going to Stockholm - cargo.itinerary().set( wrongItinerary ); - cargo.delivery().set( delivery( TODAY, IN_PORT, MISROUTED, leg1 ) ); - - // Load cargo in Hong Kong (with wrong itinerary) - handlingEvent = HANDLING_EVENTS.createHandlingEvent( DAY1, DAY1, trackingId, LOAD, HONGKONG, V201 ); - try - { - // Load in any location is unexpected when itinerary is wrong - new InspectLoadedCargo( cargo, handlingEvent ).inspect(); - fail(); - } - catch( CargoMisroutedException e ) - { - assertMessage( e, "MISROUTED! Route specification is not satisfied with itinerary" ); - assertDelivery( LOAD, HONGKONG, DAY1, V201, - ONBOARD_CARRIER, notArrived, - MISROUTED, directed, unknownETA, unknownLeg, - UNLOAD, CHICAGO, DAY5, V201 ); - } - } - - @Test - public void deviation_3b_Misrouted_LoadLocationOfWrongItinerary_Midpoint() - throws Exception - { - deviation_3b_Misrouted_LoadLocationOfWrongItinerary_Origin(); - - cargo.itinerary().set( wrongItinerary ); - cargo.delivery().set( delivery( TODAY, IN_PORT, MISROUTED, leg1 ) ); - - handlingEvent = HANDLING_EVENTS.createHandlingEvent( DAY1, DAY1, trackingId, LOAD, NEWYORK, V201 ); - thrown.expect( CargoMisroutedException.class, "MISROUTED! Route specification is not satisfied with itinerary" ); - new InspectLoadedCargo( cargo, handlingEvent ).inspect(); - } - - @Test - public void deviation_3b_Misrouted_LoadLocationOfWrongItinerary_UnplannedLocation() - throws Exception - { - deviation_3b_Misrouted_LoadLocationOfWrongItinerary_Midpoint(); - - cargo.itinerary().set( wrongItinerary ); - cargo.delivery().set( delivery( TODAY, IN_PORT, MISROUTED, leg1 ) ); - - handlingEvent = HANDLING_EVENTS.createHandlingEvent( DAY1, DAY1, trackingId, LOAD, ROTTERDAM, V205 ); - thrown.expect( CargoMisroutedException.class, "MISROUTED! Route specification is not satisfied with itinerary" ); - new InspectLoadedCargo( cargo, handlingEvent ).inspect(); - } - - @Test - public void step_3_Routed() - throws Exception - { - deviation_3b_Misrouted_LoadLocationOfWrongItinerary_UnplannedLocation(); - - // Assign satisfying route going to Stockholm - cargo.itinerary().set( itinerary ); - cargo.delivery().set( delivery( TODAY, IN_PORT, ROUTED, leg1 ) ); - - handlingEvent = HANDLING_EVENTS.createHandlingEvent( DAY1, DAY1, trackingId, LOAD, HONGKONG, V201 ); - new InspectLoadedCargo( cargo, handlingEvent ).inspect(); - - assertDelivery( LOAD, HONGKONG, DAY1, V201, - ONBOARD_CARRIER, notArrived, - ROUTED, directed, itinerary.eta(), leg1, - UNLOAD, CHICAGO, DAY5, V201 ); - } - - @Test - public void deviation_4x_InternalError_InvalidItineraryProgressIndex() - throws Exception - { - step_3_Routed(); - - cargo.itinerary().set( itinerary ); - handlingEvent = HANDLING_EVENTS.createHandlingEvent( DAY1, DAY1, trackingId, LOAD, HONGKONG, V201 ); - - Integer badLegIndex = 7; - cargo.delivery().set( delivery( handlingEvent, ONBOARD_CARRIER, notArrived, - ROUTED, directed, unknownETA, badLegIndex, unknownNextHandlingEvent ) ); - try - { - new InspectLoadedCargo( cargo, handlingEvent ).inspect(); - fail(); - } - catch( InspectionFailedException e ) - { - assertMessage( e, "INTERNAL ERROR: Itinerary progress index '7' is invalid!" ); - assertDelivery( LOAD, HONGKONG, DAY1, V201, - ONBOARD_CARRIER, notArrived, - ROUTED, directed, unknownETA, badLegIndex, unknownNextHandlingEvent ); - } - } - - @Test - public void deviation_4a_Misdirected_UnexpectedLoadLocation() - throws Exception - { - deviation_4x_InternalError_InvalidItineraryProgressIndex(); - - // Move the cargo ahead on the route. Third leg of itinerary expects load in Dallas. - cargo.itinerary().set( itinerary ); - cargo.delivery().set( delivery( TODAY, IN_PORT, ROUTED, leg3 ) ); - - // Unexpected load in previous load location of itinerary (onto expected voyage) - can't go back in time. - handlingEvent = HANDLING_EVENTS.createHandlingEvent( DAY7, DAY5, trackingId, LOAD, ROTTERDAM, V202 ); - try - { - new InspectLoadedCargo( cargo, handlingEvent ).inspect(); - fail(); - } - catch( CargoMisdirectedException e ) - { - assertMessage( e, "MISDIRECTED! Itinerary expected load in New York (USNYC)" ); - assertDelivery( LOAD, ROTTERDAM, DAY5, V202, // Itinerary expected: LOAD, NEWYORK, DAY7, V202 - ONBOARD_CARRIER, notArrived, - ROUTED, misdirected, itinerary.eta(), leg3, - unknownNextHandlingEvent ); // When location is wrong we have to investigate... - } - } - - @Test - public void deviation_4b_Misdirected_UnexpectedLoadVoyage_PreviousInItinerary() - throws Exception - { - deviation_4a_Misdirected_UnexpectedLoadLocation(); - - cargo.itinerary().set( itinerary ); - cargo.delivery().set( delivery( TODAY, IN_PORT, ROUTED, leg3 ) ); - - // Unexpected load onto previous voyage (in expected location) - can't go back in time. - handlingEvent = HANDLING_EVENTS.createHandlingEvent( DAY7, DAY7, trackingId, LOAD, NEWYORK, V201 ); - try - { - new InspectLoadedCargo( cargo, handlingEvent ).inspect(); - fail(); - } - catch( CargoMisdirectedException e ) - { - assertMessage( e, "MISDIRECTED! Itinerary expected load onto voyage V202" ); - assertDelivery( LOAD, NEWYORK, DAY7, V201, // Itinerary expected: LOAD, NEWYORK, DAY7, V202 - ONBOARD_CARRIER, notArrived, - ROUTED, misdirected, itinerary.eta(), leg3, - UNLOAD, GOTHENBURG, DAY13, V201 ); // Itinerary expected: UNLOAD, DALLAS, DAY8, V202 - } - } - - @Test - public void deviation_4b_Misdirected_UnexpectedLoadVoyage_NextInItinerary() - throws Exception - { - deviation_4b_Misdirected_UnexpectedLoadVoyage_PreviousInItinerary(); - - cargo.itinerary().set( itinerary ); - cargo.delivery().set( delivery( TODAY, IN_PORT, ROUTED, leg3 ) ); - - // Unexpected load onto future voyage (in expected location) - can't jump ahead in route plan. - handlingEvent = HANDLING_EVENTS.createHandlingEvent( DAY7, DAY7, trackingId, LOAD, NEWYORK, V203 ); - thrown.expect( CargoMisdirectedException.class, "MISDIRECTED! Itinerary expected load onto voyage V202" ); - new InspectLoadedCargo( cargo, handlingEvent ).inspect(); - } - - @Test - public void deviation_4b_Misdirected_UnexpectedLoadVoyage_VoyageNotInItinerary() - throws Exception - { - deviation_4b_Misdirected_UnexpectedLoadVoyage_NextInItinerary(); - - cargo.itinerary().set( itinerary ); - cargo.delivery().set( delivery( TODAY, IN_PORT, ROUTED, leg3 ) ); - - // Unexpected load onto voyage not in itinerary - handlingEvent = HANDLING_EVENTS.createHandlingEvent( DAY7, DAY7, trackingId, LOAD, NEWYORK, V204 ); - thrown.expect( CargoMisdirectedException.class, "MISDIRECTED! Itinerary expected load onto voyage V202" ); - new InspectLoadedCargo( cargo, handlingEvent ).inspect(); - } - - @Test - public void deviation_4c_Misdirected_UnexpectedLoadVoyage_Unplanned_ButGoingToWantedLocation() - throws Exception - { - deviation_4b_Misdirected_UnexpectedLoadVoyage_VoyageNotInItinerary(); - - cargo.itinerary().set( itinerary ); - cargo.delivery().set( delivery( TODAY, IN_PORT, ROUTED, leg3 ) ); - - // Unexpected load onto voyage not in itinerary - but the carrier is going to our expected arrival location! - handlingEvent = HANDLING_EVENTS.createHandlingEvent( DAY9, DAY9, trackingId, LOAD, NEWYORK, V205 ); - try - { - new InspectLoadedCargo( cargo, handlingEvent ).inspect(); - fail(); - } - catch( CargoMisdirectedException e ) - { - assertMessage( e, "MISDIRECTED! Cargo is heading to expected arrival location USDAL but on unexpected voyage V205" ); - assertDelivery( LOAD, NEWYORK, DAY9, V205, // Itinerary expected: LOAD, NEWYORK, DAY7, V202 - ONBOARD_CARRIER, notArrived, - ROUTED, misdirected, itinerary.eta(), leg3, - UNLOAD, DALLAS, DAY10, V205 ); // Itinerary expected: UNLOAD, DALLAS, DAY8, V202 - } - } - - @Test - public void deviation_4d_Misdirected_ExpectedLoadVoyage_UnexpectedNewVoyageSchedule() - throws Exception - { - deviation_4c_Misdirected_UnexpectedLoadVoyage_Unplanned_ButGoingToWantedLocation(); - - cargo.itinerary().set( itinerary ); - cargo.delivery().set( delivery( TODAY, IN_PORT, ROUTED, leg3 ) ); - - // Unexpected voyage schedule change - V202 = voyage( "V202", schedule( - carrierMovement( CHICAGO, NEWYORK, DAY3, DAY5 ), - carrierMovement( NEWYORK, HAMBURG, DAY7, DAY15 ), - carrierMovement( HAMBURG, ROTTERDAM, DAY16, DAY17 ), - carrierMovement( ROTTERDAM, GOTHENBURG, DAY17, DAY19 ) - ) ); - - // Expected load onto voyage - but carrier has changed arrival location! - handlingEvent = HANDLING_EVENTS.createHandlingEvent( DAY7, DAY7, trackingId, LOAD, NEWYORK, V202 ); - try - { - new InspectLoadedCargo( cargo, handlingEvent ).inspect(); - fail(); - } - catch( CargoMisdirectedException e ) - { - assertMessage( e, "MISDIRECTED! Itinerary expects voyage V202 to arrive in USDAL but carrier is now going to DEHAM" ); - assertDelivery( LOAD, NEWYORK, DAY7, V202, // Itinerary expected: LOAD, NEWYORK, DAY7, V202 - ONBOARD_CARRIER, notArrived, - ROUTED, misdirected, itinerary.eta(), leg3, - UNLOAD, HAMBURG, DAY15, V202 ); // Itinerary expected: UNLOAD, DALLAS, DAY8, V202 - } - } - - @Test - public void success_Load() - throws Exception - { - deviation_4d_Misdirected_ExpectedLoadVoyage_UnexpectedNewVoyageSchedule(); - - cargo.itinerary().set( itinerary ); - cargo.delivery().set( delivery( TODAY, IN_PORT, ROUTED, leg3 ) ); - - // Restore expected voyage schedule change - V202 = voyage( "V202", schedule( - carrierMovement( CHICAGO, NEWYORK, DAY3, DAY5 ), - carrierMovement( NEWYORK, DALLAS, DAY7, DAY8 ), - carrierMovement( DALLAS, ROTTERDAM, DAY10, DAY17 ), - carrierMovement( ROTTERDAM, GOTHENBURG, DAY17, DAY19 ) - ) ); - - // Expected load (leg 3) - handlingEvent = HANDLING_EVENTS.createHandlingEvent( DAY7, DAY7, trackingId, LOAD, NEWYORK, V202 ); - new InspectLoadedCargo( cargo, handlingEvent ).inspect(); - - Leg currentCarrierMovement = itinerary.leg( delivery.itineraryProgressIndex().get() ); - assertThat( currentCarrierMovement.unloadLocation().get(), is( equalTo( DALLAS ) ) ); - assertThat( currentCarrierMovement.unloadDate().get(), is( equalTo( DAY8 ) ) ); - assertThat( currentCarrierMovement.voyage().get(), is( equalTo( V202 ) ) ); - - assertDelivery( LOAD, NEWYORK, DAY7, V202, - ONBOARD_CARRIER, notArrived, - ROUTED, directed, itinerary.eta(), leg3, - UNLOAD, DALLAS, DAY8, V202 ); - } - - @Test - public void riskZoneDestination() - throws Exception - { - success_Load(); - - // Risk zone destination - routeSpec = routeSpecFactory.build( HANGZHOU, ROTTERDAM, LocalDate.now(),deadline = DAY24 ); - delivery = delivery( TODAY, ONBOARD_CARRIER, ROUTED, leg1 ); - cargo = CARGOS.createCargo( routeSpec, delivery, "Naive" ); - trackingId = cargo.trackingId().get(); - itinerary = itinerary( - leg( V205, HANGZHOU, MOGADISHU, DAY1, DAY2 ), - leg( V205, MOGADISHU, ROTTERDAM, DAY2, DAY4 ) - ); - cargo.itinerary().set( itinerary ); - - handlingEvent = HANDLING_EVENTS.createHandlingEvent( DAY1, DAY1, trackingId, LOAD, HANGZHOU, V205 ); - cargo.delivery().set( delivery( handlingEvent, ONBOARD_CARRIER, notArrived, - ROUTED, directed, itinerary.eta(), leg1, - nextHandlingEvent( UNLOAD, MOGADISHU, DAY2, V205 ) ) ); - - assertDelivery( LOAD, HANGZHOU, DAY1, V205, - ONBOARD_CARRIER, notArrived, - ROUTED, directed, itinerary.eta(), leg1, - UNLOAD, MOGADISHU, DAY2, V205 ); - try - { - new InspectLoadedCargo( cargo, handlingEvent ).inspect(); - } - catch( CargoHijackedException e ) - { - assertMessage( e, "Cargo 'Naive' was hijacked." ); - assertDelivery( LOAD, HANGZHOU, DAY1, V205, - TransportStatus.UNKNOWN, notArrived, - ROUTED, directed, itinerary.eta(), leg1, - UNLOAD, MOGADISHU, DAY2, V205 ); - } - } - - @Test - public void riskZoneDeparture() - throws Exception - { - riskZoneDestination(); - - // Risk zone departure (they know you now, so risk is higher) - cargo = CARGOS.createCargo( routeSpec, delivery, "Hopeful" ); - trackingId = cargo.trackingId().get(); - cargo.itinerary().set( itinerary ); // Risky itinerary - - handlingEvent = HANDLING_EVENTS.createHandlingEvent( DAY2, DAY2, trackingId, LOAD, MOGADISHU, V205 ); - cargo.delivery().set( delivery( handlingEvent, ONBOARD_CARRIER, notArrived, - ROUTED, directed, itinerary.eta(), leg2, - nextHandlingEvent( UNLOAD, ROTTERDAM, DAY4, V205 ) ) ); - - assertDelivery( LOAD, MOGADISHU, DAY2, V205, - ONBOARD_CARRIER, notArrived, - ROUTED, directed, itinerary.eta(), leg2, - UNLOAD, ROTTERDAM, DAY4, V205 ); - try - { - new InspectLoadedCargo( cargo, handlingEvent ).inspect(); - } - catch( CargoHijackedException e ) - { - assertMessage( e, "Cargo 'Hopeful' was hijacked." ); - assertDelivery( LOAD, MOGADISHU, DAY2, V205, - TransportStatus.UNKNOWN, notArrived, - ROUTED, directed, itinerary.eta(), leg2, - UNLOAD, ROTTERDAM, DAY4, V205 ); - } - } -}