diff --git a/.github/workflows/app.yml b/.github/workflows/app.yml index 09eac511..e965c25f 100644 --- a/.github/workflows/app.yml +++ b/.github/workflows/app.yml @@ -116,6 +116,22 @@ jobs: dart pub get dart run webdev build + database_web_tests: + runs-on: ubuntu-latest + env: + NO_OLM: 1 + steps: + - uses: actions/checkout@v4 + - run: cat .github/workflows/versions.env >> $GITHUB_ENV + - uses: dart-lang/setup-dart@a57a6c04cf7d4840e88432aad6281d1e125f0d46 + with: + sdk: ${{ env.dart_version }} + - uses: browser-actions/setup-chrome@v1 + - name: Run tests + run: | + dart pub get + dart test test/box_test.dart --platform chrome + pub-dev-dry-run: runs-on: ubuntu-latest steps: diff --git a/lib/src/database/indexeddb_box.dart b/lib/src/database/indexeddb_box.dart index a5f56571..6724b91d 100644 --- a/lib/src/database/indexeddb_box.dart +++ b/lib/src/database/indexeddb_box.dart @@ -80,7 +80,7 @@ class BoxCollection with ZoneTransactionMixin { return _db.close(); } - static Future delete(String path, [IdbFactory? factory]) => + static Future delete(String path, [dynamic factory]) => (factory ?? window.indexedDB!).deleteDatabase(path); } diff --git a/lib/src/database/sqflite_box.dart b/lib/src/database/sqflite_box.dart index 61c10ad8..ce66f4b3 100644 --- a/lib/src/database/sqflite_box.dart +++ b/lib/src/database/sqflite_box.dart @@ -67,7 +67,7 @@ class BoxCollection with ZoneTransactionMixin { Future close() => _db.close(); - static Future delete(String path, [DatabaseFactory? factory]) => + static Future delete(String path, [dynamic factory]) => (factory ?? databaseFactory).deleteDatabase(path); } diff --git a/test/box_test.dart b/test/box_test.dart index e5d352ef..cc55a5cf 100644 --- a/test/box_test.dart +++ b/test/box_test.dart @@ -1,7 +1,8 @@ import 'package:sqflite_common_ffi/sqflite_ffi.dart'; import 'package:test/test.dart'; -import 'package:matrix/src/database/sqflite_box.dart'; +import 'package:matrix/src/database/indexeddb_box.dart' + if (dart.library.io) 'package:matrix/src/database/sqflite_box.dart'; void main() { group('Box tests', () { @@ -9,14 +10,17 @@ void main() { const Set boxNames = {'cats', 'dogs'}; const data = {'name': 'Fluffy', 'age': 2}; const data2 = {'name': 'Loki', 'age': 4}; - late Database db; + Database? db; + const isWeb = bool.fromEnvironment('dart.library.js_util'); setUp(() async { - db = await databaseFactoryFfi.openDatabase(':memory:'); + if (!isWeb) { + db = await databaseFactoryFfi.openDatabase(':memory:'); + } collection = await BoxCollection.open( 'testbox', boxNames, sqfliteDatabase: db, - sqfliteFactory: databaseFactoryFfi, + sqfliteFactory: isWeb ? null : databaseFactoryFfi, ); }); @@ -91,8 +95,18 @@ void main() { expect(await box.get('loki'), null); }); - test('Box.delete', () async { - await BoxCollection.delete(db.path, databaseFactoryFfi); + test('Box.close', () async { + await collection.close(); }); + + test( + 'Box.delete', + () async { + await BoxCollection.delete( + db?.path ?? '', + isWeb ? null : databaseFactoryFfi, + ); + }, + ); }); }