コード例 #1
0
        public void given_gra_task_is_marked_as_send_task_notification_and_employee_is_risk_assessor_when_executes_then_email_sent()
        {
            //given
            var employee = new Employee() { Id = Guid.NewGuid(), CompanyId = 33748, NotificationType = NotificationType.Daily, NotificationFrequecy = null };
            employee.UpdateRiskAssessorDetails(true, false, false, false, null);
            var overdueGRATask = CreateTask();
            overdueGRATask.SendTaskOverdueNotification = true;
            overdueGRATask.RiskAssessment.RiskAssessor = employee.RiskAssessor;

            var employees = new List<Employee>() { employee };

            _taskEmployeeQuery.Setup(x => x.Execute())
                .Returns(() => employees);

            _overdueGRATaskQuery.Setup(x => x.Execute(It.IsAny<Guid>(), _session.Object))
                .Returns(() => new List<MultiHazardRiskAssessmentFurtherControlMeasureTask>() { overdueGRATask });

            _overduePRATaskQuery.Setup(x => x.Execute(It.IsAny<Guid>(), _session.Object))
                .Returns(() => new List<MultiHazardRiskAssessmentFurtherControlMeasureTask>() { });

            SendEmployeeDigestEmail serviceBusCommand = null;
            _bus.Setup(x => x.Send(It.IsAny<SendEmployeeDigestEmail>()))
                .Callback<object[]>(p1 => serviceBusCommand = (SendEmployeeDigestEmail)p1[0]);

            var baseTime = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 0, 30, 0);
            ConfigurationManager.AppSettings["EscalationService_LastSuccessfulExecutionTime"] = baseTime.AddDays(-2).ToString();
            var target = GetTarget();


            //when
            target.Execute();

            //then
            _bus.Verify(x => x.Send(It.IsAny<SendEmployeeDigestEmail>()), Times.Once());
            Assert.That(serviceBusCommand.GeneralRiskAssessmentsOverdueTasks.Count, Is.EqualTo(1));
            Assert.That(serviceBusCommand.PersonalRiskAssessmentTasksOverdue.Count, Is.EqualTo(0));
        }