Beispiel #1
0
        /// <summary>
        /// Unmarshaller the response from the service to the response class.
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public override AmazonWebServiceResponse Unmarshall(JsonUnmarshallerContext context)
        {
            GetAssessmentResponse response = new GetAssessmentResponse();

            context.Read();
            int targetDepth = context.CurrentDepth;

            while (context.ReadAtDepth(targetDepth))
            {
                if (context.TestExpression("dataCollectionDetails", targetDepth))
                {
                    var unmarshaller = DataCollectionDetailsUnmarshaller.Instance;
                    response.DataCollectionDetails = unmarshaller.Unmarshall(context);
                    continue;
                }
                if (context.TestExpression("id", targetDepth))
                {
                    var unmarshaller = StringUnmarshaller.Instance;
                    response.Id = unmarshaller.Unmarshall(context);
                    continue;
                }
            }

            return(response);
        }
Beispiel #2
0
        public async Task WhenHasPreviousCompleteCategoryRedirectsToRoles()
        {
            var category           = "testcategory";
            var assessmentResponse = new GetAssessmentResponse()
            {
                IsFilterAssessment = true, MaxQuestionsCount = 2, RecordedAnswersCount = 2,
            };

            A.CallTo(() => sessionService.HasValidSession()).Returns(true);
            A.CallTo(() => assessmentService.GetAssessment()).Returns(assessmentResponse);

            var resultsResponse = new GetResultsResponse()
            {
                JobCategories = GetJobCategories(category)
            };

            A.CallTo(() => resultsService.GetResults()).Returns(resultsResponse);

            var actionResponse = await controller.Index().ConfigureAwait(false);

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

            Assert.Equal($"~/{RouteName.Prefix}/results/roles/{category}", redirectResult.Url);
        }
        private IActionResult NavigateTo(GetAssessmentResponse assessment)
        {
            if (assessment == null)
            {
                return(BadRequest());
            }

            if (assessment.IsFilterAssessment)
            {
                if (assessment.IsComplete)
                {
                    return(RedirectTo($"results/roles/{assessment.JobCategorySafeUrl}"));
                }
                else
                {
                    return(RedirectTo($"{AssessmentItemType.Short.ToString().ToLower()}/filterquestions/{assessment.JobCategorySafeUrl}/{assessment.CurrentQuestionNumber}"));
                }
            }
            else
            {
                if (assessment.IsComplete)
                {
                    return(RedirectTo("results"));
                }
                else
                {
                    return(RedirectTo($"assessment/{assessment.QuestionSetName}/{assessment.CurrentQuestionNumber}"));
                }
            }
        }
        public async Task QuestionsMustBeAnsweredInOrder()
        {
            var viewModel = new QuestionGetRequestViewModel()
            {
                QuestionNumber = 2, AssessmentType = "name1"
            };
            var expectedQuestion = new GetQuestionResponse()
            {
                MaxQuestionsCount = 3, QuestionNumber = 1
            };
            var expectedAssessment = new GetAssessmentResponse()
            {
                CurrentQuestionNumber = 1
            };

            A.CallTo(() => Session.HasValidSession()).Returns(true);
            A.CallTo(() => ApiService.GetQuestion(viewModel.AssessmentType, viewModel.QuestionNumber)).Returns(expectedQuestion);
            A.CallTo(() => ApiService.GetAssessment()).Returns(expectedAssessment);

            var actionResponse = await AssessmentController.Index(viewModel).ConfigureAwait(false);

            Assert.IsType <RedirectResult>(actionResponse);

            var redirectResult = actionResponse as RedirectResult;

            Assert.Equal($"~/{RouteName.Prefix}/assessment/name1/1", redirectResult.Url);
        }
