public void Test_CalculatePrice_ReturnsWithDiscount()
        {
            var priceRequest = new PriceRequest
            {
                UserType  = (long)UserTypeEnum.PrivilegedUser,
                GoldPrice = 10,
                Weight    = 5
            };
            var priceResponse = new PriceCalculatorResponse
            {
                GoldPrice  = priceRequest.GoldPrice,
                Weight     = priceRequest.Weight,
                TotalPrice = (priceRequest.GoldPrice * priceRequest.Weight) - (((priceRequest.GoldPrice * priceRequest.Weight) * 2) / 100),
                Discount   = 2
            };

            serviceMock.Setup(p => p.CalculatePrice(priceRequest)).Returns(priceResponse);

            PriceCalculatorController controller = new PriceCalculatorController(serviceMock.Object);
            var result = controller.Post(priceRequest);

            Assert.NotNull(result);
            Assert.NotNull(result.Discount);
            Assert.True(result.TotalPrice == priceResponse.TotalPrice);
        }
        public void Test_CalculatePrice_ReturnsWithoutDiscount()
        {
            var priceRequest = new PriceRequest
            {
                UserType  = (long)UserTypeEnum.NormalUser,
                GoldPrice = 10,
                Weight    = 5
            };
            var priceResponse = new PriceCalculatorResponse
            {
                GoldPrice  = priceRequest.GoldPrice,
                Weight     = priceRequest.Weight,
                TotalPrice = priceRequest.GoldPrice * priceRequest.Weight,
                Discount   = null
            };

            PriceCalculatorService service = new PriceCalculatorService(repositoryMock.Object, factoryMock.Object);
            var arg = new AbstractPriceCreateArg
            {
                UserType = (UserTypeEnum)priceRequest.UserType,
                PriceCalculatorService = service
            };
            var product = new AbstractPriceCreateResponse
            {
                Product = new NormalPriceProduct(service)
            };

            factoryMock.Setup(p => p.Create(arg)).Returns(product);
            var result = product.Product.CalculatePrice(priceRequest);

            Assert.NotNull(result);
            Assert.Null(result.Discount);
            Assert.True(result.TotalPrice == priceResponse.TotalPrice);
        }
        public void Test_Empty_PriceRequest()
        {
            var priceRequest = new PriceRequest();
            PriceCalculatorResponse priceResponse = null;

            serviceMock.Setup(p => p.CalculatePrice(priceRequest)).Returns(priceResponse);

            PriceCalculatorController controller = new PriceCalculatorController(serviceMock.Object);
            var result = controller.Post(priceRequest);

            Assert.Null(result);
        }
Beispiel #4
0
        public PriceCalculatorResponse CalculatePrice(PriceRequest request)
        {
            PriceCalculatorResponse response = null;

            if (request != null)
            {
                AbstractPriceCreateArg arg = new AbstractPriceCreateArg {
                    UserType = (UserTypeEnum)request.UserType, PriceCalculatorService = this
                };
                var priceProduct = _priceFactory.Create(arg);
                response = priceProduct.Product.CalculatePrice(request);
            }
            return(response);
        }