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);
        }
示例#3
0
        public void GetAnswer_when_SubmittedAnswer_null_Returns_null()
        {
            _submittedAnswer = null;

            var result = SubmittedAnswerMapper.GetAnswer(_applicationId, _pageId, _question, _submittedAnswer);

            Assert.IsNull(result);
        }
示例#4
0
        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);
        }
示例#5
0
        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);
        }
示例#6
0
        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);
        }