public async Task <IHttpActionResult> Post(CampaignCreateViewModel model)
        {
            if (model == null)
            {
                return(BadRequest());
            }

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var brand = await _brandService.GetBrand(model.BrandUuid.GetValueOrDefault(Guid.Empty)).ConfigureAwait(false);

            if (brand == null)
            {
                return(BadRequest("The specified brand was not found."));
            }

            var campaign = _mapping.Map <Campaign>(model);
            await _campaignService.CreateCampaign(campaign).ConfigureAwait(false);

            campaign = await _campaignService.GetCampaign(campaign.CampaignUuid).ConfigureAwait(false);

            var campaignViewModel = _mapping.Map <CampaignViewModel>(campaign);

            return(CreatedAtRoute("Campaigns.GetById", new { Id = campaignViewModel.CampaignUuid }, campaignViewModel));
        }
        public async Task Post_ShouldReturnOk()
        {
            // Arrange
            var model = new CampaignCreateViewModel
            {
                BrandUuid = Guid.NewGuid()
            };

            Mock.Mock <IBrandService>().Setup(x => x.GetBrand(model.BrandUuid.Value))
            .Returns(Task.FromResult(new AdvertiserProduct()));
            Mock.Mock <ICampaignService>().Setup(x => x.GetCampaign(It.IsAny <Guid>()))
            .Returns(Task.FromResult(new Campaign()));

            // Act
            var retVal = await Controller.Post(model);

            // Assert
            Assert.That(retVal, Is.Not.Null);
            Assert.That(retVal, Is.TypeOf <CreatedAtRouteNegotiatedContentResult <CampaignViewModel> >());
            Mock.Mock <ICampaignService>().Verify(x => x.CreateCampaign(It.IsAny <Campaign>()), Times.Once);
        }