Exemplo n.º 1
0
        public When_Recording_Referrals_And_Employer_Details_Is_Submitted_Successfully()
        {
            _opportunityService = Substitute.For <IOpportunityService>();
            _opportunityService.IsReferralOpportunityItemAsync(OpportunityItemId).Returns(true);

            var httpContextAccessor = Substitute.For <IHttpContextAccessor>();
            var referralService     = Substitute.For <IReferralService>();

            var config = new MapperConfiguration(c =>
            {
                c.AddMaps(typeof(EmployerDtoMapper).Assembly);
                c.ConstructServicesUsing(type =>
                                         type.Name.Contains("LoggedInUserEmailResolver") ?
                                         new LoggedInUserEmailResolver <EmployerDetailsViewModel, EmployerDetailDto>(httpContextAccessor) :
                                         type.Name.Contains("LoggedInUserNameResolver") ?
                                         (object)new LoggedInUserNameResolver <EmployerDetailsViewModel, EmployerDetailDto>(httpContextAccessor) :
                                         type.Name.Contains("UtcNowResolver") ?
                                         new UtcNowResolver <EmployerDetailsViewModel, EmployerDetailDto>(new DateTimeProvider()) :
                                         null);
            });
            var mapper = new Mapper(config);

            var employerController   = new EmployerController(null, _opportunityService, referralService, mapper);
            var controllerWithClaims = new ClaimsBuilder <EmployerController>(employerController)
                                       .AddStandardUser()
                                       .AddUserName(ModifiedBy)
                                       .Build();

            httpContextAccessor.HttpContext.Returns(controllerWithClaims.HttpContext);

            _result = controllerWithClaims.SaveOpportunityEmployerDetailsAsync(_viewModel).GetAwaiter().GetResult();
        }
        public async Task <IActionResult> SaveOpportunityEmployerDetailsAsync(EmployerDetailsViewModel viewModel)
        {
            Validate(viewModel);

            if (!ModelState.IsValid)
            {
                return(View("Details", viewModel));
            }

            var employerDetailDto = _mapper.Map <EmployerDetailDto>(viewModel);

            await _opportunityService.UpdateOpportunityAsync(employerDetailDto);

            var isReferralOpportunityItem = await _opportunityService.IsReferralOpportunityItemAsync(viewModel.OpportunityItemId);

            if (isReferralOpportunityItem)
            {
                return(RedirectToRoute("GetCheckAnswers", new { viewModel.OpportunityItemId }));
            }

            return(RedirectToAction("SaveCheckAnswers", "Opportunity",
                                    new { viewModel.OpportunityId, viewModel.OpportunityItemId }));
        }