public void GetNearestCenter_SingleCenterWasFound() { // ARRANGE GettingNearestCenterRequestDto request = new GettingNearestCenterRequestDto { PostalCode = "PostalCode_1", ProductIds = new List <string> { "1" } // OK, exists! }; _commerceServiceMock .Setup(x => x.GetAllFulfillmentCenters()) .Returns(new List <FulfillmentCenter> { new FulfillmentCenter { PostalCode = "PostalCode_1", Id = "Ful_Id_1" } }); _inventoryRepositoryMock .Setup(x => x.Inventories) .Returns(new List <Inventory> { new Inventory { FulfillmentCenterId = "Ful_Id_1", Sku = "1" } }.AsQueryable()); // ACT FulfillmentCenterDto center = _LogisticService.GetNearestFulfillmentCenter(request); // ASSERT Assert.NotNull(center); Assert.Equal("Ful_Id_1", center.Id); }
public void GetNearestCenter_NotFoundAnything_Returns_Null() { // ARRANGE GettingNearestCenterRequestDto request = new GettingNearestCenterRequestDto { PostalCode = "PostalCode_1", ProductIds = new List <string> { "2" } // FAIL, only product with Id = "1" exists! }; _commerceServiceMock .Setup(x => x.GetAllFulfillmentCenters()) .Returns(new List <FulfillmentCenter> { new FulfillmentCenter { PostalCode = "PostalCode_1", Id = "Ful_Id_1" } }); _inventoryRepositoryMock .Setup(x => x.Inventories) .Returns(new List <Inventory> { new Inventory { FulfillmentCenterId = "Ful_Id_1", Sku = "1" } }.AsQueryable()); // ACT FulfillmentCenterDto center = _LogisticService.GetNearestFulfillmentCenter(request); // ASSERT Assert.Null(center); }
/// <summary> /// Get nearest fulfillment center by given location /// </summary> /// <param name="centerRequest">Request with needed params to get nearest fulfillment center</param> /// <returns>Nearest fulfillment center</returns> public FulfillmentCenterDto GetNearestFulfillmentCenter(GettingNearestCenterRequestDto centerRequest) { if (centerRequest == null) { throw new ArgumentNullException("centerRequest"); } var inventories = _inventoryRepository.Inventories; var allCenters = _commerceService.GetAllFulfillmentCenters() .Where(x => x.PostalCode == centerRequest.PostalCode); foreach (FulfillmentCenter center in allCenters) { var centerInventories = inventories.Where(x => x.FulfillmentCenterId == center.Id); bool allProductsExist = true; foreach (string productId in centerRequest.ProductIds) { if (!centerInventories.Any(x => x.Sku == productId)) { allProductsExist = false; break; } } if (allProductsExist) { return(center.ToDto()); } } return(null); }
public void GetNearestCenter_Request_Null_ThrowsException() { // ARRANGE GettingNearestCenterRequestDto request = null; // ACT Assert.Throws <ArgumentNullException>(() => _LogisticService.GetNearestFulfillmentCenter(request)); }
public void GetNearestCenter_GetAllFulfillmentCenters_WasCalled() { // ARRANGE GettingNearestCenterRequestDto request = new GettingNearestCenterRequestDto(); _commerceServiceMock.Setup(x => x.GetAllFulfillmentCenters()).Returns(new List <FulfillmentCenter>()); // ACT _LogisticService.GetNearestFulfillmentCenter(request); // ASSERT _commerceServiceMock.Verify(x => x.GetAllFulfillmentCenters(), Times.Once); }
public void GetNearestCenter_GetInventories_WasCalled() { // ARRANGE GettingNearestCenterRequestDto request = new GettingNearestCenterRequestDto(); _inventoryRepositoryMock.Setup(x => x.Inventories); // ACT _LogisticService.GetNearestFulfillmentCenter(request); // ASSERT _inventoryRepositoryMock.Verify(x => x.Inventories, Times.Once); }
public void GetNearestFulfillmentCenter_GetNearestCenter_WasCalled() { // ARRANGE GettingNearestCenterRequestDto request = new GettingNearestCenterRequestDto(); _logisticServiceMock.Setup(x => x.GetNearestFulfillmentCenter(It.IsAny <GettingNearestCenterRequestDto>())); // ACT _logisticController.GetNearestFulfillmentCenter(request); // ASSERT _logisticServiceMock.Verify(x => x.GetNearestFulfillmentCenter(It.IsAny <GettingNearestCenterRequestDto>()), Times.Once); }
public IHttpActionResult GetNearestFulfillmentCenter([FromBody] GettingNearestCenterRequestDto centerRequest) { FulfillmentCenterDto result = _logisticService.GetNearestFulfillmentCenter(centerRequest); return(Ok(result)); }