public async Task AcceptOrdersAsync_WithFailedSend_ReturnsOrdersWithFailedOrderStatus(int numOfOrders) { var fleetManagerClient = Mock.Of <IFleetManagerClient>(); var dispatcherClient = Mock.Of <IDispatcherClient>(); var dbClient = Mock.Of <ICosmosDbClient <Order> >(); var orderManager = new OrderManager(fleetManagerClient, dispatcherClient, dbClient); var orders = generateOrders(numOfOrders); var robots = generateAvailableRobots(numOfOrders); Mock.Get(fleetManagerClient).Setup(f => f.GetAvailableRobotsAsync()).ReturnsAsync(robots); Mock.Get(dispatcherClient).Setup((d) => d.SendJobAsync(It.IsAny <Job>())).ReturnsAsync(false); var processedOrders = await orderManager.AcceptOrdersAsync(orders); var failedOrders = processedOrders.Where(o => o.Status == OrderStatus.Failed).Count(); Assert.Equal(numOfOrders, failedOrders); }
public async Task AcceptOrdersAsync_WithOrdersAndAvailableRobots_AssignsCorrectNumberOfOrders(int numOfOrders, int numOfAvailableRobots) { var fleetManagerClient = Mock.Of <IFleetManagerClient>(); var dispatcherClient = Mock.Of <IDispatcherClient>(); var dbClient = Mock.Of <ICosmosDbClient <Order> >(); var orderManager = new OrderManager(fleetManagerClient, dispatcherClient, dbClient); var orders = generateOrders(numOfOrders); var robots = generateAvailableRobots(numOfAvailableRobots); Mock.Get(fleetManagerClient).Setup(f => f.GetAvailableRobotsAsync()).ReturnsAsync(robots); Mock.Get(dispatcherClient).Setup(d => d.SendJobAsync(It.IsAny <Job>())).ReturnsAsync(true); var expectedAssignments = numOfOrders; var expectedSuccessfulAssignments = Math.Min(numOfOrders, numOfAvailableRobots); var processedOrders = await orderManager.AcceptOrdersAsync(orders); var successfulOrders = processedOrders.Where(o => o.Status == OrderStatus.InProgress).Count(); Assert.Equal(expectedAssignments, processedOrders.Count()); Assert.Equal(expectedSuccessfulAssignments, successfulOrders); }