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