Files
Gmao-app-win11/tests/App.Core.Tests/Licensing/TrialStateTests.cs
2026-09-10 16:43:09 +02:00

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);
}
}