Beispiel #5
0
        /// <summary>
        /// Unmarshaller the response from the service to the response class.
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public override AmazonWebServiceResponse Unmarshall(JsonUnmarshallerContext context)
        {
            GetAssessmentResponse response = new GetAssessmentResponse();

            context.Read();
            int targetDepth = context.CurrentDepth;

            while (context.ReadAtDepth(targetDepth))
            {
                if (context.TestExpression("assessment", targetDepth))
                {
                    var unmarshaller = AssessmentUnmarshaller.Instance;
                    response.Assessment = unmarshaller.Unmarshall(context);
                    continue;
                }
                if (context.TestExpression("userRole", targetDepth))
                {
                    var unmarshaller = RoleUnmarshaller.Instance;
                    response.UserRole = unmarshaller.Unmarshall(context);
                    continue;
                }
            }

            return(response);
        }
        private GetAssessmentResponse CreateAssessmentResponse(int currentQuestionNumber)
        {
            var result = new GetAssessmentResponse();

            result.QuestionId        = $"short-201901-23-{currentQuestionNumber}";
            result.MaxQuestionsCount = 10;
            return(result);
        }
        public async Task ReloadUsingNullInvalidSessionIdReturnsFalse(string sessionId)
        {
            GetAssessmentResponse asssessmentResponse = null;

            A.CallTo(() => assessmentApiService.GetAssessment(sessionId)).Returns(asssessmentResponse);

            await Assert.ThrowsAsync <ArgumentNullException>(async() => await assessmentService.ReloadUsingSessionId(sessionId).ConfigureAwait(false));
        }
        public void CheckWhetherAReferenceCodeExists()
        {
            var refCode = "dshh88228";
            GetAssessmentResponse asssessmentResponse = null;

            A.CallTo(() => assessmentApiService.GetAssessment(refCode)).Returns(asssessmentResponse);

            var response = assessmentService.ReferenceCodeExists(refCode);

            Assert.True(response);
        }
Beispiel #9
0
        public async Task WhenReturningToAssessmentReturnsBadRequestIfAssessmentResponseIsNull()
        {
            GetAssessmentResponse assessmentResponse = null;

            A.CallTo(() => ApiService.GetAssessment()).Returns(assessmentResponse);
            A.CallTo(() => Session.HasValidSession()).Returns(true);

            var actionResponse = await AssessmentController.Return().ConfigureAwait(false);

            Assert.IsType <BadRequestResult>(actionResponse);
        }
        public async Task ReloadUsingSessionIdThatDoesntExistReturnsFalse()
        {
            var sessionId = "sessionId1";
            GetAssessmentResponse asssessmentResponse = null;

            A.CallTo(() => assessmentApiService.GetAssessment(sessionId)).Returns(asssessmentResponse);

            var response = await assessmentService.ReloadUsingSessionId(sessionId);

            Assert.False(response);
            A.CallTo(() => sessionService.CreateCookie(sessionId)).MustNotHaveHappened();
        }
Beispiel #11
0
        public async Task WhenAssessmentIsCompleteShowsResults()
        {
            var assessmentResponse = new GetAssessmentResponse()
            {
                MaxQuestionsCount = 2, RecordedAnswersCount = 2
            };

            A.CallTo(() => sessionService.HasValidSession()).Returns(true);
            A.CallTo(() => assessmentService.GetAssessment()).Returns(assessmentResponse);

            var actionResponse = await controller.Index().ConfigureAwait(false);

            Assert.IsType <ViewResult>(actionResponse);
        }
        public async Task ReloadUsingSessionIdCodeCallsCreateCookie()
        {
            var sessionId           = "sessionId1";
            var asssessmentResponse = new GetAssessmentResponse()
            {
                SessionId = sessionId
            };

            A.CallTo(() => assessmentApiService.GetAssessment(sessionId)).Returns(asssessmentResponse);

            var response = await assessmentService.ReloadUsingSessionId(sessionId);

            A.CallTo(() => sessionService.CreateCookie(sessionId)).MustHaveHappenedOnceExactly();
        }
        public async Task GetAssessmentCallsGetAssessmentForCurrentSession()
        {
            var sessionId          = "session1";
            var assessmentResponse = new GetAssessmentResponse {
                SessionId = sessionId
            };

            A.CallTo(() => sessionService.GetSessionId()).Returns(sessionId);
            A.CallTo(() => assessmentApiService.GetAssessment(sessionId)).Returns(assessmentResponse);

            var response = await assessmentService.GetAssessment();

            A.CallTo(() => assessmentApiService.GetAssessment(sessionId)).MustHaveHappenedOnceExactly();
            Assert.Equal(sessionId, response.SessionId);
        }
        public async Task ReloadUsingReferenceCodeCallsCreateCookie()
        {
            var referenceCode             = "code1";
            var sessionIdForReferenceCode = "p1-s1";
            var asssessmentResponse       = new GetAssessmentResponse()
            {
                SessionId = sessionIdForReferenceCode
            };

            A.CallTo(() => sessionIdToCodeConverter.GetSessionId(referenceCode)).Returns(sessionIdForReferenceCode);
            A.CallTo(() => assessmentApiService.GetAssessment(sessionIdForReferenceCode)).Returns(asssessmentResponse);

            await assessmentService.ReloadUsingReferenceCode(referenceCode);

            A.CallTo(() => sessionService.CreateCookie(sessionIdForReferenceCode)).MustHaveHappenedOnceExactly();
        }
        public async Task ReloadUsingReferenceCodeCallsReloadForCurrentSession()
        {
            var referenceCode             = "code1";
            var sessionIdForReferenceCode = "sessionId2";
            var asssessmentResponse       = new GetAssessmentResponse()
            {
                SessionId = sessionIdForReferenceCode
            };

            A.CallTo(() => sessionIdToCodeConverter.GetSessionId(referenceCode)).Returns(sessionIdForReferenceCode);
            A.CallTo(() => assessmentApiService.GetAssessment(sessionIdForReferenceCode)).Returns(asssessmentResponse);

            var response = await assessmentService.ReloadUsingReferenceCode(referenceCode);

            Assert.True(response);
        }
        public async Task GetAssessmentWhenAssessmentDoesntExistReturnsBadResponse()
        {
            var viewModel = new QuestionGetRequestViewModel()
            {
                QuestionNumber = 2, AssessmentType = "name1"
            };
            var expectedQuestion = new GetQuestionResponse();
            GetAssessmentResponse expectedAssessment = null;

            A.CallTo(() => Session.HasValidSession()).Returns(true);
            A.CallTo(() => ApiService.GetQuestion(viewModel.AssessmentType, viewModel.QuestionNumber)).Returns(expectedQuestion);
            A.CallTo(() => ApiService.GetAssessment()).Returns(expectedAssessment);

            var actionResponse = await AssessmentController.Index(viewModel).ConfigureAwait(false);

            Assert.IsType <BadRequestResult>(actionResponse);
        }
