| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- package se.citerus.dddsample.infrastructure.routing;
-
- import static org.assertj.core.api.Assertions.assertThat;
- import static org.easymock.EasyMock.createMock;
- import static org.easymock.EasyMock.expect;
- import static org.easymock.EasyMock.isA;
- import static org.easymock.EasyMock.replay;
- import static org.easymock.EasyMock.verify;
- import static se.citerus.dddsample.domain.model.location.SampleLocations.GOTHENBURG;
- import static se.citerus.dddsample.domain.model.location.SampleLocations.HELSINKI;
- import static se.citerus.dddsample.domain.model.location.SampleLocations.HONGKONG;
- import static se.citerus.dddsample.domain.model.location.SampleLocations.STOCKHOLM;
- import static se.citerus.dddsample.domain.model.location.SampleLocations.TOKYO;
-
- import java.util.Arrays;
- import java.util.Date;
- import java.util.List;
-
- import org.junit.Before;
- import org.junit.Test;
-
- import com.pathfinder.api.GraphTraversalService;
- import com.pathfinder.internal.GraphDAOStub;
- import com.pathfinder.internal.GraphTraversalServiceImpl;
-
- import se.citerus.dddsample.domain.model.cargo.Cargo;
- import se.citerus.dddsample.domain.model.cargo.Itinerary;
- import se.citerus.dddsample.domain.model.cargo.Leg;
- import se.citerus.dddsample.domain.model.cargo.RouteSpecification;
- import se.citerus.dddsample.domain.model.cargo.TrackingId;
- import se.citerus.dddsample.domain.model.location.Location;
- import se.citerus.dddsample.domain.model.location.LocationRepository;
- import se.citerus.dddsample.domain.model.voyage.SampleVoyages;
- import se.citerus.dddsample.domain.model.voyage.VoyageNumber;
- import se.citerus.dddsample.domain.model.voyage.VoyageRepository;
- import se.citerus.dddsample.infrastructure.persistence.inmemory.LocationRepositoryInMem;
-
- public class ExternalRoutingServiceTest {
-
- private ExternalRoutingService externalRoutingService;
- private VoyageRepository voyageRepository;
-
- @Before
- public void setUp() {
- externalRoutingService = new ExternalRoutingService();
- LocationRepository locationRepository = new LocationRepositoryInMem();
- externalRoutingService.setLocationRepository(locationRepository);
-
- voyageRepository = createMock(VoyageRepository.class);
- externalRoutingService.setVoyageRepository(voyageRepository);
-
- GraphTraversalService graphTraversalService = new GraphTraversalServiceImpl(new GraphDAOStub() {
- public List<String> listLocations() {
- return Arrays.asList(TOKYO.unLocode().idString(), STOCKHOLM.unLocode().idString(), GOTHENBURG.unLocode().idString());
- }
-
- public void storeCarrierMovementId(String cmId, String from, String to) {
- }
- });
- externalRoutingService.setGraphTraversalService(graphTraversalService);
- }
-
- // TODO this test belongs in com.pathfinder
- @Test
- public void testCalculatePossibleRoutes() {
- TrackingId trackingId = new TrackingId("ABC");
- RouteSpecification routeSpecification = new RouteSpecification(HONGKONG, HELSINKI, new Date());
- Cargo cargo = new Cargo(trackingId, routeSpecification);
-
- expect(voyageRepository.find(isA(VoyageNumber.class))).andStubReturn(SampleVoyages.CM002);
-
- replay(voyageRepository);
-
- List<Itinerary> candidates = externalRoutingService.fetchRoutesForSpecification(routeSpecification);
- assertThat(candidates).isNotNull();
-
- for (Itinerary itinerary : candidates) {
- List<Leg> legs = itinerary.legs();
- assertThat(legs).isNotNull();
- assertThat(legs.isEmpty()).isFalse();
-
- // Cargo origin and start of first leg should match
- assertThat(legs.get(0).loadLocation()).isEqualTo(cargo.origin());
-
- // Cargo final destination and last leg stop should match
- Location lastLegStop = legs.get(legs.size() - 1).unloadLocation();
- assertThat(lastLegStop).isEqualTo(cargo.routeSpecification().destination());
-
- for (int i = 0; i < legs.size() - 1; i++) {
- // Assert that all legs are connected
- assertThat(legs.get(i + 1).loadLocation()).isEqualTo(legs.get(i).unloadLocation());
- }
- }
-
- verify(voyageRepository);
- }
-
- }
|