public void MoveToNextQuestion_ReturnsZero_IfNoCurrentCode()
        {
            var sut = new FilteredAssessmentState
            {
                RecordedAnswers = new[]
                {
                    new Answer {
                        TraitCode = "A", QuestionNumber = 1
                    },
                    new Answer {
                        TraitCode = "B", QuestionNumber = 2
                    },
                },
                JobCategoryStates = new List <JobCategoryState>
                {
                    new JobCategoryState("GS", "Government Services", "QS-1", new[]
                    {
                        new JobCategorySkill {
                            Skill = "A"
                        },
                        new JobCategorySkill {
                            Skill = "B"
                        },
                        new JobCategorySkill {
                            Skill = "C"
                        }
                    })
                }
            };

            var result = sut.MoveToNextQuestion();

            Assert.Equal(0, result);
        }
        public void GetAnswersForCategory_ReturnsArray_IfNoCategory()
        {
            var sut = new FilteredAssessmentState
            {
                CurrentFilterAssessmentCode = "AC",
                RecordedAnswers             = new []
                {
                    new Answer {
                        TraitCode = "A", QuestionNumber = 1
                    },
                    new Answer {
                        TraitCode = "B", QuestionNumber = 2
                    },
                    new Answer {
                        TraitCode = "C", QuestionNumber = 3
                    },
                },
                JobCategoryStates = new List <JobCategoryState>
                {
                    new JobCategoryState("AC", "Animal Care", "QS-1", new []
                    {
                        new JobCategorySkill {
                            Skill = "D", QuestionNumber = 4, QuestionId = "4"
                        },
                        new JobCategorySkill {
                            Skill = "A", QuestionNumber = 1, QuestionId = "1"
                        }
                    }, "1")
                }
            };

            Assert.Single(sut.GetAnswersForCategory("AC"), a => a.Answer.TraitCode == "A");
        }
        public void RemoveAnswers_ForAJobCategory_IfNoCategories()
        {
            var sut = new FilteredAssessmentState
            {
                RecordedAnswers = new []
                {
                    new Answer {
                        TraitCode = "D"
                    },
                    new Answer {
                        TraitCode = "B"
                    },
                    new Answer {
                        TraitCode = "C"
                    },
                    new Answer {
                        TraitCode = "E"
                    },
                    new Answer {
                        TraitCode = "A"
                    }
                },
                JobCategoryStates = {}
            };

            sut.RemoveAnswersForCategory("GS");

            Assert.Equal(sut.RecordedAnswers, sut.RecordedAnswers);
        }
        public void CreateOrResetCategory_OnlyUpdatesQuestionNumber()
        {
            var questions = new[]
            {
                new Question {
                    Order = 1, TraitCode = "A", QuestionId = "4"
                },
                new Question {
                    Order = 2, TraitCode = "B", QuestionId = "3"
                },
                new Question {
                    Order = 3, TraitCode = "C", QuestionId = "2"
                },
                new Question {
                    Order = 4, TraitCode = "D", QuestionId = "1"
                }
            };

            var sut = new FilteredAssessmentState
            {
                CurrentFilterAssessmentCode = "AC",
                JobCategoryStates           = new List <JobCategoryState>
                {
                    new JobCategoryState("AC", "Animal Care", "QS-1", new []
                    {
                        new JobCategorySkill {
                            Skill = "D", QuestionNumber = 4, QuestionId = "4"
                        },
                        new JobCategorySkill {
                            Skill = "A", QuestionNumber = 1, QuestionId = "1"
                        }
                    }, "1")
                }
            };

            sut.CreateOrResetCategoryState("QS-1", questions, new JobCategory
            {
                Name   = "Animal Care",
                Skills = new List <JobProfileSkillMapping>
                {
                    new JobProfileSkillMapping {
                        ONetAttribute = "D"
                    },
                    new JobProfileSkillMapping {
                        ONetAttribute = "A"
                    }
                }
            });

            Assert.Contains(sut.JobCategoryStates, jc => jc.JobCategoryCode == "AC");
            Assert.Equal("QS-1", sut.QuestionSetVersion);
            Assert.Equal(1, sut.CurrentQuestion);
            Assert.Equal("1", sut.CurrentQuestionId);
        }
        public void RemoveAnswers_ForAJobCategory()
        {
            var sut = new FilteredAssessmentState
            {
                RecordedAnswers = new[]
                {
                    new Answer {
                        TraitCode = "D"
                    },
                    new Answer {
                        TraitCode = "B"
                    },
                    new Answer {
                        TraitCode = "C"
                    },
                    new Answer {
                        TraitCode = "E"
                    },
                    new Answer {
                        TraitCode = "A"
                    }
                },
                JobCategoryStates = new List <JobCategoryState>
                {
                    new JobCategoryState("GS", "Government Services", "QS-1", new[]
                    {
                        new JobCategorySkill {
                            Skill = "A"
                        },
                        new JobCategorySkill {
                            Skill = "B"
                        },
                        new JobCategorySkill {
                            Skill = "C"
                        }
                    })
                }
            };


            sut.RemoveAnswersForCategory("GS");

            Assert.DoesNotContain(sut.RecordedAnswers, a => a.TraitCode == "A" || a.TraitCode == "B" || a.TraitCode == "C");
        }
        public void TryGetCategoryState_ReturnsTrue_IfCategory()
        {
            var sut = new FilteredAssessmentState
            {
                CurrentFilterAssessmentCode = "AC",
                JobCategoryStates           = new List <JobCategoryState>
                {
                    new JobCategoryState("AC", "Animal Care", "QS-1", new []
                    {
                        new JobCategorySkill {
                            Skill = "D", QuestionNumber = 4, QuestionId = "4"
                        },
                        new JobCategorySkill {
                            Skill = "A", QuestionNumber = 1, QuestionId = "1"
                        }
                    }, "1")
                }
            };

            Assert.True(sut.TryGetJobCategoryState("AC", out var cat));
            Assert.NotNull(cat);
            Assert.Equal("QS-1", cat.QuestionSetVersion);
        }
        public void GetAnswersForCategory_ReturnsEmptyArray_IfNoCategory()
        {
            var sut = new FilteredAssessmentState();

            Assert.Empty(sut.GetAnswersForCategory("AC"));
        }
        public void TryGetCategoryState_ReturnsFalse_IfNoCategory()
        {
            var sut = new FilteredAssessmentState();

            Assert.False(sut.TryGetJobCategoryState("GS", out var _));
        }