feat: Enhance DefaultRendererSettingsPersistence to support scoped settings for CLI and Flutter
Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
This commit is contained in:
@@ -154,6 +154,70 @@ void main() {
|
||||
});
|
||||
});
|
||||
|
||||
group('DefaultRendererSettingsPersistence', () {
|
||||
test('stores separate scoped settings for flutter and cli', () async {
|
||||
final tempDir = await Directory.systemTemp.createTemp(
|
||||
'wolf3d-renderer-config-',
|
||||
);
|
||||
addTearDown(() async {
|
||||
if (await tempDir.exists()) {
|
||||
await tempDir.delete(recursive: true);
|
||||
}
|
||||
});
|
||||
|
||||
final String path = '${tempDir.path}/settings.json';
|
||||
final flutterPersistence = DefaultRendererSettingsPersistence(
|
||||
filePath: path,
|
||||
hostKey: rendererSettingsHostFlutter,
|
||||
);
|
||||
final cliPersistence = DefaultRendererSettingsPersistence(
|
||||
filePath: path,
|
||||
hostKey: rendererSettingsHostCli,
|
||||
);
|
||||
|
||||
const flutterSettings = WolfRendererSettings(
|
||||
mode: WolfRendererMode.hardware,
|
||||
);
|
||||
const cliSettings = WolfRendererSettings(mode: WolfRendererMode.sixel);
|
||||
|
||||
await flutterPersistence.save(flutterSettings);
|
||||
await cliPersistence.save(cliSettings);
|
||||
|
||||
final loadedFlutter = await flutterPersistence.load();
|
||||
final loadedCli = await cliPersistence.load();
|
||||
expect(loadedFlutter, isNotNull);
|
||||
expect(loadedCli, isNotNull);
|
||||
expect(loadedFlutter!.mode, flutterSettings.mode);
|
||||
expect(loadedCli!.mode, cliSettings.mode);
|
||||
|
||||
final String raw = await File(path).readAsString();
|
||||
expect(raw, contains('"rendererSettings"'));
|
||||
expect(raw, contains('"flutter"'));
|
||||
expect(raw, contains('"cli"'));
|
||||
});
|
||||
|
||||
test('does not fall back to legacy unscoped renderer payload', () async {
|
||||
final tempDir = await Directory.systemTemp.createTemp(
|
||||
'wolf3d-renderer-config-',
|
||||
);
|
||||
addTearDown(() async {
|
||||
if (await tempDir.exists()) {
|
||||
await tempDir.delete(recursive: true);
|
||||
}
|
||||
});
|
||||
|
||||
final String path = '${tempDir.path}/settings.json';
|
||||
await File(path).writeAsString('{"mode":"hardware"}');
|
||||
|
||||
final persistence = DefaultRendererSettingsPersistence(
|
||||
filePath: path,
|
||||
hostKey: rendererSettingsHostFlutter,
|
||||
);
|
||||
|
||||
expect(await persistence.load(), isNull);
|
||||
});
|
||||
});
|
||||
|
||||
testWidgets('Wolf3dApp forwards configured directory to no-data screen', (
|
||||
tester,
|
||||
) async {
|
||||
|
||||
Reference in New Issue
Block a user