Files
speckle-sharp-sdk/tests/Speckle.Core.Tests.Integration/Subscriptions/Streams.cs
T
2024-06-21 08:42:42 +01:00

114 lines
2.7 KiB
C#

using Speckle.Core.Api;
using Speckle.Core.Api.SubscriptionModels;
using Speckle.Core.Credentials;
namespace Speckle.Core.Tests.Integration.Subscriptions;
public class Streams : IDisposable
{
private Client _client;
private StreamInfo _streamAddedInfo;
private string _streamId;
private StreamInfo _streamRemovedInfo;
private StreamInfo _streamUpdatedInfo;
private Account _testUserAccount;
[OneTimeSetUp]
public async Task Setup()
{
_testUserAccount = await Fixtures.SeedUser();
_client = new Client(_testUserAccount);
}
[Test, Order(0)]
public async Task SubscribeStreamAdded()
{
_client.SubscribeUserStreamAdded();
_client.OnUserStreamAdded += Client_OnUserStreamAdded;
Thread.Sleep(1000); //let server catch-up
var streamInput = new StreamCreateInput { description = "Hello World", name = "Super Stream 01" };
var res = await _client.StreamCreate(streamInput);
_streamId = res;
Assert.That(res, Is.Not.Null);
await Task.Run(() =>
{
Thread.Sleep(1000); //let client catch-up
Assert.That(_streamAddedInfo, Is.Not.Null);
Assert.That(_streamAddedInfo.name, Is.EqualTo(streamInput.name));
});
}
private void Client_OnUserStreamAdded(object sender, StreamInfo e)
{
_streamAddedInfo = e;
}
[Test, Order(1)]
public async Task SubscribeStreamUpdated()
{
_client.SubscribeStreamUpdated(_streamId);
_client.OnStreamUpdated += Client_OnStreamUpdated;
Thread.Sleep(100); //let server catch-up
var streamInput = new StreamUpdateInput
{
id = _streamId,
description = "Hello World",
name = "Super Stream 01 EDITED"
};
var res = await _client.StreamUpdate(streamInput);
Assert.That(res, Is.True);
await Task.Run(() =>
{
Thread.Sleep(100); //let client catch-up
Assert.That(_streamUpdatedInfo, Is.Not.Null);
Assert.That(_streamUpdatedInfo.name, Is.EqualTo(streamInput.name));
});
}
private void Client_OnStreamUpdated(object sender, StreamInfo e)
{
_streamUpdatedInfo = e;
}
[Test, Order(2)]
public async Task SubscribeUserStreamRemoved()
{
_client.SubscribeUserStreamRemoved();
_client.OnUserStreamRemoved += Client_OnStreamRemoved;
;
Thread.Sleep(100); //let server catch-up
var res = await _client.StreamDelete(_streamId);
Assert.That(res, Is.True);
await Task.Run(() =>
{
Thread.Sleep(100); //let client catch-up
Assert.That(_streamRemovedInfo, Is.Not.Null);
Assert.That(_streamRemovedInfo.id, Is.EqualTo(_streamId));
});
}
private void Client_OnStreamRemoved(object sender, StreamInfo e)
{
_streamRemovedInfo = e;
}
public void Dispose()
{
_client?.Dispose();
}
}