public async Task AndPostingSendToApprentice_RedirectsToAddress(CertificateSendToViewModel vm)
        {
            vm.SendTo = CertificateSendTo.Apprentice;

            var result = await _certificateSendToController.SendTo(vm) as RedirectToActionResult;

            result.ControllerName.Should().Be("CertificateAddress");
            result.ActionName.Should().Be("Address");
        }
        public async Task AndPostingModelError_LoadsSendToView(CertificateSendToViewModel vm)
        {
            _certificateSendToController.ModelState.AddModelError("Key", "Message");

            var result = await _certificateSendToController.SendTo(vm) as ViewResult;

            result.ViewName.Should().Be("~/Views/Certificate/SendTo.cshtml");
            result.Model.Should().BeOfType <CertificateSendToViewModel>();
        }
        public async Task <IActionResult> SendTo(CertificateSendToViewModel vm)
        {
            var nextAction = vm.SendTo == CertificateSendTo.Apprentice
                ? RedirectToAction("Address", "CertificateAddress")
                : RedirectToAction("PreviousAddress", "CertificateAddress");

            var certData = await GetCertificateData(vm.Id);

            if (ModelState.IsValid && vm.SendToHasChanged(certData))
            {
                // when recipient has changed the complete journey is required
                SessionService.SetRedirectToCheck(false);
            }

            var actionResult = await SaveViewModel(vm,
                                                   returnToIfModelNotValid : "~/Views/Certificate/SendTo.cshtml",
                                                   nextAction : nextAction, action : CertificateActions.SendTo);

            return(actionResult);
        }
        public async Task AndPostingSendToEmployer_RedirectsToPreviousAddressWhenPreviousAddressFound(CertificateSendToViewModel vm)
        {
            vm.SendTo = CertificateSendTo.Employer;

            var result = await _certificateSendToController.SendTo(vm) as RedirectToActionResult;

            result.ControllerName.Should().Be("CertificateAddress");
            result.ActionName.Should().Be("PreviousAddress");
        }