Example #1
0
        private ActionResult ShowResult(OutcomeType expectedOutcomeType)
        {
            var referrer = _httpWrapper.UrlReferrer;

            if (referrer == null || !referrer.IsRouteMatch(_httpWrapper.HttpContext, MVC.Questions.Name, MVC.Questions.ActionNames.Index))
            {
                _answerManager.StoreAnswers(_httpWrapper.QueryString);
            }

            var answers   = _answerManager.GetAnswers();
            var questions = _questionManager.GetAllQuestions();

            if (answers.Count < questions.Count)
            {
                return(RedirectToAction(MVC.Home.Index()));
            }

            var dictionary = answers.ToDictionary(x => x.Key.Id, x => x.Value);

            var persona     = _personaManager.GetPersona(dictionary);
            var outcomeType = persona?.OutcomeType ?? OutcomeType.Unsure;

            if (outcomeType != expectedOutcomeType)
            {
                return(RedirectToOutcomeType(outcomeType));
            }

            var visitor     = new Visitor(outcomeType, persona?.Id, dictionary);
            var obligations = _obligationManager.GetObligationsForVisitor(visitor);

            return(View(MVC.Results.Views.ViewNames.Index, new ResultModel {
                Obligations = obligations, Answers = answers, OutcomeType = outcomeType
            }));
        }
Example #2
0
        public void GetObligationsForVisitor_DuplicateTargets()
        {
            // Arrange
            _fakeRulesetLoader.Setup(x => x.GetRulesets()).Returns(GetDuplicateTargetRuleset());
            _fakeObligationLoader.Setup(x => x.GetObligations()).Returns(GetObligations());

            var answers = new Dictionary <string, IAnswer[]>
            {
                { "AA", new IAnswer[] { new Answer {
                                            Id = "11"
                                        } } },
                { "BB", new IAnswer[] { new Answer {
                                            Id = "22"
                                        } } }
            };

            // Act
            var obligations = _manager.GetObligationsForVisitor(new Visitor(OutcomeType.Unknown, null, answers));

            // Assert
            Assert.AreEqual(2, obligations.Count);
            Assert.AreEqual("T1", obligations.ElementAt(0).Id);
            Assert.AreEqual("T2", obligations.ElementAt(1).Id);
        }