56 lines
1.8 KiB
C#
56 lines
1.8 KiB
C#
using App.Core.Services.Licensing;
|
|
|
|
namespace App.Core.Tests.Licensing;
|
|
|
|
public class TrialStateTests
|
|
{
|
|
[Fact]
|
|
public void GetDaysRemaining_OnInstallDay_Returns30()
|
|
{
|
|
var installDate = new DateTime(2026, 1, 1, 0, 0, 0, DateTimeKind.Utc);
|
|
var state = new TrialState(installDate, "hash", installDate);
|
|
|
|
Assert.Equal(30, state.GetDaysRemaining(installDate));
|
|
}
|
|
|
|
[Fact]
|
|
public void GetDaysRemaining_AfterFifteenDays_Returns15()
|
|
{
|
|
var installDate = new DateTime(2026, 1, 1, 0, 0, 0, DateTimeKind.Utc);
|
|
var state = new TrialState(installDate, "hash", installDate);
|
|
|
|
Assert.Equal(15, state.GetDaysRemaining(installDate.AddDays(15)));
|
|
}
|
|
|
|
[Fact]
|
|
public void GetDaysRemaining_NeverGoesNegative()
|
|
{
|
|
var installDate = new DateTime(2026, 1, 1, 0, 0, 0, DateTimeKind.Utc);
|
|
var state = new TrialState(installDate, "hash", installDate);
|
|
|
|
Assert.Equal(0, state.GetDaysRemaining(installDate.AddDays(90)));
|
|
}
|
|
|
|
[Fact]
|
|
public void IsExpired_ExactlyOnDay30_IsTrue()
|
|
{
|
|
var installDate = new DateTime(2026, 1, 1, 0, 0, 0, DateTimeKind.Utc);
|
|
var state = new TrialState(installDate, "hash", installDate);
|
|
|
|
Assert.True(state.IsExpired(installDate.AddDays(30)));
|
|
Assert.False(state.IsExpired(installDate.AddDays(29)));
|
|
}
|
|
|
|
[Fact]
|
|
public void WithUpdatedLastRun_DoesNotChangeInstallDate()
|
|
{
|
|
var installDate = new DateTime(2026, 1, 1, 0, 0, 0, DateTimeKind.Utc);
|
|
var state = new TrialState(installDate, "hash", installDate);
|
|
|
|
var updated = state.WithUpdatedLastRun(installDate.AddDays(5));
|
|
|
|
Assert.Equal(installDate, updated.InstallDateUtc);
|
|
Assert.Equal(installDate.AddDays(5), updated.LastRunTimestampUtc);
|
|
}
|
|
}
|