35 lines
1.2 KiB
C#
35 lines
1.2 KiB
C#
using ZB.MOM.WW.LmxProxy.Client.Domain;
|
|
|
|
namespace ZB.MOM.WW.LmxProxy.Client.IntegrationTests;
|
|
|
|
public class SubscribeTests : IntegrationTestBase
|
|
{
|
|
[Fact]
|
|
public async Task Subscribe_ReceivesUpdates()
|
|
{
|
|
var received = new List<(string Tag, Vtq Vtq)>();
|
|
var receivedEvent = new TaskCompletionSource<bool>();
|
|
|
|
var subscription = await Client!.SubscribeAsync(
|
|
new[] { "TestChildObject.TestInt" },
|
|
(tag, vtq) =>
|
|
{
|
|
received.Add((tag, vtq));
|
|
if (received.Count >= 3)
|
|
receivedEvent.TrySetResult(true);
|
|
},
|
|
ex => receivedEvent.TrySetException(ex));
|
|
|
|
// Wait up to 30 seconds for at least 3 updates
|
|
var completed = await Task.WhenAny(receivedEvent.Task, Task.Delay(TimeSpan.FromSeconds(30)));
|
|
subscription.Dispose();
|
|
|
|
Assert.True(received.Count >= 1, $"Expected at least 1 update, got {received.Count}");
|
|
|
|
var first = received[0];
|
|
Assert.Equal("TestChildObject.TestInt", first.Tag);
|
|
Assert.NotNull(first.Vtq.Value);
|
|
Assert.True(first.Vtq.Timestamp > DateTime.MinValue);
|
|
}
|
|
}
|