Beispiel #17
0
        public async Task WhenAssessmentIsNotCompleteRedirectsToAssessment()
        {
            var assessmentResponse = new GetAssessmentResponse()
            {
                MaxQuestionsCount = 2, RecordedAnswersCount = 1
            };

            A.CallTo(() => sessionService.HasValidSession()).Returns(true);
            A.CallTo(() => assessmentService.GetAssessment()).Returns(assessmentResponse);

            var actionResponse = await controller.Roles(testCategory).ConfigureAwait(false);

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

            Assert.Equal($"~/{RouteName.Prefix}/assessment/return", redirectResult.Url);
        }
Beispiel #18
0
        public async Task WhenReturningToAssessmentAndAssessmentIsNotFilterAssessmentAndIsCompletedThenRedirectedToResultsPage()
        {
            var assessmentResponse = new GetAssessmentResponse()
            {
                MaxQuestionsCount    = 2,
                RecordedAnswersCount = 2,
            };

            A.CallTo(() => ApiService.GetAssessment()).Returns(assessmentResponse);
            A.CallTo(() => Session.HasValidSession()).Returns(true);

            var actionResponse = await AssessmentController.Return().ConfigureAwait(false);

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

            Assert.Equal($"~/{RouteName.Prefix}/results", redirectResult.Url);
        }
Beispiel #19
0
        public async Task WhenNotCompletedReturnsToAssessment()
        {
            var assessmentResponse = new GetAssessmentResponse()
            {
                MaxQuestionsCount = 3, RecordedAnswersCount = 2
            };
            var viewModel = new FilterQuestionIndexRequestViewModel();

            A.CallTo(() => sessionService.HasValidSession()).Returns(true);
            A.CallTo(() => assessmentService.GetAssessment()).Returns(assessmentResponse);

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

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

            Assert.Equal($"~/{RouteName.Prefix}/assessment/return", redirectResult.Url);
        }
Beispiel #20
0
        public async Task WhenReturningToAssessmentAndAssessmentIsFilterAssessmentAndNotCompletedThenRedirectedToCurrentQuestion()
        {
            var assessmentResponse = new GetAssessmentResponse()
            {
                IsFilterAssessment    = true,
                MaxQuestionsCount     = 3,
                RecordedAnswersCount  = 2,
                JobCategorySafeUrl    = "sports",
                CurrentQuestionNumber = 3,
            };

            A.CallTo(() => ApiService.GetAssessment()).Returns(assessmentResponse);
            A.CallTo(() => Session.HasValidSession()).Returns(true);

            var actionResponse = await AssessmentController.Return().ConfigureAwait(false);

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

            Assert.Equal($"~/{RouteName.Prefix}/short/filterquestions/sports/3", redirectResult.Url);
        }