-
-
Notifications
You must be signed in to change notification settings - Fork 47
/
characters_per_region_gender_bloc_test.dart
65 lines (58 loc) · 2.66 KB
/
characters_per_region_gender_bloc_test.dart
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
import 'package:bloc_test/bloc_test.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:mockito/mockito.dart';
import 'package:shiori/application/bloc.dart';
import 'package:shiori/domain/enums/enums.dart';
import 'package:shiori/domain/services/genshin_service.dart';
import 'package:shiori/domain/services/locale_service.dart';
import 'package:shiori/domain/services/settings_service.dart';
import 'package:shiori/infrastructure/infrastructure.dart';
import '../../mocks.mocks.dart';
void main() {
late LocaleService _localeService;
late SettingsService _settingsService;
late GenshinService _genshinService;
setUpAll(() {
TestWidgetsFlutterBinding.ensureInitialized();
_settingsService = MockSettingsService();
when(_settingsService.language).thenReturn(AppLanguageType.english);
when(_settingsService.showCharacterDetails).thenReturn(true);
_localeService = LocaleServiceImpl(_settingsService);
_genshinService = GenshinServiceImpl(_localeService);
return Future(() async {
await _genshinService.init(AppLanguageType.english);
});
});
test(
'Initial state',
() => expect(
CharactersPerRegionGenderBloc(_genshinService).state,
const CharactersPerRegionGenderState.loading(),
),
);
group('Init', () {
blocTest<CharactersPerRegionGenderBloc, CharactersPerRegionGenderState>(
'emits loaded state',
build: () => CharactersPerRegionGenderBloc(_genshinService),
act: (bloc) => bloc
..add(const CharactersPerRegionGenderEvent.init(regionType: RegionType.inazuma, onlyFemales: true))
..add(const CharactersPerRegionGenderEvent.init(regionType: RegionType.inazuma, onlyFemales: false)),
expect: () {
final females = _genshinService.getCharactersForItemsByRegionAndGender(RegionType.inazuma, true);
final males = _genshinService.getCharactersForItemsByRegionAndGender(RegionType.inazuma, false);
return [
CharactersPerRegionGenderState.loaded(regionType: RegionType.inazuma, onlyFemales: true, items: females),
CharactersPerRegionGenderState.loaded(regionType: RegionType.inazuma, onlyFemales: false, items: males),
];
},
);
blocTest<CharactersPerRegionGenderBloc, CharactersPerRegionGenderState>(
'invalid region',
build: () => CharactersPerRegionGenderBloc(_genshinService),
act: (bloc) => bloc
..add(const CharactersPerRegionGenderEvent.init(regionType: RegionType.anotherWorld, onlyFemales: true))
..add(const CharactersPerRegionGenderEvent.init(regionType: RegionType.anotherWorld, onlyFemales: false)),
errors: () => [isA<Exception>(), isA<Exception>()],
);
});
}