Files
FocusGram-Android/test/services/settings_service_test.dart
T

106 lines
3.2 KiB
Dart

import 'package:flutter_test/flutter_test.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:focusgram/services/settings_service.dart';
void main() {
TestWidgetsFlutterBinding.ensureInitialized();
setUp(() {
SharedPreferences.setMockInitialValues({});
});
group('SettingsService — Phase 2 Extras', () {
test('defaults are OFF for video download/hide suggested', () async {
final s = SettingsService();
await s.init();
expect(s.videoDownloadEnabled, isFalse);
expect(s.hideSuggestedPosts, isFalse);
});
test('setVideoDownloadEnabled persists', () async {
final s = SettingsService();
await s.init();
await s.setVideoDownloadEnabled(true);
final prefs = await SharedPreferences.getInstance();
expect(s.videoDownloadEnabled, isTrue);
expect(prefs.getBool('video_download_enabled'), isTrue);
});
test('setHideSuggestedPosts persists', () async {
final s = SettingsService();
await s.init();
await s.setHideSuggestedPosts(true);
final prefs = await SharedPreferences.getInstance();
expect(s.hideSuggestedPosts, isTrue);
expect(prefs.getBool('hide_suggested_posts'), isTrue);
});
});
group('SettingsService — minimal mode', () {
test(
'home feed scroll can be disabled while minimal mode stays on',
() async {
final s = SettingsService();
await s.init();
await s.setMinimalModeEnabled(true);
await s.setBlockHomeFeedScrollInternal(false);
expect(s.minimalModeEnabled, isTrue);
expect(s.blockHomeFeedScroll, isFalse);
final prefs = await SharedPreferences.getInstance();
expect(prefs.getBool('internal_block_home_feed_scroll'), isFalse);
expect(prefs.getBool('minimal_mode_enabled'), isTrue);
},
);
test(
'minimal mode turns off when all child features are disabled',
() async {
final s = SettingsService();
await s.init();
await s.setMinimalModeEnabled(true);
await s.setBlurExplore(false);
await s.setBlockHomeFeedScrollInternal(false);
await s.setDisableReelsEntirelyInternal(false);
await s.setDisableExploreEntirelyInternal(false);
expect(s.minimalModeEnabled, isFalse);
expect(s.blurExplore, isFalse);
expect(s.blockHomeFeedScroll, isFalse);
expect(s.disableReelsEntirely, isFalse);
expect(s.disableExploreEntirely, isFalse);
},
);
});
group('SettingsService — v2 filtering split', () {
test(
'ad blocker and suggested posts toggles persist independently',
() async {
final s = SettingsService();
await s.init();
await s.setV2AdBlockerDomEnabled(true);
await s.setContentSuggestedEnabled(true);
await s.setV2AdBlockerDomEnabled(false);
expect(s.v2AdBlockerDomEnabled, isFalse);
expect(s.contentSuggested, isTrue);
expect(s.v2ContentHiderEnabled, isTrue);
final prefs = await SharedPreferences.getInstance();
expect(prefs.getBool('v2_adblock_dom_enabled'), isFalse);
expect(prefs.getBool('content_suggested'), isTrue);
},
);
});
}