@@ -6,6 +6,7 @@ namespace PowerSync.Common.Tests.Client;
66
77using PowerSync . Common . Client ;
88using PowerSync . Common . Tests . Models ;
9+ using PowerSync . Common . Tests . Utils ;
910
1011/// <summary>
1112/// dotnet test -v n --framework net8.0 --filter "PowerSyncDatabaseTests"
@@ -678,96 +679,114 @@ await db.Execute(
678679 public async Task WatchSchemaResetTest ( )
679680 {
680681 var dbId = Guid . NewGuid ( ) . ToString ( ) ;
682+ var localDbName = $ "powerSyncWatch_{ dbId } .db";
681683 var db = new PowerSyncDatabase ( new ( )
682684 {
683685 Database = new SQLOpenOptions
684686 {
685- DbFilename = $ "powerSyncWatch_ { dbId } .db" ,
687+ DbFilename = localDbName ,
686688 } ,
687689 Schema = TestSchema . MakeOptionalSyncSchema ( false )
688690 } ) ;
689691
690- using var sem = new SemaphoreSlim ( 0 ) ;
691- long lastCount = 0 ;
692-
693- const string QUERY = "SELECT COUNT(*) AS count FROM assets" ;
694- var listener = db . Watch < CountResult > ( QUERY , null , new ( ) { Signal = testCts . Token } ) ;
695- _ = Task . Run ( async ( ) =>
692+ try
696693 {
697- await foreach ( var result in listener )
694+ using var sem = new SemaphoreSlim ( 0 ) ;
695+ long lastCount = 0 ;
696+
697+ const string QUERY = "SELECT COUNT(*) AS count FROM assets" ;
698+ var listener = db . Watch < CountResult > ( QUERY , null , new ( ) { Signal = testCts . Token } ) ;
699+ _ = Task . Run ( async ( ) =>
698700 {
699- if ( result . Length > 0 )
701+ await foreach ( var result in listener )
700702 {
701- lastCount = result [ 0 ] . count ;
703+ if ( result . Length > 0 )
704+ {
705+ lastCount = result [ 0 ] . count ;
706+ }
707+ sem . Release ( ) ;
702708 }
703- sem . Release ( ) ;
704- }
705- } ) ;
709+ } ) ;
706710
707- var resolved = await db . GetSourceTables ( QUERY , null ) ;
708- Assert . Single ( resolved ) ;
709- Assert . Contains ( "ps_data_local__local_assets" , resolved ) ;
711+ var resolved = await db . GetSourceTables ( QUERY , null ) ;
712+ Assert . Single ( resolved ) ;
713+ Assert . Contains ( "ps_data_local__local_assets" , resolved ) ;
710714
711- for ( int i = 0 ; i < 3 ; i ++ )
712- {
713- await db . Execute (
714- "insert into assets(id, description, make) values (?, ?, ?)" ,
715- [ Guid . NewGuid ( ) . ToString ( ) , "some desc" , "some make" ]
716- ) ;
717- Assert . True ( await sem . WaitAsync ( 100 ) ) ;
718- Assert . Equal ( i + 1 , lastCount ) ;
719- }
720- Assert . Equal ( 3 , lastCount ) ;
715+ for ( int i = 0 ; i < 3 ; i ++ )
716+ {
717+ await db . Execute (
718+ "insert into assets(id, description, make) values (?, ?, ?)" ,
719+ [ Guid . NewGuid ( ) . ToString ( ) , "some desc" , "some make" ]
720+ ) ;
721+ Assert . True ( await sem . WaitAsync ( 100 ) ) ;
722+ Assert . Equal ( i + 1 , lastCount ) ;
723+ }
724+ Assert . Equal ( 3 , lastCount ) ;
721725
722- await db . UpdateSchema ( TestSchema . MakeOptionalSyncSchema ( true ) ) ;
726+ await db . UpdateSchema ( TestSchema . MakeOptionalSyncSchema ( true ) ) ;
723727
724- resolved = await db . GetSourceTables ( QUERY ) ;
725- Assert . Single ( resolved ) ;
726- Assert . Contains ( "ps_data__assets" , resolved ) ;
728+ resolved = await db . GetSourceTables ( QUERY ) ;
729+ Assert . Single ( resolved ) ;
730+ Assert . Contains ( "ps_data__assets" , resolved ) ;
727731
728- Assert . True ( await sem . WaitAsync ( 100 ) ) ;
729- Assert . Equal ( 0 , lastCount ) ;
732+ Assert . True ( await sem . WaitAsync ( 100 ) ) ;
733+ Assert . Equal ( 0 , lastCount ) ;
730734
731- await db . Execute ( "insert into assets select * from inactive_local_assets" ) ;
732- Assert . True ( await sem . WaitAsync ( 500 ) ) ;
733- Assert . Equal ( 3 , lastCount ) ;
735+ await db . Execute ( "insert into assets select * from inactive_local_assets" ) ;
736+ Assert . True ( await sem . WaitAsync ( 500 ) ) ;
737+ Assert . Equal ( 3 , lastCount ) ;
734738
735- // Sanity check
736- testCts . Cancel ( ) ;
737- await Task . Delay ( 100 ) ;
739+ // Sanity check
740+ testCts . Cancel ( ) ;
741+ await Task . Delay ( 100 ) ;
738742
739- await db . Execute ( "delete from assets" ) ;
740- Assert . False ( await sem . WaitAsync ( 100 ) ) ;
741- Assert . Equal ( 3 , lastCount ) ;
743+ await db . Execute ( "delete from assets" ) ;
744+ Assert . False ( await sem . WaitAsync ( 100 ) ) ;
745+ Assert . Equal ( 3 , lastCount ) ;
746+ }
747+ finally
748+ {
749+ await db . Close ( ) ;
750+ DatabaseUtils . CleanDb ( localDbName ) ;
751+ }
742752 }
743753
744754 [ Fact ]
745755 public async Task Attributes_ColumnAliasing ( )
746756 {
757+ var localDbName = $ "PowerSyncAttributesTest-{ Guid . NewGuid ( ) : N} .db";
747758 var db = new PowerSyncDatabase ( new PowerSyncDatabaseOptions
748759 {
749- Database = new SQLOpenOptions { DbFilename = "PowerSyncAttributesTest.db" } ,
760+ Database = new SQLOpenOptions { DbFilename = localDbName } ,
750761 Schema = TestSchemaAttributes . AppSchema ,
751762 } ) ;
752- await db . DisconnectAndClear ( ) ;
763+ try
764+ {
765+ await db . DisconnectAndClear ( ) ;
753766
754- var id = Guid . NewGuid ( ) . ToString ( ) ;
755- var description = "Test description" ;
756- var completed = false ;
757- var createdAt = DateTimeOffset . Now ;
767+ var id = Guid . NewGuid ( ) . ToString ( ) ;
768+ var description = "Test description" ;
769+ var completed = false ;
770+ var createdAt = DateTimeOffset . Now ;
758771
759- await db . Execute (
760- "INSERT INTO todos(id, description, completed, created_at, list_id) VALUES(?, ?, ?, ?, uuid())" ,
761- [ id , description , completed , createdAt ]
762- ) ;
772+ await db . Execute (
773+ "INSERT INTO todos(id, description, completed, created_at, list_id) VALUES(?, ?, ?, ?, uuid())" ,
774+ [ id , description , completed , createdAt ]
775+ ) ;
763776
764- var results = await db . GetAll < Todo > ( "SELECT * FROM todos" ) ;
765- Assert . Single ( results ) ;
766- var row = results . First ( ) ;
767- Assert . Equal ( id , row . TodoId ) ;
768- Assert . Equal ( description , row . Description ) ;
769- Assert . Equal ( completed , row . Completed ) ;
770- Assert . Equal ( createdAt , row . CreatedAt ) ;
777+ var results = await db . GetAll < Todo > ( "SELECT * FROM todos" ) ;
778+ Assert . Single ( results ) ;
779+ var row = results . First ( ) ;
780+ Assert . Equal ( id , row . TodoId ) ;
781+ Assert . Equal ( description , row . Description ) ;
782+ Assert . Equal ( completed , row . Completed ) ;
783+ Assert . Equal ( createdAt , row . CreatedAt ) ;
784+ }
785+ finally
786+ {
787+ await db . Close ( ) ;
788+ DatabaseUtils . CleanDb ( localDbName ) ;
789+ }
771790 }
772791
773792 [ Fact ]
0 commit comments