Files
speckle-sharp-sdk/tests/Speckle.Sdk.Tests.Unit/SQLite/SQLiteJsonCacheManagerTests.cs
T
Adam Hathcock 9695ec8c51 SpeckleHttp coverage (#244)
* Show code coverage for dev

* SpeckleHttp coverage and moved base stuff around

* add SpeckleHttpTests
2025-03-07 10:48:01 +00:00

83 lines
2.2 KiB
C#

using FluentAssertions;
using Speckle.Sdk.SQLite;
namespace Speckle.Sdk.Tests.Unit.SQLite;
public class SQLiteJsonCacheManagerTests : IDisposable
{
private readonly string _basePath = $"{Guid.NewGuid()}.db";
public void Dispose()
{
if (File.Exists(_basePath))
{
//don't disable the pool because we should be disabling it in the manager
GC.Collect();
GC.WaitForPendingFinalizers();
File.Delete(_basePath);
}
}
[Fact]
public void TestGetAll()
{
var data = new List<(string id, string json)>() { ("id1", "1"), ("id2", "2") };
using var manager = new SqLiteJsonCacheManager(_basePath, 2);
manager.SaveObjects(data);
var items = manager.GetAllObjects();
items.Count.Should().Be(data.Count);
var i = items.ToDictionary();
foreach (var (id, json) in data)
{
i.TryGetValue(id, out var j).Should().BeTrue();
j.Should().Be(json);
}
}
[Fact]
public void TestGet()
{
var data = new List<(string id, string json)>() { ("id1", "1"), ("id2", "2") };
using var manager = new SqLiteJsonCacheManager(_basePath, 2);
foreach (var d in data)
{
manager.SaveObject(d.id, d.json);
}
foreach (var d in data)
{
manager.SaveObject(d.id, d.json);
}
var items = manager.GetAllObjects();
items.Count.Should().Be(data.Count);
var id1 = data[0].id;
var json1 = manager.GetObject(id1);
json1.Should().Be(data[0].json);
manager.HasObject(id1).Should().BeTrue();
manager.UpdateObject(id1, "3");
json1 = manager.GetObject(id1);
json1.Should().Be("3");
manager.HasObject(id1).Should().BeTrue();
manager.DeleteObject(id1);
json1 = manager.GetObject(id1);
json1.Should().BeNull();
manager.HasObject(id1).Should().BeFalse();
manager.UpdateObject(id1, "3");
json1 = manager.GetObject(id1);
json1.Should().Be("3");
manager.HasObject(id1).Should().BeTrue();
var id2 = data[1].id;
var json2 = manager.GetObject(id2);
json2.Should().Be(data[1].json);
manager.HasObject(id2).Should().BeTrue();
manager.DeleteObject(id2);
json2 = manager.GetObject(id2);
json2.Should().BeNull();
manager.HasObject(id2).Should().BeFalse();
}
}