58 lines
1.6 KiB
C#
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]);
|
|
}
|
|
}
|