示例#1
0
 private Order CreateTestOrderWithSoloRideInDatabase(RideStatus rideStatus = RideStatus.WaitingForAccept, OrderStatus orderStatus = OrderStatus.WaitingForAccept, int minutes = 0)
 {
     using (var context = _factory.CreateContext())
     {
         Customer customer = new Customer()
         {
             Name = "Name"
         };
         context.Customers.Add(customer);
         SoloRide soloRide = new SoloRide()
         {
             CustomerId           = customer.Id,
             DepartureTime        = DateTime.Now,
             ConfirmationDeadline = DateTime.Now.AddMinutes(-minutes),
             PassengerCount       = 0,
             CreatedOn            = DateTime.Now,
             Price            = 100,
             Status           = rideStatus,
             EndDestination   = new Address("City", 8200, "Street", 21),
             StartDestination = new Address("City", 8200, "Street", 21)
         };
         context.SoloRides.Add(soloRide);
         Order order = new Order()
         {
             Status = orderStatus,
             Price  = 100,
             Rides  = new List <Ride>()
         };
         order.Rides.Add(soloRide);
         context.Orders.Add(order);
         context.SaveChanges();
         return(order);
     }
 }
示例#2
0
        public async Task AddRideToOrder_OrderAndRideExists_RideHasStatusWaitingForAccept()
        {
            Customer customer = new Customer();
            Order    order    = new Order();

            using (var context = _factory.CreateContext())
            {
                context.Customers.Add(customer);
                context.Orders.Add(order);
                context.SaveChanges();
            }

            SoloRide soloRide = new SoloRide()
            {
                CustomerId           = customer.Id,
                DepartureTime        = DateTime.Now,
                ConfirmationDeadline = DateTime.Now,
                PassengerCount       = 0,
                CreatedOn            = DateTime.Now,
                Price            = 100,
                Status           = RideStatus.LookingForMatch,
                EndDestination   = new Address("City", 8200, "Street", 21),
                StartDestination = new Address("City", 8200, "Street", 21)
            };
            await _uut.OrderRepository.AddRideToOrderAsync(soloRide, order);

            await _uut.SaveChangesAsync();

            using (var context = _factory.CreateContext())
            {
                Assert.That(context.Orders.Find(order.Id).Rides.First().Status, Is.EqualTo(RideStatus.WaitingForAccept));
            }
        }
示例#3
0
        public async Task AddRideToOrder_RideAlreadyAddedToOrder_ThrowsException()
        {
            Customer customer = new Customer();
            Order    order    = new Order();

            using (var context = _factory.CreateContext())
            {
                context.Customers.Add(customer);
                context.Orders.Add(order);
                context.SaveChanges();
            }

            SoloRide soloRide = new SoloRide()
            {
                CustomerId           = customer.Id,
                DepartureTime        = DateTime.Now,
                ConfirmationDeadline = DateTime.Now,
                PassengerCount       = 0,
                CreatedOn            = DateTime.Now,
                Price            = 100,
                Status           = RideStatus.WaitingForAccept,
                EndDestination   = new Address("City", 8200, "Street", 21),
                StartDestination = new Address("City", 8200, "Street", 21)
            };
            await _uut.OrderRepository.AddRideToOrderAsync(soloRide, order);

            await _uut.SaveChangesAsync();

            Assert.ThrowsAsync <MultipleOrderException>(() => _uut.OrderRepository.AddRideToOrderAsync(soloRide, order));
        }
        public async Task FindCustomerRides_TwoCustomersExist_ReturnsOnlyRidesOfExpectedCustomer()
        {
            var customer  = addCustomerToTestDatabase();
            var customer2 = addCustomerToTestDatabase();

            var soloRide = new SoloRide()
            {
                CustomerId           = customer.Id,
                DepartureTime        = DateTime.Now,
                ConfirmationDeadline = DateTime.Now,
                PassengerCount       = 0,
                CreatedOn            = DateTime.Now,
                Price            = 100,
                Status           = RideStatus.WaitingForAccept,
                EndDestination   = new Address("City", 8200, "Street", 21),
                StartDestination = new Address("City", 8200, "Street", 21)
            };

            customer.Rides.Add(soloRide);
            using (var context = _factory.CreateContext())
            {
                context.Customers.Update(customer);
                context.SaveChanges();
            }

            var rides = await _uut.CustomerRepository.FindCustomerRidesAsync(customer2.Id);

            Assert.That(rides.Count, Is.EqualTo(0));
        }
