public async Task <IActionResult> LoadSession(TestLoadSessionRequestViewModel viewModel)
        {
            if (viewModel == null)
            {
                return(BadRequest());
            }

            if (!ModelState.IsValid)
            {
                var responseViewModel = new TestLoadSessionResponseViewModel()
                {
                    SessionId = viewModel.SessionId
                };
                return(View(responseViewModel));
            }

            var result = await apiService.ReloadUsingSessionId(viewModel.SessionId).ConfigureAwait(false);

            if (result)
            {
                return(RedirectTo("assessment/short/1"));
            }
            else
            {
                ModelState.AddModelError("SessionId", "SessionId is not valid");
                var responseViewModel = new TestLoadSessionResponseViewModel()
                {
                    SessionId = viewModel.SessionId
                };
                this.logService.LogInformation($"{nameof(this.LoadSession)} generated the model and ready to pass to the view");
                return(View(responseViewModel));
            }
        }
        public async Task NullModelReturnsBadRequest()
        {
            TestLoadSessionRequestViewModel viewModel = null;

            var actionResponse = await controller.LoadSession(viewModel).ConfigureAwait(false);

            Assert.IsType <BadRequestResult>(actionResponse);
        }
        public async Task WhenAssessmentCannotBeFoundReturnsViewResult()
        {
            var viewModel = new TestLoadSessionRequestViewModel();

            A.CallTo(() => assessmentService.ReloadUsingSessionId(viewModel.SessionId)).Returns(false);

            var actionResponse = await controller.LoadSession(viewModel).ConfigureAwait(false);

            Assert.IsType <ViewResult>(actionResponse);
        }
        public async Task WhenModelStateIsInvalidReturnsViewResult()
        {
            var viewModel = new TestLoadSessionRequestViewModel();

            controller.ModelState.AddModelError("some error key", "some error message");

            var actionResponse = await controller.LoadSession(viewModel).ConfigureAwait(false);

            Assert.IsType <ViewResult>(actionResponse);
        }
        public async Task WhenAssessmentIsLoadedRedirectsToFirstQuestionOnAssessment()
        {
            var viewModel = new TestLoadSessionRequestViewModel();

            A.CallTo(() => assessmentService.ReloadUsingSessionId(viewModel.SessionId)).Returns(true);

            var actionResponse = await controller.LoadSession(viewModel).ConfigureAwait(false);

            Assert.IsType <RedirectResult>(actionResponse);
            var redirectResult = actionResponse as RedirectResult;

            Assert.Equal($"~/{RouteName.Prefix}/assessment/short/1", redirectResult.Url);
        }