/// <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); }
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); }
/// <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); }
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(); }
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); }
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); }
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); }
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); }
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); }