chore: rename SelectCharacterCubit to CharacterThemeCubit

pull/233/head
arturplaczek 3 years ago
parent 464b786760
commit 7c3ee4f687

@ -36,7 +36,7 @@ class App extends StatelessWidget {
RepositoryProvider.value(value: _pinballAudio), RepositoryProvider.value(value: _pinballAudio),
], ],
child: BlocProvider( child: BlocProvider(
create: (context) => SelectCharacterCubit(), create: (context) => CharacterThemeCubit(),
child: const MaterialApp( child: const MaterialApp(
title: 'I/O Pinball', title: 'I/O Pinball',
localizationsDelegates: [ localizationsDelegates: [

@ -32,7 +32,7 @@ class PinballGamePage extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final selectedCharacter = final selectedCharacter =
context.read<SelectCharacterCubit>().state.selectedCharacter; context.read<CharacterThemeCubit>().state.selectedCharacter;
final audio = context.read<PinballAudio>(); final audio = context.read<PinballAudio>();
final pinballAudio = context.read<PinballAudio>(); final pinballAudio = context.read<PinballAudio>();

@ -5,12 +5,12 @@ import 'package:bloc/bloc.dart';
import 'package:equatable/equatable.dart'; import 'package:equatable/equatable.dart';
import 'package:pinball_theme/pinball_theme.dart'; import 'package:pinball_theme/pinball_theme.dart';
part 'select_character_state.dart'; part 'character_theme_state.dart';
class SelectCharacterCubit extends Cubit<SelectCharacterState> { class CharacterThemeCubit extends Cubit<CharacterThemeState> {
SelectCharacterCubit() : super(const SelectCharacterState.initial()); CharacterThemeCubit() : super(const CharacterThemeState.initial());
void characterSelected(CharacterTheme characterTheme) { void characterSelected(CharacterTheme characterTheme) {
emit(SelectCharacterState(characterTheme)); emit(CharacterThemeState(characterTheme));
} }
} }

@ -1,12 +1,12 @@
// ignore_for_file: public_member_api_docs // ignore_for_file: public_member_api_docs
// TODO(allisonryan0002): Document this section when the API is stable. // TODO(allisonryan0002): Document this section when the API is stable.
part of 'select_character_cubit.dart'; part of 'character_theme_cubit.dart';
class SelectCharacterState extends Equatable { class CharacterThemeState extends Equatable {
const SelectCharacterState(this.selectedCharacter); const CharacterThemeState(this.selectedCharacter);
const SelectCharacterState.initial() : selectedCharacter = const DashTheme(); const CharacterThemeState.initial() : selectedCharacter = const DashTheme();
final CharacterTheme selectedCharacter; final CharacterTheme selectedCharacter;

@ -1,2 +1,2 @@
export 'cubit/select_character_cubit.dart'; export 'cubit/character_theme_cubit.dart';
export 'view/view.dart'; export 'view/view.dart';

@ -19,7 +19,7 @@ class CharacterSelectionDialog extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return BlocProvider( return BlocProvider(
create: (_) => SelectCharacterCubit(), create: (_) => CharacterThemeCubit(),
child: const CharacterSelectionView(), child: const CharacterSelectionView(),
); );
} }
@ -110,14 +110,13 @@ class CharacterImageButton extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final currentCharacterTheme = final currentCharacterTheme =
context.select<SelectCharacterCubit, CharacterTheme>( context.select<CharacterThemeCubit, CharacterTheme>(
(cubit) => cubit.state.selectedCharacter, (cubit) => cubit.state.selectedCharacter,
); );
return GestureDetector( return GestureDetector(
onTap: () => context onTap: () =>
.read<SelectCharacterCubit>() context.read<CharacterThemeCubit>().characterSelected(characterTheme),
.characterSelected(characterTheme),
child: DecoratedBox( child: DecoratedBox(
decoration: BoxDecoration( decoration: BoxDecoration(
color: (currentCharacterTheme == characterTheme) color: (currentCharacterTheme == characterTheme)

@ -13,18 +13,18 @@ void main() {
final game = PinballTestGame(); final game = PinballTestGame();
group('PinballGamePage', () { group('PinballGamePage', () {
late SelectCharacterCubit selectCharacterCubit; late CharacterThemeCubit characterThemeCubit;
late GameBloc gameBloc; late GameBloc gameBloc;
setUp(() async { setUp(() async {
await Future.wait<void>(game.preLoadAssets()); await Future.wait<void>(game.preLoadAssets());
selectCharacterCubit = MockSelectCharacterCubit(); characterThemeCubit = MockCharacterThemeCubit();
gameBloc = MockGameBloc(); gameBloc = MockGameBloc();
whenListen( whenListen(
selectCharacterCubit, characterThemeCubit,
const Stream<SelectCharacterState>.empty(), const Stream<CharacterThemeState>.empty(),
initialState: const SelectCharacterState.initial(), initialState: const CharacterThemeState.initial(),
); );
whenListen( whenListen(
@ -37,7 +37,7 @@ void main() {
testWidgets('renders PinballGameView', (tester) async { testWidgets('renders PinballGameView', (tester) async {
await tester.pumpApp( await tester.pumpApp(
PinballGamePage(), PinballGamePage(),
selectCharacterCubit: selectCharacterCubit, characterThemeCubit: characterThemeCubit,
); );
expect(find.byType(PinballGameView), findsOneWidget); expect(find.byType(PinballGameView), findsOneWidget);
@ -62,7 +62,7 @@ void main() {
game: game, game: game,
), ),
assetsManagerCubit: assetsManagerCubit, assetsManagerCubit: assetsManagerCubit,
selectCharacterCubit: selectCharacterCubit, characterThemeCubit: characterThemeCubit,
); );
expect( expect(
@ -95,7 +95,7 @@ void main() {
game: game, game: game,
), ),
assetsManagerCubit: assetsManagerCubit, assetsManagerCubit: assetsManagerCubit,
selectCharacterCubit: selectCharacterCubit, characterThemeCubit: characterThemeCubit,
gameBloc: gameBloc, gameBloc: gameBloc,
); );
@ -126,7 +126,7 @@ void main() {
}, },
), ),
), ),
selectCharacterCubit: selectCharacterCubit, characterThemeCubit: characterThemeCubit,
); );
await tester.tap(find.text('Tap me')); await tester.tap(find.text('Tap me'));

@ -35,7 +35,7 @@ class MockGameBloc extends Mock implements GameBloc {}
class MockGameState extends Mock implements GameState {} class MockGameState extends Mock implements GameState {}
class MockSelectCharacterCubit extends Mock implements SelectCharacterCubit {} class MockCharacterThemeCubit extends Mock implements CharacterThemeCubit {}
class MockLeaderboardBloc extends Mock implements LeaderboardBloc {} class MockLeaderboardBloc extends Mock implements LeaderboardBloc {}

@ -52,7 +52,7 @@ extension PumpApp on WidgetTester {
MockNavigator? navigator, MockNavigator? navigator,
GameBloc? gameBloc, GameBloc? gameBloc,
AssetsManagerCubit? assetsManagerCubit, AssetsManagerCubit? assetsManagerCubit,
SelectCharacterCubit? selectCharacterCubit, CharacterThemeCubit? characterThemeCubit,
LeaderboardRepository? leaderboardRepository, LeaderboardRepository? leaderboardRepository,
PinballAudio? pinballAudio, PinballAudio? pinballAudio,
}) { }) {
@ -70,7 +70,7 @@ extension PumpApp on WidgetTester {
child: MultiBlocProvider( child: MultiBlocProvider(
providers: [ providers: [
BlocProvider.value( BlocProvider.value(
value: selectCharacterCubit ?? MockSelectCharacterCubit(), value: characterThemeCubit ?? MockCharacterThemeCubit(),
), ),
BlocProvider.value( BlocProvider.value(
value: gameBloc ?? MockGameBloc(), value: gameBloc ?? MockGameBloc(),

@ -4,21 +4,21 @@ import 'package:pinball/select_character/select_character.dart';
import 'package:pinball_theme/pinball_theme.dart'; import 'package:pinball_theme/pinball_theme.dart';
void main() { void main() {
group('SelectCharacterCubit', () { group('CharacterThemeCubit', () {
test('initial state has Dash character theme', () { test('initial state has Dash character theme', () {
final selectCharacterCubit = SelectCharacterCubit(); final characterThemeCubit = CharacterThemeCubit();
expect( expect(
selectCharacterCubit.state.selectedCharacter, characterThemeCubit.state.selectedCharacter,
equals(const DashTheme()), equals(const DashTheme()),
); );
}); });
blocTest<SelectCharacterCubit, SelectCharacterState>( blocTest<CharacterThemeCubit, CharacterThemeState>(
'charcterSelected emits selected character theme', 'charcterSelected emits selected character theme',
build: SelectCharacterCubit.new, build: CharacterThemeCubit.new,
act: (bloc) => bloc.characterSelected(const SparkyTheme()), act: (bloc) => bloc.characterSelected(const SparkyTheme()),
expect: () => [ expect: () => [
const SelectCharacterState(SparkyTheme()), const CharacterThemeState(SparkyTheme()),
], ],
); );
}); });

@ -6,13 +6,13 @@ import 'package:pinball/select_character/select_character.dart';
void main() { void main() {
group('ThemeState', () { group('ThemeState', () {
test('can be instantiated', () { test('can be instantiated', () {
expect(const SelectCharacterState.initial(), isNotNull); expect(const CharacterThemeState.initial(), isNotNull);
}); });
test('supports value equality', () { test('supports value equality', () {
expect( expect(
SelectCharacterState.initial(), CharacterThemeState.initial(),
equals(const SelectCharacterState.initial()), equals(const CharacterThemeState.initial()),
); );
}); });
}); });

@ -11,14 +11,14 @@ import 'package:pinball_theme/pinball_theme.dart';
import '../../helpers/helpers.dart'; import '../../helpers/helpers.dart';
void main() { void main() {
late SelectCharacterCubit selectCharacterCubit; late CharacterThemeCubit characterThemeCubit;
setUp(() { setUp(() {
selectCharacterCubit = MockSelectCharacterCubit(); characterThemeCubit = MockCharacterThemeCubit();
whenListen( whenListen(
selectCharacterCubit, characterThemeCubit,
const Stream<SelectCharacterState>.empty(), const Stream<CharacterThemeState>.empty(),
initialState: const SelectCharacterState.initial(), initialState: const CharacterThemeState.initial(),
); );
}); });
@ -26,7 +26,7 @@ void main() {
testWidgets('renders CharacterSelectionView', (tester) async { testWidgets('renders CharacterSelectionView', (tester) async {
await tester.pumpApp( await tester.pumpApp(
CharacterSelectionDialog(), CharacterSelectionDialog(),
selectCharacterCubit: selectCharacterCubit, characterThemeCubit: characterThemeCubit,
); );
expect(find.byType(CharacterSelectionView), findsOneWidget); expect(find.byType(CharacterSelectionView), findsOneWidget);
}); });
@ -46,7 +46,7 @@ void main() {
}, },
), ),
), ),
selectCharacterCubit: selectCharacterCubit, characterThemeCubit: characterThemeCubit,
); );
await tester.tap(find.text('Tap me')); await tester.tap(find.text('Tap me'));
@ -61,7 +61,7 @@ void main() {
const titleText = 'Choose your character!'; const titleText = 'Choose your character!';
await tester.pumpApp( await tester.pumpApp(
CharacterSelectionView(), CharacterSelectionView(),
selectCharacterCubit: selectCharacterCubit, characterThemeCubit: characterThemeCubit,
); );
expect(find.text(titleText), findsOneWidget); expect(find.text(titleText), findsOneWidget);
@ -75,12 +75,12 @@ void main() {
await tester.pumpApp( await tester.pumpApp(
CharacterSelectionView(), CharacterSelectionView(),
selectCharacterCubit: selectCharacterCubit, characterThemeCubit: characterThemeCubit,
); );
await tester.tap(find.byKey(sparkyButtonKey)); await tester.tap(find.byKey(sparkyButtonKey));
verify(() => selectCharacterCubit.characterSelected(SparkyTheme())) verify(() => characterThemeCubit.characterSelected(SparkyTheme()))
.called(1); .called(1);
}); });
@ -88,7 +88,7 @@ void main() {
(tester) async { (tester) async {
await tester.pumpApp( await tester.pumpApp(
CharacterSelectionView(), CharacterSelectionView(),
selectCharacterCubit: selectCharacterCubit, characterThemeCubit: characterThemeCubit,
); );
await tester.ensureVisible(find.byType(TextButton)); await tester.ensureVisible(find.byType(TextButton));
await tester.tap(find.byType(TextButton)); await tester.tap(find.byType(TextButton));
@ -101,7 +101,7 @@ void main() {
testWidgets('CharacterImageButton renders correctly', (tester) async { testWidgets('CharacterImageButton renders correctly', (tester) async {
await tester.pumpApp( await tester.pumpApp(
CharacterImageButton(DashTheme()), CharacterImageButton(DashTheme()),
selectCharacterCubit: selectCharacterCubit, characterThemeCubit: characterThemeCubit,
); );
expect(find.byType(Image), findsOneWidget); expect(find.byType(Image), findsOneWidget);

Loading…
Cancel
Save