public void When_mark_for_delete_for_task_set_as_completed_Then_should_throw_correct_exception()
        {
            //Given
            var task = new MultiHazardRiskAssessmentFurtherControlMeasureTask {TaskStatus = TaskStatus.Completed};
            var user = new UserForAuditing();

            //When
            //Then
            Assert.Throws<AttemptingToDeleteFurtherControlMeasureTaskThatIsCompletedException>(() => task.MarkForDelete(user));
        }
        public void When_mark_for_delete_Then_taskstatus_remains_the_same()
        {
            //Given
            var task = new MultiHazardRiskAssessmentFurtherControlMeasureTask {TaskStatus = TaskStatus.Outstanding};
            ;
            var user = new UserForAuditing();

            //When
            task.MarkForDelete(user);

            //Then
            Assert.That(task.TaskStatus, Is.EqualTo(TaskStatus.Outstanding));
        }
        public void When_mark_for_delete_Then_should_set_properties_correctly()
        {
            //Given
            var task = new MultiHazardRiskAssessmentFurtherControlMeasureTask();
            var user = new UserForAuditing();

            //When
            task.MarkForDelete(user);

            //Then
            Assert.That(task.Deleted, Is.True);
            Assert.That(task.LastModifiedOn.Value.Date, Is.EqualTo(DateTime.Today));
            Assert.That(task.LastModifiedBy, Is.EqualTo(user));
        }
        public void When_got_one_further_control_measures_but_is_deleted_Then_should_be_able_to_delete()
        {
            //Given
            var riskAssessmentHazard = new MultiHazardRiskAssessmentHazard();
            var user = new UserForAuditing();
            var riskAssessmentFurtherActionTask = new MultiHazardRiskAssessmentFurtherControlMeasureTask();
            riskAssessmentFurtherActionTask.MarkForDelete(user);
            riskAssessmentHazard.AddFurtherActionTask(riskAssessmentFurtherActionTask, user);

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

            //Then
            Assert.True(result);
        }
        public void Given_riskassessment_one_hazard_one_further_control_measure_which_is_deleted_Then_should_be_able_to_delete()
        {
            //Given
            var hazard = new Hazard();
            var user = new UserForAuditing();

            var furtherControlMeasure = new MultiHazardRiskAssessmentFurtherControlMeasureTask();
            furtherControlMeasure.MarkForDelete(user);

            var riskAssessment = GeneralRiskAssessment.Create("", "", default(long), null);
            var riskAssessmentHazard = MultiHazardRiskAssessmentHazard.Create(riskAssessment, hazard, user);
            riskAssessmentHazard.FurtherControlMeasureTasks.Add(furtherControlMeasure);
            riskAssessment.Hazards.Add(riskAssessmentHazard);

            //When
            var result = riskAssessment.HasUndeletedTasks();

            //Then
            Assert.False(result);
        }