@@ -44,26 +44,18 @@ private async Task ResetDB(PowerSyncDatabase db)
4444 DatabaseUtils . CleanDb ( db . Database . Name ) ;
4545 }
4646
47- [ Fact ]
48- public async Task IncludeMetadataTest ( )
47+ private async Task WithCustomAssetOptions ( TableOptions options , Func < PowerSyncDatabase , Task > test )
4948 {
50- var localDbName = $ "IncludeMetadataTest -{ Guid . NewGuid ( ) : N} .db";
49+ var localDbName = $ "crud-custom -{ Guid . NewGuid ( ) : N} .db";
5150 var db = new PowerSyncDatabase ( new PowerSyncDatabaseOptions
5251 {
5352 Database = new SQLOpenOptions { DbFilename = localDbName } ,
54- Schema = TestSchema . GetSchemaWithCustomAssetOptions ( new TableOptions
55- {
56- TrackMetadata = true
57- } ) ,
53+ Schema = TestSchema . GetSchemaWithCustomAssetOptions ( options ) ,
5854 } ) ;
5955 try
6056 {
6157 await ResetDB ( db ) ;
62-
63- await db . Execute ( "INSERT INTO assets (id, description, _metadata) VALUES(uuid(), 'xxxx', 'so meta');" ) ;
64-
65- var batch = await db . GetNextCrudTransaction ( ) ;
66- Assert . Equal ( "so meta" , batch ? . Crud [ 0 ] . Metadata ) ;
58+ await test ( db ) ;
6759 }
6860 finally
6961 {
@@ -73,55 +65,41 @@ public async Task IncludeMetadataTest()
7365 }
7466
7567 [ Fact ]
76- public async Task IncludeOldValuesTest ( )
77- {
78- var localDbName = $ "IncludeOldValuesTest-{ Guid . NewGuid ( ) : N} .db";
79- var db = new PowerSyncDatabase ( new PowerSyncDatabaseOptions
68+ public Task IncludeMetadataTest ( ) => WithCustomAssetOptions (
69+ new TableOptions { TrackMetadata = true } ,
70+ async db =>
8071 {
81- Database = new SQLOpenOptions { DbFilename = localDbName } ,
82- Schema = TestSchema . GetSchemaWithCustomAssetOptions ( new TableOptions
83- {
84- TrackPreviousValues = new TrackPreviousOptions ( )
85- } ) ,
72+ await db . Execute ( "INSERT INTO assets (id, description, _metadata) VALUES(uuid(), 'xxxx', 'so meta');" ) ;
73+
74+ var batch = await db . GetNextCrudTransaction ( ) ;
75+ Assert . Equal ( "so meta" , batch ? . Crud [ 0 ] . Metadata ) ;
8676 } ) ;
87- try
88- {
89- await ResetDB ( db ) ;
9077
78+ [ Fact ]
79+ public Task IncludeOldValuesTest ( ) => WithCustomAssetOptions (
80+ new TableOptions { TrackPreviousValues = new TrackPreviousOptions ( ) } ,
81+ async db =>
82+ {
9183 await db . Execute ( "INSERT INTO assets (id, description) VALUES(?, ?);" , [ "a185b7e1-dffa-4a9a-888c-15c0f0cac4b3" , "entry" ] ) ;
9284 await db . Execute ( "DELETE FROM ps_crud;" ) ;
9385 await db . Execute ( "UPDATE assets SET description = ?" , [ "new name" ] ) ;
9486
9587 var batch = await db . GetNextCrudTransaction ( ) ;
9688 Assert . True ( batch ? . Crud [ 0 ] . PreviousValues ? . ContainsKey ( "description" ) ) ;
9789 Assert . Equal ( "entry" , batch ? . Crud [ 0 ] . PreviousValues ? [ "description" ] ) ;
98- }
99- finally
100- {
101- // await db.Close();
102- // DatabaseUtils.CleanDb(localDbName);
103- }
104- }
90+ } ) ;
10591
10692 [ Fact ]
107- public async Task IncludeOldValuesWithColumnFilterTest ( )
108- {
109- var localDbName = $ "IncludeOldValuesWithColumnFilterTest-{ Guid . NewGuid ( ) : N} .db";
110- var db = new PowerSyncDatabase ( new PowerSyncDatabaseOptions
93+ public Task IncludeOldValuesWithColumnFilterTest ( ) => WithCustomAssetOptions (
94+ new TableOptions
11195 {
112- Database = new SQLOpenOptions { DbFilename = localDbName } ,
113- Schema = TestSchema . GetSchemaWithCustomAssetOptions ( new TableOptions
96+ TrackPreviousValues = new TrackPreviousOptions
11497 {
115- TrackPreviousValues = new TrackPreviousOptions
116- {
117- Columns = new List < string > { "description" }
118- }
119- } ) ,
120- } ) ;
121- try
98+ Columns = new List < string > { "description" }
99+ }
100+ } ,
101+ async db =>
122102 {
123- await ResetDB ( db ) ;
124-
125103 await db . Execute ( "INSERT INTO assets (id, description, make) VALUES(?, ?, ?);" , [ "a185b7e1-dffa-4a9a-888c-15c0f0cac4b3" , "entry" , "make1" ] ) ;
126104 await db . Execute ( "DELETE FROM ps_crud;" ) ;
127105 await db . Execute ( "UPDATE assets SET description = ?, make = ?" , [ "new name" , "make2" ] ) ;
@@ -130,34 +108,20 @@ public async Task IncludeOldValuesWithColumnFilterTest()
130108 Assert . NotNull ( batch ? . Crud [ 0 ] . PreviousValues ) ;
131109 Assert . Equal ( "entry" , batch ? . Crud [ 0 ] . PreviousValues ? [ "description" ] ) ;
132110 Assert . False ( batch ? . Crud [ 0 ] . PreviousValues ! . ContainsKey ( "make" ) ) ;
133- }
134- finally
135- {
136- await db . Close ( ) ;
137- DatabaseUtils . CleanDb ( localDbName ) ;
138- }
139- }
111+ } ) ;
140112
141113
142114 [ Fact ]
143- public async Task IncludeOldValuesWhenChangedTest ( )
144- {
145- var localDbName = $ "IncludeOldValuesWhenChangedTest-{ Guid . NewGuid ( ) : N} .db";
146- var db = new PowerSyncDatabase ( new PowerSyncDatabaseOptions
115+ public Task IncludeOldValuesWhenChangedTest ( ) => WithCustomAssetOptions (
116+ new TableOptions
147117 {
148- Database = new SQLOpenOptions { DbFilename = localDbName } ,
149- Schema = TestSchema . GetSchemaWithCustomAssetOptions ( new TableOptions
118+ TrackPreviousValues = new TrackPreviousOptions
150119 {
151- TrackPreviousValues = new TrackPreviousOptions
152- {
153- OnlyWhenChanged = true
154- }
155- } ) ,
156- } ) ;
157- try
120+ OnlyWhenChanged = true
121+ }
122+ } ,
123+ async db =>
158124 {
159- await ResetDB ( db ) ;
160-
161125 await db . Execute ( "INSERT INTO assets (id, description, make) VALUES(uuid(), ?, ?);" , [ "name" , "make1" ] ) ;
162126 await db . Execute ( "DELETE FROM ps_crud;" ) ;
163127 await db . Execute ( "UPDATE assets SET description = ?" , [ "new name" ] ) ;
@@ -167,42 +131,20 @@ public async Task IncludeOldValuesWhenChangedTest()
167131 Assert . NotNull ( batch . Crud [ 0 ] . PreviousValues ) ;
168132 Assert . Equal ( "name" , batch . Crud [ 0 ] . PreviousValues ! [ "description" ] ) ;
169133 Assert . False ( batch . Crud [ 0 ] . PreviousValues ! . ContainsKey ( "make" ) ) ;
170- }
171- finally
172- {
173- await db . Close ( ) ;
174- DatabaseUtils . CleanDb ( localDbName ) ;
175- }
176- }
134+ } ) ;
177135
178136 [ Fact ]
179- public async Task IgnoreEmptyUpdateTest ( )
180- {
181- var localDbName = $ "IgnoreEmptyUpdateTest-{ Guid . NewGuid ( ) : N} .db";
182- var db = new PowerSyncDatabase ( new PowerSyncDatabaseOptions
183- {
184- Database = new SQLOpenOptions { DbFilename = localDbName } ,
185- Schema = TestSchema . GetSchemaWithCustomAssetOptions ( new TableOptions
186- {
187- IgnoreEmptyUpdates = true
188- } ) ,
189- } ) ;
190- try
137+ public Task IgnoreEmptyUpdateTest ( ) => WithCustomAssetOptions (
138+ new TableOptions { IgnoreEmptyUpdates = true } ,
139+ async db =>
191140 {
192- await ResetDB ( db ) ;
193141 await db . Execute ( "INSERT INTO assets (id, description) VALUES(?, ?);" , [ testId , "name" ] ) ;
194142 await db . Execute ( "DELETE FROM ps_crud;" ) ;
195143 await db . Execute ( "UPDATE assets SET description = ?" , [ "name" ] ) ;
196144
197145 var batch = await db . GetNextCrudTransaction ( ) ;
198146 Assert . Null ( batch ) ;
199- }
200- finally
201- {
202- await db . Close ( ) ;
203- DatabaseUtils . CleanDb ( localDbName ) ;
204- }
205- }
147+ } ) ;
206148
207149 [ Fact ]
208150 public async Task Insert_RecordCrudEntryTest ( )
0 commit comments