Files
Umbraco-CMS/tests/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/RecurringHostedServiceBaseTests.cs
Bjarke Berg 0f1c2f7022 Ensure no management api for v12 (#14197)
* Remove management api

* Remove actual files
2023-05-04 13:32:41 +02:00

62 lines
2.4 KiB
C#

// Copyright (c) Umbraco.
// See LICENSE for more details.
using Microsoft.Extensions.Logging;
using Moq;
using NUnit.Framework;
using Umbraco.Cms.Core.Configuration;
using Umbraco.Cms.Infrastructure.HostedServices;
namespace Umbraco.Cms.Tests.UnitTests.Umbraco.Infrastructure.HostedServices;
[TestFixture]
public class RecurringHostedServiceBaseTests
{
[TestCase("30 12 * * *", 30)]
[TestCase("15 18 * * *", (60 * 6) + 15)]
[TestCase("0 3 * * *", 60 * 15)]
[TestCase("0 3 2 * *", (24 * 60 * 1) + (60 * 15))]
[TestCase("0 6 * * 3", (24 * 60 * 3) + (60 * 18))]
public void Returns_Notification_Delay_From_Provided_Time(string firstRunTime, int expectedDelayInMinutes)
{
var cronTabParser = new NCronTabParser();
var logger = Mock.Of<ILogger>();
var now = new DateTime(2020, 10, 31, 12, 0, 0);
var result = RecurringHostedServiceBase.GetDelay(firstRunTime, cronTabParser, logger, now, TimeSpan.Zero);
Assert.AreEqual(expectedDelayInMinutes, result.TotalMinutes);
}
[Test]
public void Returns_Notification_Delay_From_Default_When_Provided_Time_Too_Close_To_Current_Time()
{
var firstRunTime = "30 12 * * *";
var cronTabParser = new NCronTabParser();
var logger = Mock.Of<ILogger>();
var now = new DateTime(2020, 10, 31, 12, 25, 0);
var defaultDelay = TimeSpan.FromMinutes(10);
var result = RecurringHostedServiceBase.GetDelay(firstRunTime, cronTabParser, logger, now, defaultDelay);
Assert.AreEqual(defaultDelay.TotalMinutes, result.TotalMinutes);
}
[Test]
public void Logs_And_Returns_Notification_Delay_From_Default_When_Provided_Time_Is_Not_Valid()
{
var firstRunTime = "invalid";
var cronTabParser = new NCronTabParser();
var logger = new Mock<ILogger>();
var now = new DateTime(2020, 10, 31, 12, 25, 0);
var defaultDelay = TimeSpan.FromMinutes(10);
var result = RecurringHostedServiceBase.GetDelay(firstRunTime, cronTabParser, logger.Object, now, defaultDelay);
Assert.AreEqual(defaultDelay, result);
logger.Verify(
logger => logger.Log(
It.Is<LogLevel>(y => y == LogLevel.Warning),
It.IsAny<EventId>(),
It.IsAny<It.IsAnyType>(),
It.IsAny<Exception>(),
It.IsAny<Func<It.IsAnyType, Exception, string>>()),
Times.Once);
}
}