public async Task ShouldReturnValidCalculateGiftAidResponse() { var getGiftAidAmountRequest = new GiftAidRequest { Amount = 30 }; var expectedResponse = new GiftAidResponse { DonationAmount = 30, GiftAidAmount = 7.5m }; _optionsMonitorMock.Setup(o => o.CurrentValue).Returns(new AppSettings { TaxRatePercentage = "20", MinimumDonationAmount = "20", MaximumDonationAmount = "50" }); var controller = new GiftAidController(_optionsMonitorMock.Object, _giftAidCalculatorMock.Object, _donationDeclarationServiceMock.Object); var response = controller.GetGiftAidAmount(getGiftAidAmountRequest); var responseContext = response as ObjectResult; Assert.AreEqual(200, responseContext.StatusCode); Assert.AreEqual(expectedResponse.ToString(), responseContext.Value.ToString()); }
public async Task ShouldReturnBadRequestWhenAmountIsNotValid() { var getGiftAidAmountRequest = new GiftAidRequest { Amount = 10 }; _optionsMonitorMock.Setup(o => o.CurrentValue).Returns(new AppSettings { TaxRatePercentage = "20", MinimumDonationAmount = "20", MaximumDonationAmount = "50" }); var expectedResponse = new ObjectResult("Donation amount can not be smaller than 20 and can not be larger than 50"); expectedResponse.StatusCode = 400; var controller = new GiftAidController(_optionsMonitorMock.Object, _giftAidCalculatorMock.Object, _donationDeclarationServiceMock.Object); var response = controller.GetGiftAidAmount(getGiftAidAmountRequest); var responseContext = response as ObjectResult; Assert.AreEqual(expectedResponse.StatusCode, responseContext.StatusCode); Assert.AreEqual(expectedResponse.Value.ToString(), responseContext.Value.ToString()); }
public void GetGiftAidValidRequestReturnsValidResponse() { // Arrange var request = new GiftAidRequest { Amount = 500 }; // Act var createdResponse = _giftAidController.GetGiftAid(request) as OkObjectResult; // Assert Assert.IsType <GiftAidResponse>(createdResponse.Value); }
public void GetGiftAidReturnsOkResult() { // Arrange var request = new GiftAidRequest { Amount = 300 }; // Act var createdResponse = _giftAidController.GetGiftAid(request); // Assert Assert.IsType <OkObjectResult>(createdResponse); }
public async Task <ActionResult <GiftAidResponse> > Get([FromQuery] GiftAidRequest request) { var response = await _mediator.Send(new CalculateGiftAidRequest { DonationAmount = request.Amount }); _logger.LogDebug("Reclaim {GiftAidAmount} for a {DonationAmount} donation.", request.Amount, response.GiftAidAmount); return(new GiftAidResponse { GiftAidAmount = response.GiftAidAmount, DonationAmount = request.Amount }); }
public void GetGiftAidReturnCorrectGiftAid(decimal donationAmount, decimal expectedValue) { // Arrange var request = new GiftAidRequest { Amount = donationAmount }; // Act var result = _giftAidController.GetGiftAid(request) as OkObjectResult; var response = (GiftAidResponse)result.Value; // Assert Assert.Equal(response.GiftAidAmount, expectedValue); }
public async Task ShouldReturnInternalServerErrorWhenConfigurationIsNotValid() { var getGiftAidAmountRequest = new GiftAidRequest { Amount = 10 }; _optionsMonitorMock.Setup(o => o.CurrentValue).Returns(new AppSettings()); var expectedResponse = new ObjectResult("Internal Server Error: Definition of one or more configuration settings of the application are invalid."); expectedResponse.StatusCode = 500; var controller = new GiftAidController(_optionsMonitorMock.Object, _giftAidCalculatorMock.Object, _donationDeclarationServiceMock.Object); var response = controller.GetGiftAidAmount(getGiftAidAmountRequest); var responseContext = response as ObjectResult; Assert.AreEqual(expectedResponse.StatusCode, responseContext.StatusCode); Assert.AreEqual(expectedResponse.Value.ToString(), responseContext.Value.ToString()); }
public ActionResult GetGiftAid([FromQuery] GiftAidRequest giftAidRequest) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (giftAidRequest is null) { return(BadRequest("Invalid donation")); } var calculatedGiftAidAmount = _giftAidService.Calculate(giftAidRequest.Amount); var giftAidResponse = new GiftAidResponse { DonationAmount = giftAidRequest.Amount, GiftAidAmount = calculatedGiftAidAmount }; return(Ok(giftAidResponse)); }