public When_Opportunity_Controller_Save_ProvisionGap_Update_Opportunity() { const int opportunityId = 1; _opportunityService = Substitute.For <IOpportunityService>(); _opportunityService.IsNewProvisionGapAsync(opportunityId).Returns(false); var httpContextAccessor = Substitute.For <IHttpContextAccessor>(); var config = new MapperConfiguration(c => { c.AddMaps(typeof(EmployerDtoMapper).Assembly); c.ConstructServicesUsing(type => type.Name.Contains("LoggedInUserEmailResolver") ? new LoggedInUserEmailResolver <SaveProvisionGapViewModel, OpportunityDto>(httpContextAccessor) : type.Name.Contains("LoggedInUserNameResolver") ? (object)new LoggedInUserNameResolver <SaveProvisionGapViewModel, OpportunityDto>(httpContextAccessor) : type.Name.Contains("UtcNowResolver") ? new UtcNowResolver <SaveProvisionGapViewModel, OpportunityDto>(new DateTimeProvider()) : null); }); var mapper = new Mapper(config); var opportunityController = new OpportunityController(_opportunityService, mapper); var controllerWithClaims = new ClaimsBuilder <OpportunityController>(opportunityController) .AddUserName(UserName) .AddEmail(Email) .Build(); httpContextAccessor.HttpContext.Returns(controllerWithClaims.HttpContext); _result = controllerWithClaims.SaveProvisionGapAsync(new SaveProvisionGapViewModel { SearchResultProviderCount = 0, SelectedRouteId = 1, Postcode = "cv12wt", SearchRadius = 10 }).GetAwaiter().GetResult(); }
public async Task <IActionResult> SaveProvisionGapAsync(SaveProvisionGapViewModel viewModel) { var opportunityDto = _mapper.Map <OpportunityDto>(viewModel); var opportunityItemDto = _mapper.Map <OpportunityItemDto>(viewModel); if (await _opportunityService.IsNewProvisionGapAsync(viewModel.OpportunityItemId)) { opportunityItemDto.OpportunityId = viewModel.OpportunityId; if (opportunityItemDto.OpportunityId == 0) { opportunityItemDto.OpportunityId = await CreateOpportunityAsync(opportunityDto); } opportunityItemDto.ProvisionGap = new List <ProvisionGapDto> { new ProvisionGapDto() }; var opportunityItemId = await _opportunityService.CreateOpportunityItemAsync(opportunityItemDto); return(RedirectToRoute("GetPlacementInformation", new { opportunityItemId })); } var providerSearchDto = new ProviderSearchDto { OpportunityId = opportunityItemDto.OpportunityId, OpportunityItemId = opportunityItemDto.OpportunityItemId, SearchRadius = viewModel.SearchRadius, Postcode = viewModel.Postcode, RouteId = viewModel.SelectedRouteId ?? 0, SearchResultProviderCount = viewModel.SearchResultProviderCount }; await _opportunityService.UpdateOpportunityItemAsync(providerSearchDto); return(RedirectToRoute("GetPlacementInformation", new { opportunityItemDto.OpportunityItemId })); }