Skip to content

Commit

Permalink
refactor(test): define mocks in one place to avoid duplicacy
Browse files Browse the repository at this point in the history
  • Loading branch information
thisissandipp committed Jul 5, 2024
1 parent 755931c commit 3ecf793
Show file tree
Hide file tree
Showing 6 changed files with 25 additions and 33 deletions.
1 change: 1 addition & 0 deletions test/helpers/helpers.dart
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
export 'mocks.dart';
export 'pump_app.dart';
export 'set_display_size.dart';
13 changes: 13 additions & 0 deletions test/helpers/mocks.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import 'package:bloc_test/bloc_test.dart';
import 'package:mocktail/mocktail.dart';
import 'package:sudoku/models/models.dart';
import 'package:sudoku/sudoku/sudoku.dart';

class MockSudoku extends Mock implements Sudoku {}

class MockSudokuBloc extends MockBloc<SudokuEvent, SudokuState>
implements SudokuBloc {}

class MockSudokuState extends Mock implements SudokuState {}

class MockBlock extends Mock implements Block {}
6 changes: 2 additions & 4 deletions test/helpers/pump_app.dart
Original file line number Diff line number Diff line change
@@ -1,18 +1,16 @@
import 'package:bloc_test/bloc_test.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:sudoku/l10n/l10n.dart';
import 'package:sudoku/sudoku/sudoku.dart';

class _MockSudokuBloc extends MockBloc<SudokuEvent, SudokuState>
implements SudokuBloc {}
import 'helpers.dart';

extension PumpApp on WidgetTester {
Future<void> pumpApp(Widget widget, {SudokuBloc? sudokuBloc}) {
return pumpWidget(
BlocProvider<SudokuBloc>.value(
value: sudokuBloc ?? _MockSudokuBloc(),
value: sudokuBloc ?? MockSudokuBloc(),
child: MaterialApp(
localizationsDelegates: AppLocalizations.localizationsDelegates,
supportedLocales: AppLocalizations.supportedLocales,
Expand Down
14 changes: 4 additions & 10 deletions test/sudoku/view/sudoku_page_test.dart
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
// ignore_for_file: prefer_const_constructors

import 'package:bloc_test/bloc_test.dart';
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:mocktail/mocktail.dart';
Expand All @@ -10,11 +9,6 @@ import 'package:sudoku/sudoku/sudoku.dart';

import '../../helpers/helpers.dart';

class _MockSudokuBloc extends MockBloc<SudokuEvent, SudokuState>
implements SudokuBloc {}

class _MockSudoku extends Mock implements Sudoku {}

void main() {
group('SudokuPage', () {
testWidgets('renders SudokuView', (tester) async {
Expand All @@ -28,8 +22,8 @@ void main() {
late Sudoku sudoku;

setUp(() {
sudokuBloc = _MockSudokuBloc();
sudoku = _MockSudoku();
sudokuBloc = MockSudokuBloc();
sudoku = MockSudoku();
when(() => sudoku.getDimesion()).thenReturn(3);
when(() => sudoku.blocks).thenReturn([]);
when(() => sudokuBloc.state).thenReturn(
Expand Down Expand Up @@ -70,8 +64,8 @@ void main() {
late Sudoku sudoku;

setUp(() {
sudokuBloc = _MockSudokuBloc();
sudoku = _MockSudoku();
sudokuBloc = MockSudokuBloc();
sudoku = MockSudoku();
when(() => sudoku.getDimesion()).thenReturn(3);
when(() => sudoku.blocks).thenReturn([]);
when(() => sudokuBloc.state).thenReturn(
Expand Down
18 changes: 4 additions & 14 deletions test/sudoku/widgets/sudoku_block_test.dart
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
// ignore_for_file: prefer_const_constructors

import 'package:bloc_test/bloc_test.dart';
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:mocktail/mocktail.dart';
Expand All @@ -9,15 +8,6 @@ import 'package:sudoku/sudoku/sudoku.dart';

import '../../helpers/helpers.dart';

class _MockSudokuBloc extends MockBloc<SudokuEvent, SudokuState>
implements SudokuBloc {}

class _MockSudokuState extends Mock implements SudokuState {}

class _MockSudoku extends Mock implements Sudoku {}

class _MockBlock extends Mock implements Block {}

void main() {
group('SudokuBlock', () {
final block = Block(
Expand All @@ -35,15 +25,15 @@ void main() {
late SudokuState state;

setUp(() {
sudoku = _MockSudoku();
sudoku = MockSudoku();
when(() => sudoku.getDimesion()).thenReturn(3);

state = _MockSudokuState();
state = MockSudokuState();
when(() => state.sudoku).thenReturn(sudoku);
when(() => state.highlightedBlocks).thenReturn({});
when(() => state.currentSelectedBlock).thenReturn(block);

bloc = _MockSudokuBloc();
bloc = MockSudokuBloc();
when(() => bloc.state).thenReturn(state);
});

Expand Down Expand Up @@ -98,7 +88,7 @@ void main() {
testWidgets(
'renders block when block is part of highlighted, but not selcted',
(tester) async {
final otherBlock = _MockBlock();
final otherBlock = MockBlock();
when(() => otherBlock.position).thenReturn(Position(x: 0, y: 1));

when(() => state.highlightedBlocks).thenReturn({block});
Expand Down
6 changes: 1 addition & 5 deletions test/sudoku/widgets/sudoku_input_test.dart
Original file line number Diff line number Diff line change
@@ -1,16 +1,12 @@
// ignore_for_file: prefer_const_constructors

import 'package:bloc_test/bloc_test.dart';
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:mocktail/mocktail.dart';
import 'package:sudoku/sudoku/sudoku.dart';

import '../../helpers/helpers.dart';

class _MockSudokuBloc extends MockBloc<SudokuEvent, SudokuState>
implements SudokuBloc {}

void main() {
group('SudokuInput', () {
const largeInputKey = 'sudoku_input_large';
Expand All @@ -20,7 +16,7 @@ void main() {
late SudokuBloc sudokuBloc;

setUp(() {
sudokuBloc = _MockSudokuBloc();
sudokuBloc = MockSudokuBloc();
});

testWidgets(
Expand Down

0 comments on commit 3ecf793

Please sign in to comment.