114 lines
2.7 KiB
C#
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();
|
|
}
|
|
}
|