Files
bookshelf/bookshelf_flutter/test/bloc/settings/settings_bloc_test.dart
Yuriy Panov 2f97873095 Fix import paths and test issues
- Fixed test file import paths to point to correct Bloc file locations
- Fixed Bloc file import paths for models (../../../models/models.dart)
- Added explicit type annotations to resolve null safety warnings
- Fixed null safety issues in wishlist_bloc_test.dart
- All 70 tests now passing
2026-02-04 15:28:59 +06:00

105 lines
3.3 KiB
Dart

import 'package:flutter_test/flutter_test.dart';
import 'package:bookshelf_flutter/features/settings/bloc/settings_bloc.dart';
import 'package:bookshelf_flutter/features/settings/bloc/settings_event.dart';
import 'package:bookshelf_flutter/features/settings/bloc/settings_state.dart';
void main() {
group('SettingsBloc', () {
late SettingsBloc settingsBloc;
setUp(() {
settingsBloc = SettingsBloc();
});
tearDown(() {
settingsBloc.close();
});
test('initial state is SettingsState.initial()', () {
expect(settingsBloc.state, isA<SettingsState>());
expect(settingsBloc.state.isLoading, true);
});
group('LoadSettings', () {
test('loads default settings into state', () async {
settingsBloc.add(const LoadSettings());
await Future.delayed(Duration.zero);
expect(settingsBloc.state.isDarkMode, false);
expect(settingsBloc.state.language, 'English');
expect(settingsBloc.state.notificationsEnabled, true);
expect(settingsBloc.state.isLoading, false);
});
});
group('UpdateTheme', () {
test('updates isDarkMode to true', () async {
settingsBloc.add(const UpdateTheme(true));
await Future.delayed(Duration.zero);
expect(settingsBloc.state.isDarkMode, true);
});
test('updates isDarkMode to false', () async {
settingsBloc.add(const UpdateTheme(true));
await Future.delayed(Duration.zero);
settingsBloc.add(const UpdateTheme(false));
await Future.delayed(Duration.zero);
expect(settingsBloc.state.isDarkMode, false);
});
});
group('UpdateLanguage', () {
test('updates language setting', () async {
settingsBloc.add(const UpdateLanguage('Russian'));
await Future.delayed(Duration.zero);
expect(settingsBloc.state.language, 'Russian');
});
test('updates language to English', () async {
settingsBloc.add(const UpdateLanguage('English'));
await Future.delayed(Duration.zero);
expect(settingsBloc.state.language, 'English');
});
});
group('ToggleNotifications', () {
test('toggles notifications from true to false', () async {
settingsBloc.add(const LoadSettings());
await Future.delayed(Duration.zero);
expect(settingsBloc.state.notificationsEnabled, true);
settingsBloc.add(const ToggleNotifications());
await Future.delayed(Duration.zero);
expect(settingsBloc.state.notificationsEnabled, false);
});
test('toggles notifications from false to true', () async {
settingsBloc.add(const UpdateTheme(false));
await Future.delayed(Duration.zero);
settingsBloc.add(const ToggleNotifications());
await Future.delayed(Duration.zero);
expect(settingsBloc.state.notificationsEnabled, false);
settingsBloc.add(const ToggleNotifications());
await Future.delayed(Duration.zero);
expect(settingsBloc.state.notificationsEnabled, true);
});
});
group('ClearData', () {
test('sets dataCleared to true', () async {
settingsBloc.add(const ClearData());
await Future.delayed(Duration.zero);
expect(settingsBloc.state.dataCleared, true);
});
});
});
}