@TestOn('browser')
import 'dart:html';

import 'package:tests/tests.dart';
import 'package:test/test.dart';
import 'package:moor/moor_web.dart';

class WebExecutor extends TestExecutor {
  final String name = 'db';

  @override
  DatabaseConnection createConnection() {
    return DatabaseConnection.fromExecutor(WebDatabase(name));
  }

  @override
  Future deleteData() {
    window.localStorage.clear();
    return Future.value();
  }
}

class WebExecutorIndexedDb extends TestExecutor {
  @override
  DatabaseConnection createConnection() {
    return DatabaseConnection.fromExecutor(
      WebDatabase.withStorage(MoorWebStorage.indexedDb('foo')),
    );
  }

  @override
  Future deleteData() async {
    await window.indexedDB.deleteDatabase('moor_databases');
  }
}

void main() {
  group('using local storage', () {
    runAllTests(WebExecutor());
  });

  group('using IndexedDb', () {
    runAllTests(WebExecutorIndexedDb());
  });
}
