31 lines
956 B
C#
31 lines
956 B
C#
using QuestionsApi.Services;
|
|
using Xunit;
|
|
|
|
namespace QuestionsApi.Tests;
|
|
|
|
public sealed class DashboardTests
|
|
{
|
|
[Fact]
|
|
public void PercentageRoundsToNearestWholeNumber()
|
|
{
|
|
Assert.Equal(67, DashboardStore.Percentage(2, 3));
|
|
Assert.Equal(0, DashboardStore.Percentage(0, 0));
|
|
}
|
|
|
|
[Fact]
|
|
public void StreakIncludesYesterdayWhenUserHasNotStudiedToday()
|
|
{
|
|
var today = new DateTime(2026, 7, 18, 0, 0, 0, DateTimeKind.Utc);
|
|
var dates = new[] { today.AddDays(-1), today.AddDays(-2), today.AddDays(-3), today.AddDays(-5) };
|
|
Assert.Equal(3, DashboardStore.CalculateCurrentStreak(dates, today));
|
|
}
|
|
|
|
[Fact]
|
|
public void StreakStopsAtFirstMissingDay()
|
|
{
|
|
var today = new DateTime(2026, 7, 18, 0, 0, 0, DateTimeKind.Utc);
|
|
var dates = new[] { today, today.AddDays(-1), today.AddDays(-3) };
|
|
Assert.Equal(2, DashboardStore.CalculateCurrentStreak(dates, today));
|
|
}
|
|
}
|