Files
MrbWebLibre/app/test/drift/user/toolbar_button_config_dao_test.dart
T

70 lines
2.1 KiB
Dart

import 'package:drift/native.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:weblibre/data/database/functions/lexo_rank_functions.dart';
import 'package:weblibre/features/geckoview/features/browser/features/contextual_toolbar/data/providers/toolbar_button_configs.dart';
import 'package:weblibre/features/user/data/database/database.dart';
void main() {
late UserDatabase db;
setUp(() {
db = UserDatabase(
NativeDatabase.memory(
setup: (database) {
registerLexorankFunctions(database);
},
),
);
});
tearDown(() async {
await db.close();
});
group('ToolbarButtonConfigDao', () {
test(
'seedMissing inserts self-referential fallback rows in two phases',
() async {
await db.toolbarButtonConfigDao.seedMissing([
(
buttonId: 'back',
defaultVisible: true,
defaultFallback: 'bookmarks',
),
(buttonId: 'bookmarks', defaultVisible: false, defaultFallback: null),
(buttonId: 'forward', defaultVisible: true, defaultFallback: 'share'),
(buttonId: 'share', defaultVisible: false, defaultFallback: null),
]);
final configs = await db.toolbarButtonConfigDao.getAll();
final configsById = {
for (final config in configs) config.buttonId: config,
};
expect(configsById['back']?.fallbackId, 'bookmarks');
expect(configsById['forward']?.fallbackId, 'share');
},
);
test(
'replaceAll persists default toolbar fallbacks without FK failures',
() async {
await expectLater(
db.toolbarButtonConfigDao.replaceAll(
buildDefaultToolbarButtonConfigs(),
),
completes,
);
final configs = await db.toolbarButtonConfigDao.getAll();
final configsById = {
for (final config in configs) config.buttonId: config,
};
expect(configsById['back']?.fallbackId, 'bookmarks');
expect(configsById['forward']?.fallbackId, 'share');
},
);
});
}