Пример #1
0
        public void SetUp()
        {
            _mockViewModel = new Mock<ICalculatePriceViewModel>();
            _mockPriceService = new Mock<IPriceService>();

            _command = new CalculatePriceCommand(_mockViewModel.Object, _mockPriceService.Object);
        }
        public async Task ReturnCorrectPrice()
        {
            var tariff  = TariffFactory.Travel();
            var command = new CalculatePriceCommand {
                ProductCode    = tariff.Code,
                PolicyFrom     = DateTimeOffset.Now.AddDays(5),
                PolicyTo       = DateTimeOffset.Now.AddDays(10),
                SelectedCovers = new List <string> {
                    "C1", "C2", "C3"
                },
                Answers = new List <QuestionAnswer>
                {
                    new NumericQuestionAnswer {
                        QuestionCode = "NUM_OF_ADULTS", Answer = 1M
                    },
                    new NumericQuestionAnswer {
                        QuestionCode = "NUM_OF_CHILDREN", Answer = 1M
                    },
                    new TextQuestionAnswer {
                        QuestionCode = "DESTINATION", Answer = "EUR"
                    }
                }
            };
            var dataStoreMock = new Mock <IDataStore>();

            dataStoreMock.Setup(x => x.Tariffs[command.ProductCode]).ReturnsAsync(tariff);

            var handler = new CalculatePriceHandler(dataStoreMock.Object);

            var calculatePriceResult = await handler.Handle(command, CancellationToken.None);

            Assert.NotNull(calculatePriceResult);
            Assert.Equal(98M, calculatePriceResult.TotalPrice);
        }
        public async Task ThrowExceptionsIfTheCommandIsDefault()
        {
            var command = new CalculatePriceCommand();
            var handler = new CalculatePriceHandler(new Mock <IDataStore>().Object);

            var exception = await Assert.ThrowsAsync <ValidationException>(() => handler.Handle(command, CancellationToken.None));

            Assert.NotNull(exception);
            Assert.True(exception.Errors.Count() > 0);
        }
        public async Task CallMediatorWithCorrectParameters()
        {
            var mediator   = new Mock <IMediator>();
            var command    = new CalculatePriceCommand();
            var controller = new PricingController(mediator.Object);

            await controller.Post(command);

            mediator.Verify(x => x.Send(command, default(CancellationToken)), Times.Once());
        }
        public async Task ThrowAnExceptionIfTheCommandsAnswersIsEmpty()
        {
            var command = new CalculatePriceCommand { ProductCode = "test", SelectedCovers = new List<string>() };
            var handler = new CalculatePriceHandler(new Mock<IDataStore>().Object);

            var exception = await Assert.ThrowsAsync<ValidationException>(() => handler.Handle(command, CancellationToken.None));

            Assert.NotNull(exception);
            Assert.Single(exception.Errors);
            Assert.Equal("Answers", exception.Errors.First().PropertyName);
        }
Пример #6
0
 public Task <CalculatePriceResult> CalculatePrice([Body] CalculatePriceCommand cmd)
 {
     try
     {
         return(retryPolicy.ExecuteAsync(async() => await client.CalculatePrice(cmd)));
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
Пример #7
0
        public BuyViewModel(IOwnedItemsStore ownedItemsStore, IPriceService priceService)
        {
            BuyableItems = new ObservableCollection <string>
            {
                "apple",
                "shirt",
                "phone",
                "burrito",
                "pillow"
            };

            CalculatePriceCommand = new CalculatePriceCommand(this, priceService);
            BuyCommand            = new BuyCommand(this, ownedItemsStore);
        }
Пример #8
0
        private void SetRental(CalculatePriceCommand message, decimal price)
        {
            var rental = new Rent
            {
                UserId     = message.UserId,
                FilmId     = message.FilmId,
                Id         = Guid.NewGuid(),
                Price      = price,
                ActiveTo   = message.ActiveTo,
                ActiveFrom = message.ActiveFrom,
                OrderId    = message.OrderId
            };

            rProxy.Set(rental);
        }
Пример #9
0
        public async Task <Price> CalculatePrice(PricingParams pricingParams)
        {
            var cmd = new CalculatePriceCommand
            {
                ProductCode    = pricingParams.ProductCode,
                PolicyFrom     = pricingParams.PolicyFrom,
                PolicyTo       = pricingParams.PolicyTo,
                SelectedCovers = pricingParams.SelectedCovers,
                Answers        = ConstructAnswers(pricingParams.Answers)
            };

            var result = await pricingClient.CalculatePrice(cmd);

            return(new Price(result.CoverPrices));
        }
        public async Task ReturnJsonResult()
        {
            var mediator             = new Mock <IMediator>();
            var command              = new CalculatePriceCommand();
            var calculatePriceResult = new CalculatePriceResult {
                TotalPrice = 12
            };

            mediator.Setup(x => x.Send(command, default(CancellationToken))).ReturnsAsync(calculatePriceResult);
            var controller = new PricingController(mediator.Object);

            var result = await controller.Post(command);

            Assert.IsAssignableFrom <JsonResult>(result);
            Assert.Equal(calculatePriceResult, ((JsonResult)result).Value);
        }
        public async Task Handle_should_Retuen_zero_by_sending_empty_Goldprice_and_weight()
        {
            //Arrange
            var query = new CalculatePriceCommand()
            {
                GoldPrice  = "",
                Weight     = "",
                Discount   = "2",
                TenantName = "Siemens"
            };

            //ACT
            var response = await _calculatePriceCommandHandler.Handle(query, new System.Threading.CancellationToken());

            //Assert
            Assert.IsInstanceOfType(response, typeof(SuccessResponseDTO <string>));
            Assert.AreEqual(response.StatusInfo.Status, "price calculated sucessfully");
            Assert.AreEqual(response.Response, "0");
        }
 public async Task <ActionResult> Post([FromBody] CalculatePriceCommand command)
 {
     return(new JsonResult(await _pricingApplicationService.CalculatePriceAsync(command)));
 }
Пример #13
0
        public async Task <CalculatePriceResult> CalculatePriceAsync(CalculatePriceCommand command)
        {
            var productDraft = await _mediator.Send(command);

            return(productDraft);
        }
Пример #14
0
        public async Task <ActionResult> Post([FromBody] CalculatePriceCommand cmd)
        {
            var result = await bus.Send(cmd);

            return(Ok(result));
        }
 public object Any(CalculatePriceCommand command)
 {
     return(new CalculatePriceCommandResponse {
         Result = ResultType.OK
     });
 }
 public async Task <ActionResult> Post([FromBody] CalculatePriceCommand command) => this.Ok(await this.Mediator.Send(command));
 public Task <CalculatePriceResult> CalculatePrice([Body] CalculatePriceCommand cmd)
 {
     return(retryPolicy.ExecuteAsync(async() => await client.CalculatePrice(cmd)));
 }