public void GetJobDetails_ForExistingJob_ReturnsCorrectInfo()
        {
            IJobDetail job = GetMockJob("job1", "SOD");

            var            trigger     = MockRepository.GenerateMock <ITrigger>();
            DateTimeOffset triggerTime = new DateTimeOffset(DateTime.UtcNow.AddMinutes(5));

            trigger.Expect(t => t.GetNextFireTimeUtc()).Return(triggerTime).Repeat.Twice();
            var triggers = new List <ITrigger>()
            {
                trigger
            };

            _mockScheduler.Expect(s => s.GetJobDetail(Arg <JobKey> .Is.TypeOf)).Return(job);
            _mockScheduler.Expect(s => s.GetTriggersOfJob(Arg <JobKey> .Is.TypeOf)).Return(triggers);

            var result = _interactor.GetJobDetails("SOD.job1");

            Assert.AreEqual("SOD.job1", result.Name);
            Assert.AreEqual("this does something", result.Description);

            bool isLocalInDaylightSavingTime = TimeZoneInfo.Local.IsDaylightSavingTime(triggerTime.LocalDateTime);
            var  localTimeZoneName           = isLocalInDaylightSavingTime ? TimeZoneInfo.Local.DaylightName : TimeZoneInfo.Local.StandardName;

            Assert.IsTrue(result.NextRunAt.StartsWith(triggerTime.ToLocalTime().ToString("F") + " " + localTimeZoneName));
            Assert.AreEqual(2, result.Properties.Count);
            Assert.AreEqual("something", result.Properties.FirstOrDefault(p => p.Key == "prop1").Value);
            Assert.AreEqual("something else", result.Properties.FirstOrDefault(p => p.Key == "prop2").Value);

            job.VerifyAllExpectations();
            trigger.VerifyAllExpectations();
        }
        public void GetJobNames_ForPresentJobs_ReturnsNames()
        {
            _mockScheduler.Expect(s => s.GetJobKeys(GroupMatcher <JobKey> .AnyGroup()))
            .Return(new Quartz.Collection.HashSet <JobKey>()
            {
                JobKey.Create("job1", "SOD"), JobKey.Create("job2", "SOD")
            });

            IJobDetail job1 = GetMockJob("job1", "SOD");
            IJobDetail job2 = GetMockJob("job2", "SOD");

            var trigger = MockRepository.GenerateMock <ITrigger>();

            trigger.Expect(t => t.GetNextFireTimeUtc()).Return(new DateTimeOffset(DateTime.UtcNow.AddMinutes(5))).Repeat.Twice();
            trigger.Expect(t => t.Key).Return(new TriggerKey("someKey")).Repeat.Twice();
            var triggers = new List <ITrigger>()
            {
                trigger
            };

            _mockScheduler.Expect(s => s.GetJobDetail(Arg <JobKey> .Is.TypeOf)).Return(job1).Repeat.Once();
            _mockScheduler.Expect(s => s.GetJobDetail(Arg <JobKey> .Is.TypeOf)).Return(job2).Repeat.Once();
            _mockScheduler.Expect(s => s.GetTriggersOfJob(Arg <JobKey> .Is.TypeOf)).Return(triggers).Repeat.Times(4);
            _mockScheduler.Expect(s => s.GetTriggerState(Arg <TriggerKey> .Is.TypeOf)).Return(TriggerState.Normal).Repeat.Twice();

            var result = _interactor.GetJobs();

            Assert.AreEqual(2, result.Count);
            Assert.AreEqual("SOD.job1", result[0].Name);
            Assert.AreEqual("SOD.job2", result[1].Name);

            job1.VerifyAllExpectations();
            job2.VerifyAllExpectations();
        }
 public void TearDown()
 {
     _context.VerifyAllExpectations();
     _scheduler.VerifyAllExpectations();
     _jobDetail.VerifyAllExpectations();
     _testLogger.Clear();
 }