Files
git.stella-ops.org/src/Graph/__Tests/StellaOps.Graph.Api.Tests/DiffServiceTests.cs
StellaOps Bot 1c782897f7
Some checks failed
Docs CI / lint-and-preview (push) Has been cancelled
Mirror Thin Bundle Sign & Verify / mirror-sign (push) Has been cancelled
Signals CI & Image / signals-ci (push) Has been cancelled
up
2025-11-26 07:47:08 +02:00

58 lines
1.6 KiB
C#

using System.Collections.Generic;
using StellaOps.Graph.Api.Contracts;
using StellaOps.Graph.Api.Services;
using Xunit;
namespace StellaOps.Graph.Api.Tests;
public class DiffServiceTests
{
[Fact]
public async Task DiffAsync_EmitsAddedRemovedChangedAndStats()
{
var repo = new InMemoryGraphRepository();
var service = new InMemoryGraphDiffService(repo);
var request = new GraphDiffRequest
{
SnapshotA = "snapA",
SnapshotB = "snapB",
IncludeEdges = true,
IncludeStats = true
};
var lines = new List<string>();
await foreach (var line in service.DiffAsync("acme", request))
{
lines.Add(line);
}
Assert.Contains(lines, l => l.Contains("\"type\":\"node_added\"") && l.Contains("newlib"));
Assert.Contains(lines, l => l.Contains("\"type\":\"node_changed\"") && l.Contains("widget"));
Assert.Contains(lines, l => l.Contains("\"type\":\"edge_added\""));
Assert.Contains(lines, l => l.Contains("\"type\":\"stats\""));
}
[Fact]
public async Task DiffAsync_WhenSnapshotMissing_ReturnsError()
{
var repo = new InMemoryGraphRepository();
var service = new InMemoryGraphDiffService(repo);
var request = new GraphDiffRequest
{
SnapshotA = "snapA",
SnapshotB = "missing"
};
var lines = new List<string>();
await foreach (var line in service.DiffAsync("acme", request))
{
lines.Add(line);
}
Assert.Single(lines);
Assert.Contains("GRAPH_SNAPSHOT_NOT_FOUND", lines[0]);
}
}