Files
git.stella-ops.org/src/__Libraries/__Tests/StellaOps.Replay.Tests/FeedSnapshotLoaderTests.cs
2026-02-04 19:59:20 +02:00

49 lines
1.7 KiB
C#

using FluentAssertions;
using Microsoft.Extensions.Logging.Abstractions;
using StellaOps.Replay.Loaders;
using StellaOps.TestKit;
using Xunit;
namespace StellaOps.Replay.Tests;
public sealed class FeedSnapshotLoaderTests
{
[Trait("Category", TestCategories.Unit)]
[Fact]
public async Task LoadByDigestAsync_InvalidDigest_ThrowsFormatException()
{
var loader = new FeedSnapshotLoader(new FeedStorageStub(null), NullLogger<FeedSnapshotLoader>.Instance);
var digest = SnapshotTestData.CreateInvalidDigest('a');
var action = () => loader.LoadByDigestAsync(digest);
await action.Should().ThrowAsync<FormatException>();
}
[Trait("Category", TestCategories.Unit)]
[Fact]
public async Task LoadByDigestAsync_ShortDigest_ThrowsFormatException()
{
var loader = new FeedSnapshotLoader(new FeedStorageStub(null), NullLogger<FeedSnapshotLoader>.Instance);
var digest = new string('a', 63);
var action = () => loader.LoadByDigestAsync(digest);
await action.Should().ThrowAsync<FormatException>();
}
[Trait("Category", TestCategories.Unit)]
[Fact]
public async Task LoadByDigestAsync_DigestMismatch_ThrowsException()
{
var snapshot = SnapshotTestData.CreateFeedSnapshot(SnapshotTestData.CreateValidDigest('b'));
var actualDigest = SnapshotTestData.ComputeDigest(snapshot);
var expectedDigest = SnapshotTestData.CreateDifferentDigest(actualDigest);
var loader = new FeedSnapshotLoader(new FeedStorageStub(snapshot), NullLogger<FeedSnapshotLoader>.Instance);
var action = () => loader.LoadByDigestAsync(expectedDigest);
await action.Should().ThrowAsync<DigestMismatchException>();
}
}