From a7a7c4ab4968b94c71f9c12745e3f8a373af2870 Mon Sep 17 00:00:00 2001 From: "kay.one" Date: Wed, 14 Dec 2011 00:40:39 -0800 Subject: [PATCH] Fixed job provider existing job update bug. --- .../JobProviderTests/JobProviderFixture.cs | 16 +++++++++---- NzbDrone.Core/Jobs/JobProvider.cs | 23 ++++++++----------- 2 files changed, 22 insertions(+), 17 deletions(-) diff --git a/NzbDrone.Core.Test/ProviderTests/JobProviderTests/JobProviderFixture.cs b/NzbDrone.Core.Test/ProviderTests/JobProviderTests/JobProviderFixture.cs index 2094579bb..212befc59 100644 --- a/NzbDrone.Core.Test/ProviderTests/JobProviderTests/JobProviderFixture.cs +++ b/NzbDrone.Core.Test/ProviderTests/JobProviderTests/JobProviderFixture.cs @@ -313,7 +313,7 @@ namespace NzbDrone.Core.Test.ProviderTests.JobProviderTests WithRealDb(); var deletedJob = Builder.CreateNew() .With(c => c.Name = fakeJob.Name).Build(); - + Db.Insert(deletedJob); var jobProvider = Mocker.Resolve(); @@ -334,9 +334,12 @@ namespace NzbDrone.Core.Test.ProviderTests.JobProviderTests WithRealDb(); var initialFakeJob = Builder.CreateNew() - .With(c => c.Name = fakeJob.Name) + .With(c => c.Name = "NewName") .With(c => c.TypeName = fakeJob.GetType().ToString()) - .With(c => c.Interval = 60) + .With(c => c.Interval = 0) + .With(c => c.Enable = false) + .With(c => c.Success = true) + .With(c => c.LastExecution = DateTime.Now.AddDays(-7).Date) .Build(); var id = Convert.ToInt32(Db.Insert(initialFakeJob)); @@ -349,8 +352,13 @@ namespace NzbDrone.Core.Test.ProviderTests.JobProviderTests //Assert var registeredJobs = Db.Fetch(); registeredJobs.Should().HaveCount(1); + registeredJobs.First().TypeName.Should().Be(fakeJob.GetType().ToString()); + registeredJobs.First().Name.Should().Be(fakeJob.Name); registeredJobs.First().Interval.Should().Be(fakeJob.DefaultInterval); - registeredJobs.First().Id.Should().Be(id); + + registeredJobs.First().Enable.Should().Be(true); + registeredJobs.First().Success.Should().Be(initialFakeJob.Success); + registeredJobs.First().LastExecution.Should().Be(initialFakeJob.LastExecution); } [Test] diff --git a/NzbDrone.Core/Jobs/JobProvider.cs b/NzbDrone.Core/Jobs/JobProvider.cs index 6507f0120..ec6a10689 100644 --- a/NzbDrone.Core/Jobs/JobProvider.cs +++ b/NzbDrone.Core/Jobs/JobProvider.cs @@ -85,23 +85,20 @@ namespace NzbDrone.Core.Jobs foreach (var job in _jobs) { - var jobLocal = job; + var jobDefinition = currentJobs.SingleOrDefault(c => c.TypeName == job.GetType().ToString()); - var settings = new JobDefinition + if (jobDefinition == null) { - Enable = jobLocal.DefaultInterval > 0, - TypeName = job.GetType().ToString(), - Name = jobLocal.Name, - Interval = jobLocal.DefaultInterval, - LastExecution = DateTime.Now - }; - - if (currentJobs.Exists(c => c.TypeName == jobLocal.GetType().ToString())) - { - settings.Id = currentJobs.Single(c => c.TypeName == jobLocal.GetType().ToString()).Id; + jobDefinition = new JobDefinition(); + jobDefinition.TypeName = job.GetType().ToString(); + jobDefinition.LastExecution = DateTime.Now; } - SaveDefinition(settings); + jobDefinition.Enable = job.DefaultInterval > 0; + jobDefinition.Name = job.Name; + jobDefinition.Interval = job.DefaultInterval; + + SaveDefinition(jobDefinition); } }