You've already forked Sonarr
							
							
				mirror of
				https://github.com/Sonarr/Sonarr.git
				synced 2025-10-31 00:07:55 +02:00 
			
		
		
		
	Added NextScheduledRun to get the next scheduled run for a job, with a test.
This commit is contained in:
		| @@ -15,7 +15,6 @@ namespace NzbDrone.Core.Test | ||||
|         [Test] | ||||
|         public void Run_Jobs_Updates_Last_Execution() | ||||
|         { | ||||
|  | ||||
|             IEnumerable<IJob> fakeTimers = new List<IJob> { new FakeJob() }; | ||||
|             var mocker = new AutoMoqer(); | ||||
|  | ||||
| @@ -99,7 +98,6 @@ namespace NzbDrone.Core.Test | ||||
|             Assert.IsTrue(secondRun); | ||||
|         } | ||||
|  | ||||
|  | ||||
|         [Test] | ||||
|         //This test will confirm that the concurrency checks are rest | ||||
|         //after execution so the job can successfully run. | ||||
| @@ -122,7 +120,6 @@ namespace NzbDrone.Core.Test | ||||
|  | ||||
|         } | ||||
|  | ||||
|  | ||||
|         [Test] | ||||
|         //This test will confirm that the concurrency checks are rest | ||||
|         //after execution so the job can successfully run. | ||||
| @@ -144,7 +141,6 @@ namespace NzbDrone.Core.Test | ||||
|             Assert.IsTrue(secondRun); | ||||
|         } | ||||
|  | ||||
|  | ||||
|         [Test] | ||||
|         //This test will confirm that the concurrency checks are rest | ||||
|         //after execution so the job can successfully run. | ||||
| @@ -234,8 +230,6 @@ namespace NzbDrone.Core.Test | ||||
|             Assert.IsTrue(timers[0].Enable); | ||||
|         } | ||||
|  | ||||
|  | ||||
|  | ||||
|         [Test] | ||||
|         public void Init_Timers_sets_interval_0_to_disabled() | ||||
|         { | ||||
| @@ -267,8 +261,26 @@ namespace NzbDrone.Core.Test | ||||
|             Assert.IsFalse(timers[0].Enable); | ||||
|         } | ||||
|  | ||||
|         [Test] | ||||
|         public void Get_Next_Execution_Time() | ||||
|         { | ||||
|             IEnumerable<IJob> fakeTimers = new List<IJob> { new FakeJob() }; | ||||
|             var mocker = new AutoMoqer(); | ||||
|  | ||||
|             mocker.SetConstant(MockLib.GetEmptyRepository()); | ||||
|             mocker.SetConstant(fakeTimers); | ||||
|  | ||||
|             //Act | ||||
|             var timerProvider = mocker.Resolve<JobProvider>(); | ||||
|             timerProvider.Initialize(); | ||||
|             timerProvider.RunScheduled(); | ||||
|             var next = timerProvider.NextScheduledRun(typeof(FakeJob)); | ||||
|  | ||||
|             //Assert | ||||
|             var settings = timerProvider.All(); | ||||
|             Assert.IsNotEmpty(settings); | ||||
|             Assert.AreEqual(next, settings[0].LastExecution.AddMinutes(15)); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     public class FakeJob : IJob | ||||
|   | ||||
| @@ -78,7 +78,6 @@ namespace NzbDrone.Core.Providers.Jobs | ||||
|  | ||||
|             try | ||||
|             { | ||||
|  | ||||
|                 var pendingJobs = All().Where( | ||||
|                     t => t.Enable && | ||||
|                          (DateTime.Now - t.LastExecution) > TimeSpan.FromMinutes(t.Interval) | ||||
| @@ -218,6 +217,19 @@ namespace NzbDrone.Core.Providers.Jobs | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Gets the next scheduled run time for the job | ||||
|         /// (Estimated due to schedule timer) | ||||
|         /// </summary> | ||||
|         /// <returns>DateTime of next scheduled job</returns> | ||||
|         public virtual DateTime NextScheduledRun(Type jobType) | ||||
|         { | ||||
|             var job = All().Where(t => t.TypeName == jobType.ToString()).FirstOrDefault(); | ||||
|  | ||||
|             if (job == null) | ||||
|                 return DateTime.Now; | ||||
|  | ||||
|             return job.LastExecution.AddMinutes(job.Interval); | ||||
|         } | ||||
|     } | ||||
| } | ||||
| @@ -22,8 +22,7 @@ namespace NzbDrone.Web.Controllers | ||||
|         [ChildActionOnly] | ||||
|         public ActionResult Footer() | ||||
|         { | ||||
|             ViewData["RssTimer"] = DateTime.Now.ToString("yyyyMMddHHmmss"); | ||||
|             //ViewData["RssTimer"] = DateTime.Now.AddMinutes(61).AddSeconds(10).ToString("yyyyMMddHHmmss"); | ||||
|             ViewData["RssTimer"] = _jobProvider.NextScheduledRun(typeof(RssSyncJob)).ToString("yyyyMMddHHmmss"); | ||||
|             return PartialView(); | ||||
|         } | ||||
|     } | ||||
|   | ||||
| @@ -27,7 +27,6 @@ Global | ||||
| 	GlobalSection(ProjectConfigurationPlatforms) = postSolution | ||||
| 		{D12F7F2F-8A3C-415F-88FA-6DD061A84869}.Debug|Any CPU.ActiveCfg = Debug|x86 | ||||
| 		{D12F7F2F-8A3C-415F-88FA-6DD061A84869}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 | ||||
| 		{D12F7F2F-8A3C-415F-88FA-6DD061A84869}.Debug|Mixed Platforms.Build.0 = Debug|x86 | ||||
| 		{D12F7F2F-8A3C-415F-88FA-6DD061A84869}.Debug|x64.ActiveCfg = Debug|x86 | ||||
| 		{D12F7F2F-8A3C-415F-88FA-6DD061A84869}.Debug|x86.ActiveCfg = Debug|x86 | ||||
| 		{D12F7F2F-8A3C-415F-88FA-6DD061A84869}.Debug|x86.Build.0 = Debug|x86 | ||||
| @@ -69,7 +68,6 @@ Global | ||||
| 		{193ADD3B-792B-4173-8E4C-5A3F8F0237F0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||||
| 		{193ADD3B-792B-4173-8E4C-5A3F8F0237F0}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||||
| 		{193ADD3B-792B-4173-8E4C-5A3F8F0237F0}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU | ||||
| 		{193ADD3B-792B-4173-8E4C-5A3F8F0237F0}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU | ||||
| 		{193ADD3B-792B-4173-8E4C-5A3F8F0237F0}.Debug|x64.ActiveCfg = Debug|Any CPU | ||||
| 		{193ADD3B-792B-4173-8E4C-5A3F8F0237F0}.Debug|x86.ActiveCfg = Debug|Any CPU | ||||
| 		{193ADD3B-792B-4173-8E4C-5A3F8F0237F0}.Debug|x86.Build.0 = Debug|Any CPU | ||||
|   | ||||
		Reference in New Issue
	
	Block a user