HandlingEventServiceTest.java 2.9KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. package se.citerus.dddsample.application;
  2. import static org.mockito.Matchers.isA;
  3. import static org.mockito.Mockito.mock;
  4. import static org.mockito.Mockito.times;
  5. import static org.mockito.Mockito.verify;
  6. import static org.mockito.Mockito.when;
  7. import static se.citerus.dddsample.domain.model.location.SampleLocations.HAMBURG;
  8. import static se.citerus.dddsample.domain.model.location.SampleLocations.STOCKHOLM;
  9. import static se.citerus.dddsample.domain.model.location.SampleLocations.TOKYO;
  10. import static se.citerus.dddsample.domain.model.voyage.SampleVoyages.CM001;
  11. import java.util.Date;
  12. import org.junit.After;
  13. import org.junit.Before;
  14. import org.junit.Test;
  15. import se.citerus.dddsample.application.impl.HandlingEventServiceImpl;
  16. import se.citerus.dddsample.domain.model.cargo.Cargo;
  17. import se.citerus.dddsample.domain.model.cargo.CargoRepository;
  18. import se.citerus.dddsample.domain.model.cargo.RouteSpecification;
  19. import se.citerus.dddsample.domain.model.cargo.TrackingId;
  20. import se.citerus.dddsample.domain.model.handling.HandlingEvent;
  21. import se.citerus.dddsample.domain.model.handling.HandlingEventFactory;
  22. import se.citerus.dddsample.domain.model.handling.HandlingEventRepository;
  23. import se.citerus.dddsample.domain.model.location.LocationRepository;
  24. import se.citerus.dddsample.domain.model.voyage.VoyageRepository;
  25. public class HandlingEventServiceTest {
  26. private HandlingEventServiceImpl service;
  27. private ApplicationEvents applicationEvents;
  28. private CargoRepository cargoRepository;
  29. private VoyageRepository voyageRepository;
  30. private HandlingEventRepository handlingEventRepository;
  31. private LocationRepository locationRepository;
  32. private final Cargo cargo = new Cargo(new TrackingId("ABC"), new RouteSpecification(HAMBURG, TOKYO, new Date()));
  33. @Before
  34. public void setUp() {
  35. cargoRepository = mock(CargoRepository.class);
  36. voyageRepository = mock(VoyageRepository.class);
  37. handlingEventRepository = mock(HandlingEventRepository.class);
  38. locationRepository = mock(LocationRepository.class);
  39. applicationEvents = mock(ApplicationEvents.class);
  40. HandlingEventFactory handlingEventFactory = new HandlingEventFactory(cargoRepository, voyageRepository, locationRepository);
  41. service = new HandlingEventServiceImpl(handlingEventRepository, applicationEvents, handlingEventFactory);
  42. }
  43. @After
  44. public void tearDown() {
  45. verify(handlingEventRepository, times(1)).store(isA(HandlingEvent.class));
  46. verify(applicationEvents, times(1)).cargoWasHandled(isA(HandlingEvent.class));
  47. }
  48. @Test
  49. public void testRegisterEvent() throws Exception {
  50. when(cargoRepository.find(cargo.trackingId())).thenReturn(cargo);
  51. when(voyageRepository.find(CM001.voyageNumber())).thenReturn(CM001);
  52. when(locationRepository.find(STOCKHOLM.unLocode())).thenReturn(STOCKHOLM);
  53. service.registerHandlingEvent(new Date(), cargo.trackingId(), CM001.voyageNumber(), STOCKHOLM.unLocode(), HandlingEvent.Type.LOAD);
  54. }
  55. }