Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        /// <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);
        }
Beispiel #4
0
        public void GetNearestCenter_Request_Null_ThrowsException()
        {
            // ARRANGE
            GettingNearestCenterRequestDto request = null;

            // ACT
            Assert.Throws <ArgumentNullException>(() => _LogisticService.GetNearestFulfillmentCenter(request));
        }
Beispiel #5
0
        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);
        }
Beispiel #6
0
        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);
        }
Beispiel #7
0
        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);
        }
Beispiel #8
0
        public IHttpActionResult GetNearestFulfillmentCenter([FromBody] GettingNearestCenterRequestDto centerRequest)
        {
            FulfillmentCenterDto result = _logisticService.GetNearestFulfillmentCenter(centerRequest);

            return(Ok(result));
        }