ci: Add tests for database on web

This commit is contained in:
Krille 2024-01-24 10:41:26 +01:00
parent 30cb81bc95
commit 8c98a0058a
No known key found for this signature in database
GPG Key ID: E067ECD60F1A0652
4 changed files with 38 additions and 8 deletions

View File

@ -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:

View File

@ -80,7 +80,7 @@ class BoxCollection with ZoneTransactionMixin {
return _db.close();
}
static Future<void> delete(String path, [IdbFactory? factory]) =>
static Future<void> delete(String path, [dynamic factory]) =>
(factory ?? window.indexedDB!).deleteDatabase(path);
}

View File

@ -67,7 +67,7 @@ class BoxCollection with ZoneTransactionMixin {
Future<void> close() => _db.close();
static Future<void> delete(String path, [DatabaseFactory? factory]) =>
static Future<void> delete(String path, [dynamic factory]) =>
(factory ?? databaseFactory).deleteDatabase(path);
}

View File

@ -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<String> 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 {
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,
);
},
);
});
}