public void WhenJobIsScheduledAndNotExecuting_GetJobStatus_ReturnsIdle()
        {
            // Arrange.
            const string processName = "TestProcess";
            var syncGuid = Guid.Parse("DF1F8724-297C-45AE-8E70-B924FD375620");
            var jobName = syncGuid.ToString();

            var jobDetail = new JobDetail(jobName, QuartzScheduler.QuartzGroupName, typeof(SyncProcessWorker));

            var trigger = Mock.Create<Trigger>(Behavior.CallOriginal);
            Mock.Arrange(() => trigger.Group).Returns(QuartzScheduler.QuartzGroupName);

            var scheduler = Mock.Create<IScheduler>(Behavior.CallOriginal);
            Mock.Arrange(() => scheduler.GetJobDetail(jobName, QuartzScheduler.QuartzGroupName)).Returns(jobDetail);
            Mock.Arrange(() => scheduler.GetCurrentlyExecutingJobs()).Returns(new List<JobExecutionContext>());
            Mock.Arrange(() => scheduler.GetTriggersOfJob(jobName, QuartzScheduler.QuartzGroupName)).Returns(new[] { trigger });

            var logger = Mock.Create<ILogger>(Behavior.CallOriginal);
            var target = new DummyQuartzScheduler { Logger = logger };
            target.SetScheduler(scheduler);

            // Act.
            var result = target.GetJobStatus(processName, syncGuid);

            // Assert.
            Assert.AreEqual(ESyncJobStatus.Idle, result);
            Mock.Assert(() => logger.Log(LogSeverity.Error, Arg.IsAny<string>(), Arg.IsAny<Exception>()), Occurs.Never());
        }
        public void WhenJobIsNotFound_GetJobStatus_ReturnsNotPublished()
        {
            // Arrange.
            const string processName = "TestProcess";
            var syncGuid = Guid.Parse("DF1F8724-297C-45AE-8E70-B924FD375620");
            var jobName = syncGuid.ToString();

            var scheduler = Mock.Create<IScheduler>(Behavior.CallOriginal);
            Mock.Arrange(() => scheduler.GetJobDetail(jobName, QuartzScheduler.QuartzGroupName)).Returns(null as JobDetail);

            var logger = Mock.Create<ILogger>(Behavior.CallOriginal);
            var target = new DummyQuartzScheduler { Logger = logger };
            target.SetScheduler(scheduler);

            // Act.
            var result = target.GetJobStatus(processName, syncGuid);

            // Assert.
            Assert.AreEqual(ESyncJobStatus.NotPublished, result);
            Mock.Assert(() => logger.Log(LogSeverity.Error, Arg.IsAny<string>(), Arg.IsAny<Exception>()), Occurs.Never());
        }