public void GetPriceForRoute_WhenVehicleEntersGateBeforePriceChanges_ThenOnExitGatePriceIsUnchanged() { // Arrange var entryGatePublicId = "wro-g1"; var entryGateAccessTypes = new List <GateAccessType> { GateAccessType.Ticket }; var entryGate = new Gate("test-gate", entryGateAccessTypes, new List <GatePaymentOption>(), entryGatePublicId); var r1ValidFrom = new DateTime(2019, 5, 16, 12, 0, 0); var r1ValidTo = new DateTime(2019, 5, 16, 13, 0, 0); var r1Price = 100; var routePrice1 = new RoutePrice(r1Price, r1ValidFrom, r1ValidTo, new Route(entryGate), new Vehicle(VehicleCategory.Car)); var r2ValidFrom = new DateTime(2019, 5, 16, 12, 50, 0); var r2ValidTo = new DateTime(2019, 5, 27, 12, 0, 0); var r2Price = 200; var routePrice2 = new RoutePrice(r2Price, r2ValidFrom, r2ValidTo, new Route(entryGate), new Vehicle(VehicleCategory.Car)); var date = new DateTime(2019, 5, 16, 12, 30, 0); this.mockStubDataRepository.Setup(x => x.RoutePrices).Returns(new List <RoutePrice> { routePrice1, routePrice2 }); this.mockDateTimeProvider.Setup(x => x.Now).Returns(date); // Act var result = this.sut.GetPriceForRoute(entryGatePublicId, string.Empty, VehicleCategory.Car); // Assert result.IsSuccess.Should().BeTrue(); result.Data.Should().Be(r1Price); }
public void GetPriceForRoute_WhenVehicleHasToPayOnEntryGate_ThenReturnsCorrectPrice(string vehicleCategoryName) { // Arrange var gatePublicId = "wro-g1"; var gateAccessTypes = new List <GateAccessType> { GateAccessType.Payment }; var entryGate = new Gate("test-gate", gateAccessTypes, new List <GatePaymentOption>(), gatePublicId); var vehicleCategory = Enum.Parse <VehicleCategory>(vehicleCategoryName); var vehicle = new Vehicle(vehicleCategory); var validFrom = new DateTime(2019, 5, 14); var validTo = new DateTime(2019, 5, 16); var price = 100; var routePrice = new RoutePrice(price, validFrom, validTo, new Route(entryGate), vehicle); this.mockStubDataRepository.Setup(x => x.RoutePrices).Returns(new List <RoutePrice> { routePrice }); this.mockDateTimeProvider.Setup(x => x.Now).Returns(new DateTime(2019, 5, 15)); // Act var result = this.sut.GetPriceForRoute(gatePublicId, string.Empty, vehicleCategory); // Assert result.IsSuccess.Should().BeTrue(); result.Data.Should().Be(price); }
public void GetPriceForRoute_WhenVehicleHasToPayOnEntryGateButHasInactivePrice_ThenReturnsFailedResult() { // Arrange var gatePublicId = "wro-g1"; var gateAccessTypes = new List <GateAccessType> { GateAccessType.Payment }; var entryGate = new Gate("test-gate", gateAccessTypes, new List <GatePaymentOption>(), gatePublicId); var validFrom = new DateTime(2019, 5, 14); var validTo = new DateTime(2019, 5, 16); var price = 100; var routePrice = new RoutePrice(price, validFrom, validTo, new Route(entryGate), new Vehicle(VehicleCategory.Car)); var date = new DateTime(2019, 5, 20); this.mockStubDataRepository.Setup(x => x.RoutePrices).Returns(new List <RoutePrice> { routePrice }); this.mockDateTimeProvider.Setup(x => x.Now).Returns(date); // Act var result = this.sut.GetPriceForRoute(gatePublicId, string.Empty, VehicleCategory.Car); // Assert result.IsSuccess.Should().BeFalse(); result.Data.Should().Be(default(decimal)); }