public void ShouldShowSummaryAndStopTimerWhenReturnCar() { var elapsedTimer = Substitute.For <ITimer>(); var elapsedCostTimer = Substitute.For <ITimer>(); _timerFactoryMock.CreateTimer().Returns(elapsedTimer, elapsedCostTimer); var rentalId = Guid.NewGuid(); _rentalServiceMock.GetRental(rentalId).Returns(new RentalDTO { Total = 10 }); var sut = new ActiveRentalSessionViewModel(_timerFactoryMock, _rentalServiceMock, _dialogServiceMock, _messengerServiceMock) { CurrentRental = new RentalViewModel { RentalId = rentalId, PricePerMinute = "2.5" } }; sut.StopRentalCommand.Execute(null); _rentalServiceMock.Received().ReturnCar(rentalId, Arg.Any <DateTime>()); Assert.Null(sut.ErrorString); _messengerServiceMock.Received() .Send(Arg.Is <RefreshRentalsMessage>(m => m.Notification == "Rental Stopped!")); Assert.True(sut.IsRentalStopped); elapsedCostTimer.Received().Stop(); elapsedTimer.Received().Stop(); _rentalServiceMock.Received().GetRental(rentalId); _dialogServiceMock.Received().ShowMessage(Arg.Any <string>()); }
public void ShouldNotCloseActiveRentalSessionViewIfRentalWasNotStopped() { var elapsedTimer = Substitute.For <ITimer>(); var elapsedCostTimer = Substitute.For <ITimer>(); _timerFactoryMock.CreateTimer().Returns(elapsedTimer, elapsedCostTimer); var sut = new ActiveRentalSessionViewModel(_timerFactoryMock, _rentalServiceMock, _dialogServiceMock, _messengerServiceMock); sut.CloseActiveRentalSessionViewCommand.Execute(null); _messengerServiceMock.DidNotReceive() .Send(Arg.Is <NotificationMessage>(message => message.Notification == "Stop Car Rental")); }
public void ShouldUpdateTimerTextUponEventRaised(int totalSeconds, string expectedTimeText) { var elapsedTimer = Substitute.For <ITimer>(); var elapsedCostTimer = Substitute.For <ITimer>(); _timerFactoryMock.CreateTimer().Returns(elapsedTimer, elapsedCostTimer); var sut = new ActiveRentalSessionViewModel(_timerFactoryMock, _rentalServiceMock, _dialogServiceMock, _messengerServiceMock) { TotalSeconds = totalSeconds }; elapsedTimer.Tick += Raise.Event(); Assert.AreEqual(totalSeconds + 1, sut.TotalSeconds); Assert.AreEqual(expectedTimeText, sut.TimerText); }
public void ShouldUpdateEstimatedCostTextUponEventRaised() { var elapsedTimer = Substitute.For <ITimer>(); var elapsedCostTimer = Substitute.For <ITimer>(); _timerFactoryMock.CreateTimer().Returns(elapsedTimer, elapsedCostTimer); var sut = new ActiveRentalSessionViewModel(_timerFactoryMock, _rentalServiceMock, _dialogServiceMock, _messengerServiceMock) { TotalSeconds = 60, CurrentRental = new RentalViewModel { PricePerMinute = "2.5" } }; elapsedCostTimer.Tick += Raise.Event(); Assert.AreEqual("2.50", sut.EstimatedCost); }
public void Setup() { _messengerServiceMock = Substitute.For <IMessengerService>(); _activeRentalSessionViewModelMock = Substitute.For <ActiveRentalSessionViewModel>( Substitute.For <ITimerFactory>(), Substitute.For <IRentalService>(), Substitute.For <IDialogService>(), Substitute.For <IMessengerService>()); _rentCarViewModelMock = Substitute.For <RentCarViewModel>(Substitute.For <ICarService>(), Substitute.For <IRentalService>(), Substitute.For <ICarViewModelMapper>(), Substitute.For <IRentalViewModelMapper>(), Substitute.For <IMessengerService>()); _driverAccountViewModelMock = Substitute.For <DriverAccountViewModel>(Substitute.For <IDriverService>(), Substitute.For <IDriverViewModelMapper>()); _driverRentalsViewModelMock = Substitute.For <DriverRentalsViewModel>(Substitute.For <IRentalService>(), Substitute.For <IRentalViewModelMapper>()); _driverRentalsViewModelMock.CurrentDriver = new DriverViewModel() { Id = Guid.NewGuid() }; }
public void ShouldCloseActiveRentalSessionViewIfRentalWasStopped() { var elapsedTimer = Substitute.For <ITimer>(); var elapsedCostTimer = Substitute.For <ITimer>(); _timerFactoryMock.CreateTimer().Returns(elapsedTimer, elapsedCostTimer); var sut = new ActiveRentalSessionViewModel(_timerFactoryMock, _rentalServiceMock, _dialogServiceMock, _messengerServiceMock) { TotalSeconds = 10 }; sut.IsRentalStopped = true; sut.CloseActiveRentalSessionViewCommand.Execute(null); _messengerServiceMock.Received() .Send(Arg.Is <NotificationMessage>(message => message.Notification == "Stop Car Rental")); Assert.Zero(sut.TotalSeconds); Assert.False(sut.IsRentalStopped); }
public void ShouldConfigureActiveRentalViewWhenStartRental() { var elapsedTimer = Substitute.For <ITimer>(); var elapsedCostTimer = Substitute.For <ITimer>(); _timerFactoryMock.CreateTimer().Returns(elapsedTimer, elapsedCostTimer); var sut = new ActiveRentalSessionViewModel(_timerFactoryMock, _rentalServiceMock, _dialogServiceMock, _messengerServiceMock); var rentalViewModel = new RentalViewModel { RentalId = Guid.NewGuid(), PricePerMinute = "2.5" }; Messenger.Default.Send(new RentalViewModelMessage(RentalViewModelMessageType.StartRental, rentalViewModel)); Assert.AreEqual(rentalViewModel, sut.CurrentRental); _messengerServiceMock.Received() .Send(Arg.Is <RefreshRentalsMessage>(m => m.Notification == "Rental Started!")); elapsedCostTimer.Received().Start(); elapsedTimer.Received().Start(); }
public void ShouldConfigureActiveRentalViewWhenContinueRental() { var elapsedTimer = Substitute.For <ITimer>(); var elapsedCostTimer = Substitute.For <ITimer>(); _timerFactoryMock.CreateTimer().Returns(elapsedTimer, elapsedCostTimer); var sut = new ActiveRentalSessionViewModel(_timerFactoryMock, _rentalServiceMock, _dialogServiceMock, _messengerServiceMock); var rentalViewModel = new RentalViewModel { RentalId = Guid.NewGuid(), PricePerMinute = "2.5", StartDateTime = new DateTime(2020, 03, 03) }; Messenger.Default.Send(new RentalViewModelMessage(RentalViewModelMessageType.ContinueRental, rentalViewModel)); Assert.AreEqual(rentalViewModel, sut.CurrentRental); Assert.NotZero(sut.TotalSeconds); elapsedCostTimer.Received().Start(); elapsedTimer.Received().Start(); }