Skip to content

Commit

Permalink
[Test] Added some missing tests
Browse files Browse the repository at this point in the history
  • Loading branch information
Wolfteam committed May 27, 2022
1 parent a265317 commit b07b0e2
Show file tree
Hide file tree
Showing 13 changed files with 1,434 additions and 14 deletions.
@@ -0,0 +1,60 @@
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/domain/services/telemetry_service.dart';
import 'package:shiori/infrastructure/infrastructure.dart';

import '../../mocks.mocks.dart';

void main() {
late LocaleService _localeService;
late SettingsService _settingsService;
late GenshinService _genshinService;
late TelemetryService _telemetryService;

setUpAll(() {
TestWidgetsFlutterBinding.ensureInitialized();
_settingsService = MockSettingsService();
when(_settingsService.language).thenReturn(AppLanguageType.english);
when(_settingsService.showCharacterDetails).thenReturn(true);
_localeService = LocaleServiceImpl(_settingsService);
_genshinService = GenshinServiceImpl(_localeService);
_telemetryService = MockTelemetryService();

return Future(() async {
await _genshinService.init(AppLanguageType.english);
});
});

test(
'Initial state',
() => expect(
CharactersBirthdaysPerMonthBloc(_genshinService, _telemetryService).state,
const CharactersBirthdaysPerMonthState.loading(),
),
);

group('Init', () {
blocTest<CharactersBirthdaysPerMonthBloc, CharactersBirthdaysPerMonthState>(
'emits loaded state',
build: () => CharactersBirthdaysPerMonthBloc(_genshinService, _telemetryService),
act: (bloc) => bloc.add(const CharactersBirthdaysPerMonthEvent.init(month: DateTime.january)),
expect: () {
final characters = _genshinService.getCharacterBirthdays(month: DateTime.january);
return [CharactersBirthdaysPerMonthState.loaded(characters: characters, month: DateTime.january)];
},
);

blocTest<CharactersBirthdaysPerMonthBloc, CharactersBirthdaysPerMonthState>(
'invalid month',
build: () => CharactersBirthdaysPerMonthBloc(_genshinService, _telemetryService),
act: (bloc) => bloc.add(const CharactersBirthdaysPerMonthEvent.init(month: 13)),
errors: () => [isA<Exception>()],
);
});
}
@@ -0,0 +1,57 @@
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(
CharactersPerRegionBloc(_genshinService).state,
const CharactersPerRegionState.loading(),
),
);

group('Init', () {
blocTest<CharactersPerRegionBloc, CharactersPerRegionState>(
'emits loaded state',
build: () => CharactersPerRegionBloc(_genshinService),
act: (bloc) => bloc.add(const CharactersPerRegionEvent.init(type: RegionType.inazuma)),
expect: () {
final items = _genshinService.getCharactersForItemsByRegion(RegionType.inazuma);
return [CharactersPerRegionState.loaded(regionType: RegionType.inazuma, items: items)];
},
);

blocTest<CharactersPerRegionBloc, CharactersPerRegionState>(
'invalid region',
build: () => CharactersPerRegionBloc(_genshinService),
act: (bloc) => bloc.add(const CharactersPerRegionEvent.init(type: RegionType.anotherWorld)),
errors: () => [isA<Exception>()],
);
});
}
@@ -0,0 +1,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>()],
);
});
}

0 comments on commit b07b0e2

Please sign in to comment.