public void When_got_two_further_control_measures_one_is_not_deleted_Then_should_not_be_able_to_delete()
        {
            //Given
            var riskAssessmentHazard = new MultiHazardRiskAssessmentHazard();
            var user = new UserForAuditing();
            var riskAssessmentFurtherActionTask = new MultiHazardRiskAssessmentFurtherControlMeasureTask();
            riskAssessmentFurtherActionTask.MarkForDelete(user);
            riskAssessmentHazard.AddFurtherActionTask(riskAssessmentFurtherActionTask, user);
            riskAssessmentHazard.AddFurtherActionTask(new MultiHazardRiskAssessmentFurtherControlMeasureTask(), user);

            //When
            var result = riskAssessmentHazard.CanDeleteHazard();

            //Then
            Assert.False(result);
        }
        public void Given_further_control_measure_tasks_and_no_review_tasks_then_CompletionDueDate_is_next_FCM_CompletionDueDate()
        {
            //given
            var expectedCompletionDueDate = new DateTime(2013, 4, 1);
            var riskAss = new Mock<MultiHazardRiskAssessment>() { CallBase = true };
            var hazard = new MultiHazardRiskAssessmentHazard() {Id = 124124};
            hazard.AddFurtherActionTask(new MultiHazardRiskAssessmentFurtherControlMeasureTask() { Id = 12312, Deleted = false, TaskCompletionDueDate = DateTime.Now }, null);
            hazard.AddFurtherActionTask(new MultiHazardRiskAssessmentFurtherControlMeasureTask() { Id = 1231234, Deleted = false, TaskCompletionDueDate = expectedCompletionDueDate }, null);

            var hazards = new List<MultiHazardRiskAssessmentHazard>() { hazard };

            riskAss.Setup(x => x.Hazards)
                .Returns(() => hazards);

            //THEN
            Assert.AreEqual(expectedCompletionDueDate, riskAss.Object.CompletionDueDate.Value);

        }
        public void Given_hazard_has_been_deleted_and_no_review_tasks_then_CompletionDueDate_is_null()
        {
            //given
            var riskAss = new Mock<MultiHazardRiskAssessment>() { CallBase = true };
            var hazard = new MultiHazardRiskAssessmentHazard() { Id = 124124 };
            hazard.AddFurtherActionTask(new MultiHazardRiskAssessmentFurtherControlMeasureTask() { Id = 12312, Deleted = false, TaskCompletionDueDate = DateTime.Now }, null);
            hazard.Deleted = true;

            var hazards = new List<MultiHazardRiskAssessmentHazard>() { hazard };

            riskAss.Setup(x => x.Hazards)
                .Returns(() => hazards);

            //THEN
            Assert.IsNull(riskAss.Object.CompletionDueDate);
        }
        public void Given_a_review_task_has_a_completion_due_date_after_the_next_further_control_measure_tasks_then_CompletionDueDate_is_the_next_FCM_completion_due_date()
        {
            //given
            var nextFCMCompletionDueDate = new DateTime(2013, 2, 16);
            var nextReviewDate = new DateTime(2013, 3, 4);
            var riskAss = new Mock<MultiHazardRiskAssessment>() { CallBase = true };
            var hazard = new MultiHazardRiskAssessmentHazard() { Id = 124124 };
            hazard.AddFurtherActionTask(new MultiHazardRiskAssessmentFurtherControlMeasureTask() { Id = 12312, Deleted = false, TaskCompletionDueDate = DateTime.Now }, null);
            hazard.AddFurtherActionTask(new MultiHazardRiskAssessmentFurtherControlMeasureTask() { Id = 1231234, Deleted = false, TaskCompletionDueDate = nextFCMCompletionDueDate }, null);
            riskAss.Object.Reviews = new List<RiskAssessmentReview>()
                                                 {

                                                     new RiskAssessmentReview() {Id = 2, CompletionDueDate = nextReviewDate}
                                                 };


            var hazards = new List<MultiHazardRiskAssessmentHazard>() { hazard };

            riskAss.Setup(x => x.Hazards)
                .Returns(() => hazards);

            //THEN
            Assert.AreEqual(nextFCMCompletionDueDate, riskAss.Object.CompletionDueDate.Value);

        }