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); } }
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)); } }
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)); }
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)); }
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)); }