using Data.SeaHavenIndustries; using FluentAssertions; using Microsoft.EntityFrameworkCore; using SeaHaven.DataServices.Implementation; using SeaHaven.Services.Implementation; using Xunit; namespace Api.SeaHavenIndustries.Tests; public class DashboardServiceTests { private static ApplicationDbContext NewContext() { var options = new DbContextOptionsBuilder() .UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString()) .Options; return new ApplicationDbContext(options); } private static DashboardService NewService(ApplicationDbContext ctx) => new(new DashboardDataService(ctx)); private static WorkOrder Wo(string? status, bool? isTemplate = false, string? assignTo = null) => new() { Status = status, istemplate = isTemplate, AssignTo = assignTo }; [Fact] public async Task GetStatsAsync_CountsByStatusExcludingTemplates() { using var ctx = NewContext(); ctx.workOrders.AddRange( Wo("Open", isTemplate: false), Wo("Open", isTemplate: false, assignTo: "u1"), Wo("In Progress"), Wo("On Hold"), Wo("Done"), Wo("Done"), Wo("Open", isTemplate: true), Wo("Cancelled", isTemplate: false) ); ctx.SaveChanges(); var stats = await NewService(ctx).GetStatsAsync(CancellationToken.None); stats.Total.Should().Be(7); stats.Open.Should().Be(4); stats.NotDispatched.Should().Be(1); stats.Completed.Should().Be(2); } }