/src/NzbDrone.Core.Test/JobTests/JobRepositoryFixture.cs
https://github.com/NzbDrone/NzbDrone · C# · 182 lines · 0 code · 0 blank · 182 comment · 0 complexity · cbff0eb5efb0771e19cb85b77dd0988d MD5 · raw file
- /*
- using System;
- using System.Collections.Generic;
- using FizzWare.NBuilder;
- using FluentAssertions;
- using NUnit.Framework;
- using NzbDrone.Core.Jobs;
- using NzbDrone.Core.Lifecycle;
- using NzbDrone.Core.Test.Framework;
- namespace NzbDrone.Core.Test.JobTests
- {
- [TestFixture]
- public class JobRepositoryFixture : DbTest<JobRepository, JobDefinition>
- {
- FakeJob _fakeJob;
- DisabledJob _disabledJob;
- [SetUp]
- public void Setup()
- {
- _fakeJob = new FakeJob();
- _disabledJob = new DisabledJob();
- }
- private void Initialize()
- {
- Subject.Handle(new ApplicationStartedEvent());
- }
- [Test]
- public void Init_should_add_defintaions()
- {
- IEnumerable<IJob> baseFakeJobs = new List<IJob> { _fakeJob };
- Mocker.SetConstant(baseFakeJobs);
- Initialize();
- Storage.All().Should().HaveCount(1);
- StoredModel.Interval.Should().Be((Int32)_fakeJob.DefaultInterval.TotalMinutes);
- StoredModel.Name.Should().Be(_fakeJob.Name);
- StoredModel.Name.Should().Be(_fakeJob.GetType().ToString());
- StoredModel.LastExecution.Should().HaveYear(DateTime.Now.Year);
- StoredModel.LastExecution.Should().HaveMonth(DateTime.Now.Month);
- StoredModel.LastExecution.Should().HaveDay(DateTime.Today.Day);
- }
- [Test]
- public void inti_should_removed_jobs_that_no_longer_exist()
- {
- IEnumerable<IJob> fakeJobs = new List<IJob> { _fakeJob };
- Mocker.SetConstant(fakeJobs);
- var deletedJob = Builder<JobDefinition>.CreateNew()
- .With(c => c.Id = 0)
- .Build();
- Db.Insert(deletedJob);
- //Make sure deleted job is stored
- AllStoredModels.Should().HaveCount(1);
- AllStoredModels.Should().Contain(c => c.Name == deletedJob.Name);
- Initialize();
- //Make sure init has cleaned up the deleted job
- AllStoredModels.Should().HaveCount(1);
- AllStoredModels.Should().NotContain(c => c.Name == deletedJob.Name);
- }
- [Test]
- public void init_should_removed_jobs_that_no_longer_exist_even_with_same_name()
- {
- IEnumerable<IJob> fakeJobs = new List<IJob> { _fakeJob };
- Mocker.SetConstant(fakeJobs);
- var deletedJob = Builder<JobDefinition>.CreateNew()
- .With(c => c.Name = _fakeJob.Name)
- .With(c => c.Id = 0)
- .Build();
- Db.Insert(deletedJob);
- //Make sure deleted job is stored
- AllStoredModels.Should().HaveCount(1);
- AllStoredModels.Should().Contain(c => c.Name == deletedJob.Name);
- Initialize();
- //Make sure init has cleaned up the deleted job
- AllStoredModels.Should().HaveCount(1);
- AllStoredModels.Should().NotContain(c => c.Name == deletedJob.Name);
- }
- [Test]
- public void init_should_update_existing_job()
- {
- var oldJob = Builder<JobDefinition>.CreateNew()
- .With(c => c.Id = 0)
- .With(c => c.Name = "OldName")
- .With(c => c.Name = typeof(FakeJob).ToString())
- .With(c => c.Interval = 0)
- .With(c => c.Success = true)
- .With(c => c.LastExecution = DateTime.Now.AddDays(-7).Date)
- .Build();
- Storage.Insert(oldJob);
- var newJob = new FakeJob();
- IEnumerable<IJob> fakeJobs = new List<IJob> { newJob };
- Mocker.SetConstant(fakeJobs);
- Initialize();
- AllStoredModels.Should().HaveCount(1);
- StoredModel.Name.Should().Be(newJob.GetType().FullName);
- StoredModel.Name.Should().Be(newJob.Name);
- StoredModel.Interval.Should().Be((int)newJob.DefaultInterval.TotalMinutes);
- StoredModel.Success.Should().Be(oldJob.Success);
- StoredModel.LastExecution.Should().Be(oldJob.LastExecution);
- }
- [Test]
- public void pending_job_should_get_jobs_that_have_matured()
- {
- var oldJob = Builder<JobDefinition>.CreateNew()
- .With(c => c.Id = 0)
- .With(c => c.Interval = 1)
- .With(c => c.Success = true)
- .With(c => c.LastExecution = DateTime.Now.AddMinutes(-5))
- .Build();
- Storage.Insert(oldJob);
- Subject.GetPendingJobs().Should().HaveCount(1);
- }
- [Test]
- public void pending_job_should_not_get_jobs_that_havent_matured()
- {
- var recent = Builder<JobDefinition>.CreateNew()
- .With(c => c.Id = 0)
- .With(c => c.Interval = 60)
- .With(c => c.Success = true)
- .With(c => c.LastExecution = DateTime.Now.AddMinutes(-5))
- .Build();
- Storage.Insert(recent);
- Subject.GetPendingJobs().Should().BeEmpty();
- }
- /* [Test]
- public void disabled_jobs_arent_run_by_scheduler()
- {
- IEnumerable<IJob> BaseFakeJobs = new List<IJob> { disabledJob };
- Mocker.SetConstant(BaseFakeJobs);
- var jobProvider = Mocker.Resolve<JobController>();
- jobProvider.QueueScheduled();
- WaitForQueue();
- disabledJob.ExecutionCount.Should().Be(0);
- }#1#
- }
- }
- */