Handle pokes outside chat tabs

This commit is contained in:
Edison Jwa
2026-05-23 05:25:36 +09:00
parent 738b274748
commit 7e28791ec2
10 changed files with 2567 additions and 1347 deletions
@@ -0,0 +1,58 @@
import 'package:flutter_test/flutter_test.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:chanora_flutter/services/ui_preferences_service.dart';
void main() {
late UiPreferencesService service;
setUp(() {
SharedPreferences.setMockInitialValues({});
service = const UiPreferencesService();
});
test('loads empty settings when preferences are unset', () async {
final settings = await service.loadSettings();
expect(settings.host, isEmpty);
expect(settings.nickname, isEmpty);
expect(settings.showPokeDialogs, isTrue);
});
test('saves and loads host and nickname independently', () async {
await service.saveSettings(host: 'example.com');
var settings = await service.loadSettings();
expect(settings.host, 'example.com');
expect(settings.nickname, isEmpty);
await service.saveSettings(nickname: 'Chanora');
settings = await service.loadSettings();
expect(settings.host, 'example.com');
expect(settings.nickname, 'Chanora');
});
test('saves poke dialog preference independently', () async {
await service.saveSettings(showPokeDialogs: false);
var settings = await service.loadSettings();
expect(settings.showPokeDialogs, isFalse);
expect(settings.host, isEmpty);
expect(settings.nickname, isEmpty);
await service.saveSettings(host: 'example.com');
settings = await service.loadSettings();
expect(settings.showPokeDialogs, isFalse);
expect(settings.host, 'example.com');
});
test('tracks permission explanation flag', () async {
expect(await service.hasExplainedPermissions(), isFalse);
await service.markPermissionsExplained();
expect(await service.hasExplainedPermissions(), isTrue);
});
}