Consume ticket overview capabilities separately

This commit is contained in:
Meik
2026-07-20 09:47:17 +02:00
parent 21e9b85be7
commit 1a3bef9eeb
9 changed files with 93 additions and 47 deletions

View File

@@ -1,3 +1,4 @@
using C4IT.FASD.Cockpit.Communication;
using FasdDesktopUi.Basics.Services;
using FasdDesktopUi.Basics.Services.Models;
@@ -117,7 +118,6 @@ public class TicketOverviewUpdateServiceTest
var communication = new FakeCommunication();
communication.SetCounts(TileScope.Personal, new Dictionary<string, int>(StringComparer.OrdinalIgnoreCase)
{
["TicketAndServiceRequestsEnabled"] = 1,
["ServiceRequestsNew"] = 2
});
communication.SetCounts(TileScope.Role, new Dictionary<string, int>(StringComparer.OrdinalIgnoreCase)
@@ -150,10 +150,7 @@ public class TicketOverviewUpdateServiceTest
Assert.True(service.TicketAndServiceRequestsEnabled);
Assert.Equal(0, availabilityChanges);
communication.SetCounts(TileScope.Personal, new Dictionary<string, int>(StringComparer.OrdinalIgnoreCase)
{
["TicketAndServiceRequestsEnabled"] = 0
});
communication.SetCapability(TileScope.Personal, false);
await service.FetchAsync(TileScope.Personal);
Assert.False(service.TicketAndServiceRequestsEnabled);
@@ -199,18 +196,27 @@ public class TicketOverviewUpdateServiceTest
private sealed class FakeCommunication : ITicketOverviewCommunication
{
private Dictionary<string, int> _personalCounts = new Dictionary<string, int>(StringComparer.OrdinalIgnoreCase);
private Dictionary<string, int> _roleCounts = new Dictionary<string, int>(StringComparer.OrdinalIgnoreCase);
private cF4sdTicketOverviewCountsResult _personalResult = new cF4sdTicketOverviewCountsResult();
private cF4sdTicketOverviewCountsResult _roleResult = new cF4sdTicketOverviewCountsResult();
public bool IsDemo()
{
return false;
}
public Task<Dictionary<string, int>> GetTicketOverviewCounts(string[] overviewKeys, bool useRoleScope)
public Task<cF4sdTicketOverviewCountsResult> GetTicketOverviewCounts(string[] overviewKeys, bool useRoleScope)
{
var source = useRoleScope ? _roleCounts : _personalCounts;
return Task.FromResult(new Dictionary<string, int>(source, StringComparer.OrdinalIgnoreCase));
var source = useRoleScope ? _roleResult : _personalResult;
return Task.FromResult(new cF4sdTicketOverviewCountsResult
{
Counts = new Dictionary<string, int>(source.Counts, StringComparer.OrdinalIgnoreCase),
Capabilities = source.Capabilities == null
? null
: new cF4sdTicketOverviewCapabilities
{
TicketAndServiceRequestsEnabled = source.Capabilities.TicketAndServiceRequestsEnabled
}
});
}
public void RegisterGeneratedTicket(FasdCockpitCommunicationDemo.DemoTicketRecord record)
@@ -225,13 +231,22 @@ public class TicketOverviewUpdateServiceTest
if (scope == TileScope.Role)
{
_roleCounts = copy;
_roleResult.Counts = copy;
}
else
{
_personalCounts = copy;
_personalResult.Counts = copy;
}
}
public void SetCapability(TileScope scope, bool enabled)
{
var result = scope == TileScope.Role ? _roleResult : _personalResult;
result.Capabilities = new cF4sdTicketOverviewCapabilities
{
TicketAndServiceRequestsEnabled = enabled
};
}
}
private sealed class FakeDispatcher : ITicketOverviewDispatcher