Files
speckle-sharp-sdk/tests/Speckle.Core.Tests.Unit/Api/Operations/OperationsReceiveTests.cs
T
2024-06-21 08:42:42 +01:00

85 lines
2.4 KiB
C#

using NUnit.Framework;
using Speckle.Core.Models;
using Speckle.Core.Transports;
namespace Speckle.Core.Tests.Unit.Api.Operations;
[TestFixture, TestOf(nameof(Core.Api.Operations.Receive))]
public sealed partial class OperationsReceiveTests
{
public static IEnumerable<string> TestCases => s_testObjects.Select(x => x.GetId(true));
private static readonly Base[] s_testObjects =
{
new Base { ["string prop"] = "simple test case", ["numerical prop"] = 123, },
new Base { ["@detachedProp"] = new Base() { ["the best prop"] = "1234!" } },
new Base
{
["@detachedList"] = new List<Base> { new Base { ["the worst prop"] = null } },
["dictionaryProp"] = new Dictionary<string, Base> { ["dict"] = new Base { ["the best prop"] = "" } },
},
};
private MemoryTransport _testCaseTransport;
[OneTimeSetUp]
public async Task GlobalSetup()
{
_testCaseTransport = new MemoryTransport();
foreach (var b in s_testObjects)
{
await Core.Api.Operations.Send(b, _testCaseTransport, false);
}
}
[Test, TestCaseSource(nameof(TestCases))]
public async Task Receive_FromLocal_ExistingObjects(string id)
{
Base result = await Core.Api.Operations.Receive(id, null, _testCaseTransport);
Assert.That(result.id, Is.EqualTo(id));
}
[Test, TestCaseSource(nameof(TestCases))]
public async Task Receive_FromRemote_ExistingObjects(string id)
{
MemoryTransport localTransport = new();
Base result = await Core.Api.Operations.Receive(id, _testCaseTransport, localTransport);
Assert.That(result.id, Is.EqualTo(id));
}
[Test, TestCaseSource(nameof(TestCases))]
public async Task Receive_FromLocal_OnProgressActionCalled(string id)
{
bool wasCalled = false;
_ = await Core.Api.Operations.Receive(id, null, _testCaseTransport, onProgressAction: _ => wasCalled = true);
Assert.That(wasCalled, Is.True);
}
[Test, TestCaseSource(nameof(TestCases))]
public async Task Receive_FromLocal_OnTotalChildrenCountKnownCalled(string id)
{
bool wasCalled = false;
int children = 0;
var result = await Core.Api.Operations.Receive(
id,
null,
_testCaseTransport,
onTotalChildrenCountKnown: c =>
{
wasCalled = true;
children = c;
}
);
Assert.That(result.id, Is.EqualTo(id));
var expectedChildren = result.GetTotalChildrenCount() - 1;
Assert.That(wasCalled, Is.True);
Assert.That(children, Is.EqualTo(expectedChildren));
}
}