public void GetAnswer_when_SubmittedAnswer_empty_Returns_null() { _submittedAnswer = string.Empty; var result = SubmittedAnswerMapper.GetAnswer(_applicationId, _sequenceNumber, _sectionNumber, _pageId, _question, _submittedAnswer); Assert.IsNull(result); }
public void GetAnswer_when_Question_null_Returns_null() { _question = null; var result = SubmittedAnswerMapper.GetAnswer(_applicationId, _sequenceNumber, _sectionNumber, _pageId, _question, _submittedAnswer); Assert.IsNull(result); }
public void GetAnswer_when_SubmittedAnswer_null_Returns_null() { _submittedAnswer = null; var result = SubmittedAnswerMapper.GetAnswer(_applicationId, _pageId, _question, _submittedAnswer); Assert.IsNull(result); }
private static List <SubmittedApplicationAnswer> ExtractQuestionAnswers(Guid applicationId, string pageId, Question question, ICollection <Answer> answers) { var submittedQuestionAnswers = new List <SubmittedApplicationAnswer>(); var questionId = question.QuestionId; // Note: RoATP only has a single answer per question var questionAnswer = answers?.FirstOrDefault(ans => ans.QuestionId == questionId && !string.IsNullOrWhiteSpace(ans.Value)); if (questionAnswer != null) { switch (question.Input.Type.ToUpper()) { case "TABULARDATA": var tabularData = JsonConvert.DeserializeObject <TabularData>(questionAnswer.Value); var tabularAnswers = TabularDataMapper.GetAnswers(applicationId, pageId, question, tabularData); submittedQuestionAnswers.AddRange(tabularAnswers); break; case "CHECKBOXLIST": case "COMPLEXCHECKBOXLIST": var checkboxAnswers = CheckBoxListMapper.GetAnswers(applicationId, pageId, question, questionAnswer.Value); submittedQuestionAnswers.AddRange(checkboxAnswers); break; default: var submittedAnswer = SubmittedAnswerMapper.GetAnswer(applicationId, pageId, question, questionAnswer.Value); submittedQuestionAnswers.Add(submittedAnswer); break; } // We have to do similar for extracting any matching further question if (question.Input.Options != null) { var submittedFurtherQuestionAnswers = new List <SubmittedApplicationAnswer>(); var submittedValues = submittedQuestionAnswers.Where(sqa => sqa.QuestionId == questionId).Select(ans => ans.Answer); foreach (var option in question.Input.Options.Where(opt => opt.FurtherQuestions != null)) { // Check that option was selected if (submittedValues.Contains(option.Value)) { foreach (var furtherQuestion in option.FurtherQuestions) { var furtherQuestionAnswers = ExtractQuestionAnswers(applicationId, pageId, furtherQuestion, answers); submittedFurtherQuestionAnswers.AddRange(furtherQuestionAnswers); } } } submittedQuestionAnswers.AddRange(submittedFurtherQuestionAnswers); } } return(submittedQuestionAnswers); }
public void GetAnswer_Returns_expected_result() { var result = SubmittedAnswerMapper.GetAnswer(_applicationId, _pageId, _question, _submittedAnswer); Assert.IsNotNull(result); Assert.AreEqual(_applicationId, result.ApplicationId); Assert.AreEqual(_pageId, result.PageId); Assert.AreEqual(_question.QuestionId, result.QuestionId); Assert.AreEqual(_question.Input.Type, result.QuestionType); Assert.AreEqual(_submittedAnswer, result.Answer); }
private static List <SubmittedApplicationAnswer> GeneratePageAnswers(Guid applicationId, int sequenceNumber, int sectionNumber, Page page) { var submittedPageAnswers = new List <SubmittedApplicationAnswer>(); if (page.PageOfAnswers != null && page.Questions != null) { var pageAnswers = page.PageOfAnswers[0].Answers; foreach (var question in page.Questions) { var questionId = question.QuestionId; var questionAnswer = pageAnswers.FirstOrDefault(ans => ans.QuestionId == questionId && !string.IsNullOrWhiteSpace(ans.Value)); var submittedAnswer = SubmittedAnswerMapper.GetAnswer(applicationId, sequenceNumber, sectionNumber, page.PageId, question, questionAnswer.Value); submittedPageAnswers.Add(submittedAnswer); } } return(submittedPageAnswers); }