public IActionResult AddNewCampaign(NewCampaignRequest campaignRequest) { var errorList = ValidationHelper.ValidateNewCampaignRequest(campaignRequest); if (errorList.Count > 0) { return(BadRequest(errorList)); } try { var clientExists = _clientDbService.ClientExists(campaignRequest.IdClient); if (!clientExists) { throw new Exception("Client with id " + campaignRequest.IdClient + " DOESNT EXIST"); } var onSameStreet = _campaignsDbService.BuildingsOnSameStreet(campaignRequest.FromIdBuilding, campaignRequest.ToIdBuilding); if (!onSameStreet) { throw new Exception("Buildings MUST be located on the same street"); } BestPriceWrapper priceWrapper = _campaignsDbService.GetBestPrice(campaignRequest); var response = _campaignsDbService.AddNewCampaign(campaignRequest, priceWrapper); return(StatusCode(201, response)); } catch (Exception e) { return(BadRequest(e.Message)); } }
public void AddNewCampaign_SUCCESS() { //Arrange var request = new NewCampaignRequest { StartDate = "2020-07-01", EndDate = "2020-08-01", IdClient = 3, FromIdBuilding = 1, ToIdBuilding = 2 }; var priceWrapper = new BestPriceWrapper { FirstBanner = new BannerWrapper { BannerName = "abc" }, SecondBanner = new BannerWrapper { BannerName = "cba" }, TotalPrice = new decimal(1000) }; var targetResponse = new NewCampaignResponse { CampaignId = 100 }; _clientsMockDbService.Setup(service => service.ClientExists(request.IdClient)) .Returns(true); _campaignsMockDbService.Setup(service => service.BuildingsOnSameStreet(request.FromIdBuilding, request.ToIdBuilding)) .Returns(true); _campaignsMockDbService.Setup(service => service.GetBestPrice(request)) .Returns(priceWrapper); _campaignsMockDbService.Setup(service => service.AddNewCampaign(request, priceWrapper)) .Returns(targetResponse); //Act var actionResult = _campaignsController.AddNewCampaign(request); //Assrt var createdObjectResult = actionResult as ObjectResult; Assert.NotNull(createdObjectResult); Assert.Equal(201, createdObjectResult.StatusCode); var resultResponse = createdObjectResult.Value as NewCampaignResponse; Assert.Equal(targetResponse, resultResponse); }
public NewCampaignResponse AddNewCampaign(NewCampaignRequest request, BestPriceWrapper wrapper) { int campaignId = CreateCampaign(request); CreateBanner(wrapper.FirstBanner, campaignId); CreateBanner(wrapper.SecondBanner, campaignId); return(new NewCampaignResponse { CampaignId = campaignId, FirstBanner = wrapper.FirstBanner, SecondBanner = wrapper.SecondBanner, TotalPrice = wrapper.TotalPrice }); }