Skip to content

Commit b12053e

Browse files
committed
Add tests
1 parent 48d90c6 commit b12053e

2 files changed

Lines changed: 39 additions & 15 deletions

File tree

PowerSync/PowerSync.Common/Client/PowerSyncDatabase.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -372,6 +372,7 @@ public async Task Connect(IPowerSyncBackendConnector connector, PowerSyncConnect
372372
public void UnsubscribeAllQueries()
373373
{
374374
watchSubscriptionCts.Cancel();
375+
watchSubscriptionCts.Dispose();
375376
watchSubscriptionCts = new();
376377
}
377378

@@ -819,7 +820,6 @@ void flushTableUpdates()
819820
});
820821

821822
CancellationTokenSource linkedCts;
822-
823823
if (options?.Signal.HasValue == true)
824824
{
825825
// Cancel on global CTS cancellation or user token cancellation

Tests/PowerSync/PowerSync.Common.Tests/Client/PowerSyncDatabaseTests.cs

Lines changed: 38 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -590,11 +590,7 @@ await db.Execute(
590590
Thread.Sleep(200);
591591
Assert.Equal(2, callCount);
592592

593-
// Cancel query
594593
subscription.Dispose();
595-
Thread.Sleep(200);
596-
597-
// Shouldn't call OnResult, hence callCount still == 2
598594
await db.Execute(
599595
"insert into assets(id, description, make) values (?, ?, ?)",
600596
[Guid.NewGuid().ToString(), "some desc", "some make"]
@@ -617,34 +613,62 @@ public async void WatchDisposableCustomTokenTest()
617613
{
618614
Signal = customTokenSource.Token
619615
});
620-
Thread.Sleep(500);
621-
622-
// Initial OnResult call
616+
Thread.Sleep(200);
623617
Assert.Equal(1, callCount);
624618

625619
await db.Execute(
626620
"insert into assets(id, description, make) values (?, ?, ?)",
627621
[Guid.NewGuid().ToString(), "some desc", "some make"]
628622
);
629-
Thread.Sleep(500);
630-
631-
// Calls OnResult again
623+
Thread.Sleep(200);
632624
Assert.Equal(2, callCount);
633625

634626
customTokenSource.Cancel();
635627
await db.Execute(
636628
"insert into assets(id, description, make) values (?, ?, ?)",
637629
[Guid.NewGuid().ToString(), "some desc", "some make"]
638630
);
639-
Thread.Sleep(500);
640-
641-
// Shouldn't call OnResult, hence same number
642-
Assert.Equal(2, callCount);
631+
Thread.Sleep(200);
632+
Assert.Equal(2, callCount); // Same value
643633
}
644634

645635
[Fact(Timeout = 2000)]
646636
public async void WatchMultipleCancelledTest()
647637
{
638+
int callCount = 0;
639+
var watchHandlerFactory = () => new WatchHandler<IdResult>
640+
{
641+
OnResult = (result) => callCount++,
642+
OnError = (ex) => Assert.Fail("An exception occurred: " + ex.ToString()),
643+
};
644+
645+
var query1 = await db.Watch("select id from assets", null, watchHandlerFactory());
646+
var query2 = await db.Watch("select id from customers", null, watchHandlerFactory());
647+
Thread.Sleep(200);
648+
Assert.Equal(2, callCount);
649+
650+
await db.Execute(
651+
"insert into assets(id, description, make) values (?, ?, ?)",
652+
[Guid.NewGuid().ToString(), "some desc", "some make"]
653+
);
654+
await db.Execute(
655+
"insert into assets(id, description, make) values (?, ?, ?)",
656+
[Guid.NewGuid().ToString(), "some desc", "some make"]
657+
);
658+
Thread.Sleep(200);
659+
Assert.Equal(4, callCount);
648660

661+
db.UnsubscribeAllQueries();
662+
663+
await db.Execute(
664+
"insert into assets(id, description, make) values (?, ?, ?)",
665+
[Guid.NewGuid().ToString(), "some desc", "some make"]
666+
);
667+
await db.Execute(
668+
"insert into assets(id, description, make) values (?, ?, ?)",
669+
[Guid.NewGuid().ToString(), "some desc", "some make"]
670+
);
671+
Thread.Sleep(200);
672+
Assert.Equal(4, callCount);
649673
}
650674
}

0 commit comments

Comments
 (0)