Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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));
        }