示例#5
0
        public async Task FindExpiredUnmatchedRides_SearchRides_FindExpectedAmoutn(RideStatus status, int expiredMinutse, int count)
        {
            var customer = new Customer();
            var soloRide = new SoloRide()
            {
                CustomerId           = customer.Id,
                DepartureTime        = DateTime.Now,
                ConfirmationDeadline = DateTime.Now.AddMinutes(-expiredMinutse),
                PassengerCount       = 0,
                CreatedOn            = DateTime.Now,
                Price            = 100,
                Status           = status,
                EndDestination   = new Address("City", 8200, "Street", 21),
                StartDestination = new Address("City", 8200, "Street", 21)
            };

            using (var context = _factory.CreateContext())
            {
                context.Add(customer);
                context.Add(soloRide);
                context.SaveChanges();
            }

            var rides = await _uut.RideRepository.FindExpiredUnmatchedRides();

            Assert.That(rides.Count, Is.EqualTo(count));
        }
        public void Ctor_SoloRideConstructed_HasStatusWaitingForAccept()
        {
            var soloRide = new SoloRide();

            Assert.That(soloRide.Status, Is.EqualTo(RideStatus.WaitingForAccept));
        }
示例#7
0
        public async Task FindUnmatchedSharedRides_RideWithDifferentStatuss_ReturnsCountCorrect()
        {
            var customer  = new Customer();
            var soloRide1 = new SoloRide()
            {
                CustomerId           = customer.Id,
                DepartureTime        = DateTime.Now,
                ConfirmationDeadline = DateTime.Now,
                PassengerCount       = 0,
                CreatedOn            = DateTime.Now,
                Price            = 100,
                Status           = RideStatus.Accepted,
                EndDestination   = new Address("City", 8200, "Street", 21),
                StartDestination = new Address("City", 8200, "Street", 21)
            };
            var soloRide2 = new SoloRide()
            {
                CustomerId           = customer.Id,
                DepartureTime        = DateTime.Now,
                ConfirmationDeadline = DateTime.Now,
                PassengerCount       = 0,
                CreatedOn            = DateTime.Now,
                Price            = 100,
                Status           = RideStatus.LookingForMatch,
                EndDestination   = new Address("City", 8200, "Street", 21),
                StartDestination = new Address("City", 8200, "Street", 21)
            };
            var soloRide3 = new SoloRide()
            {
                CustomerId           = customer.Id,
                DepartureTime        = DateTime.Now,
                ConfirmationDeadline = DateTime.Now,
                PassengerCount       = 0,
                CreatedOn            = DateTime.Now,
                Price            = 100,
                Status           = RideStatus.Debited,
                EndDestination   = new Address("City", 8200, "Street", 21),
                StartDestination = new Address("City", 8200, "Street", 21)
            };
            var soloRide4 = new SoloRide()
            {
                CustomerId           = customer.Id,
                DepartureTime        = DateTime.Now,
                ConfirmationDeadline = DateTime.Now,
                PassengerCount       = 0,
                CreatedOn            = DateTime.Now,
                Price            = 100,
                Status           = RideStatus.Expired,
                EndDestination   = new Address("City", 8200, "Street", 21),
                StartDestination = new Address("City", 8200, "Street", 21)
            };
            var soloRide5 = new SoloRide()
            {
                CustomerId           = customer.Id,
                DepartureTime        = DateTime.Now,
                ConfirmationDeadline = DateTime.Now,
                PassengerCount       = 0,
                CreatedOn            = DateTime.Now,
                Price            = 100,
                Status           = RideStatus.LookingForMatch,
                EndDestination   = new Address("City", 8200, "Street", 21),
                StartDestination = new Address("City", 8200, "Street", 21)
            };

            using (var context = _factory.CreateContext())
            {
                context.Add(customer);
                context.Add(soloRide1);
                context.Add(soloRide2);
                context.Add(soloRide3);
                context.Add(soloRide4);
                context.Add(soloRide5);
                context.SaveChanges();
            }
            var rides = await _uut.RideRepository.FindUnmatchedSharedRides();

            Assert.That(rides.Count, Is.EqualTo(2));
        }