public void SpecifyNewRoute_withASpecificationNotMatchingTheItinerary_setTheRoutingStatusMisrouted() { // arrange: GList mocks = new GList(); TrackingId identifier = new TrackingId("CARGO01"); DateTime arrivalDate = DateTime.Now + TimeSpan.FromDays(30); IItinerary itinerary = MockRepository.GenerateStrictMock<IItinerary>(); itinerary.Expect(i => i.Equals(null)).Return(false).Repeat.Any(); itinerary.Expect(i => i.FinalArrivalDate).Return(arrivalDate).Repeat.Any(); mocks.Add(itinerary); IRouteSpecification route = MockRepository.GenerateStrictMock<IRouteSpecification>(); IRouteSpecification route2 = MockRepository.GenerateStrictMock<IRouteSpecification>(); route.Expect(r => r.Equals(route2)).Return(false).Repeat.AtLeastOnce(); route.Expect(r => r.IsSatisfiedBy(itinerary)).Return(true).Repeat.AtLeastOnce(); route2.Expect(r => r.IsSatisfiedBy(itinerary)).Return(false).Repeat.AtLeastOnce(); mocks.Add(route); mocks.Add(route2); // act: TCargo underTest = new TCargo(identifier, route); underTest.AssignToRoute(itinerary); underTest.SpecifyNewRoute(route2); // assert: Assert.AreEqual(RoutingStatus.Misrouted, underTest.Delivery.RoutingStatus); Assert.AreSame(route2, underTest.RouteSpecification); foreach(object mock in mocks) mock.VerifyAllExpectations(); }
public void SpecifyNewRoute_withAnotherSpecification_fireNewRouteSpecified() { // arrange: GList mocks = new GList(); TrackingId identifier = new TrackingId("CARGO01"); IRouteSpecification route = MockRepository.GenerateStrictMock<IRouteSpecification>(); IRouteSpecification route2 = MockRepository.GenerateStrictMock<IRouteSpecification>(); route.Expect(r => r.Equals(route2)).Return(false).Repeat.AtLeastOnce(); mocks.Add(route); mocks.Add(route2); ChangeEventArgs<IRouteSpecification> eventArguments = null; ICargo eventSender = null; // act: TCargo underTest = new TCargo(identifier, route); underTest.NewRouteSpecified += delegate(object sender, ChangeEventArgs<IRouteSpecification> e) { eventArguments = e; eventSender = sender as ICargo; }; underTest.SpecifyNewRoute(route2); // assert: Assert.AreSame(route2, eventArguments.NewValue); Assert.AreSame(route, eventArguments.OldValue); Assert.AreSame(eventSender, underTest); foreach(object mock in mocks) mock.VerifyAllExpectations(); }
public void SpecifyNewRoute_withAnotherSpecification_keepTheRoutingStatusUnchanged() { // arrange: GList mocks = new GList(); TrackingId identifier = new TrackingId("CARGO01"); IRouteSpecification route = MockRepository.GenerateStrictMock<IRouteSpecification>(); IRouteSpecification route2 = MockRepository.GenerateStrictMock<IRouteSpecification>(); route.Expect(r => r.Equals(route2)).Return(false).Repeat.AtLeastOnce(); mocks.Add(route); mocks.Add(route2); // act: TCargo underTest = new TCargo(identifier, route); underTest.SpecifyNewRoute(route2); // assert: Assert.AreEqual(RoutingStatus.NotRouted, underTest.Delivery.RoutingStatus); foreach(object mock in mocks) mock.VerifyAllExpectations(); }
public void SpecifyNewRoute_withNullSpecification_throwsArgumentNullException() { // arrange: GList mocks = new GList(); TrackingId identifier = new TrackingId("CARGO01"); IRouteSpecification route = MockRepository.GenerateStrictMock<IRouteSpecification>(); mocks.Add(route); // act: TCargo underTest = new TCargo(identifier, route); Assert.Throws<ArgumentNullException>( delegate { underTest.SpecifyNewRoute(null); }); // assert: Assert.AreEqual(RoutingStatus.NotRouted, underTest.Delivery.RoutingStatus); foreach(object mock in mocks) mock.VerifyAllExpectations(); }