Last active
August 24, 2021 05:30
-
-
Save Benson194/c617131628217092710ea636c28b896d to your computer and use it in GitHub Desktop.
Mock Home Screen
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import 'dart:io'; | |
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:mocktail/mocktail.dart'; | |
import 'package:to_do_list/helper/date_time_helper.dart'; | |
import 'package:to_do_list/screens/create_screen/create_screen_bloc.dart'; | |
import 'package:to_do_list/screens/create_screen/create_screen_event.dart'; | |
import 'package:to_do_list/screens/create_screen/create_screen_state.dart'; | |
import 'package:to_do_list/screens/home_screen/home_screen_bloc.dart'; | |
import 'package:to_do_list/screens/home_screen/home_screen_event.dart'; | |
import 'package:to_do_list/screens/home_screen/home_screen_state.dart'; | |
import 'package:to_do_list/screens/home_screen/home_screen.dart'; | |
import '../../model/note_model_test.dart'; | |
class MockHomeBloc extends MockBloc<HomeEvent, HomeState> implements HomeBloc {} | |
class FakeHomeState extends Fake implements HomeState {} | |
class FakeHomeEvent extends Fake implements HomeEvent {} | |
class MockCreateBloc extends MockBloc<CreateEventAbstract, CreateState> | |
implements CreateBloc {} | |
class FakeCreateState extends Fake implements CreateState {} | |
class FakeCreateEvent extends Fake implements CreateEvent {} | |
void homeScreenTest() { | |
late MockHomeBloc mockHomeBloc; | |
late MockCreateBloc mockCreateBloc; | |
late Widget homeScreen; | |
late Directory currentDirectory; | |
setUp(() { | |
registerFallbackValue<HomeState>(FakeHomeState()); | |
registerFallbackValue<HomeEvent>(FakeHomeEvent()); | |
registerFallbackValue<CreateEvent>(FakeCreateEvent()); | |
registerFallbackValue<CreateState>(FakeCreateState()); | |
mockHomeBloc = MockHomeBloc(); | |
mockCreateBloc = MockCreateBloc(); | |
homeScreen = MultiBlocProvider( | |
providers: [ | |
BlocProvider<CreateBloc>.value( | |
value: mockCreateBloc, | |
), | |
BlocProvider<HomeBloc>.value( | |
value: mockHomeBloc, | |
), | |
], | |
child: MaterialApp( | |
debugShowCheckedModeBanner: false, | |
home: NoteList( | |
homeBloc: mockHomeBloc, | |
noteModelList: NoteModelTest().generateFake(), | |
), | |
)); | |
currentDirectory = Directory.current; | |
}); | |
tearDown(() { | |
mockHomeBloc.close(); | |
}); | |
group('HomeScreen -', () { | |
testWidgets( | |
'1. Given the empty note list, there should be text displayed instead of the empty note list.', | |
(WidgetTester tester) async { | |
await tester.pumpWidget(MaterialApp( | |
debugShowCheckedModeBanner: false, | |
home: NoteList( | |
homeBloc: mockHomeBloc, | |
noteModelList: const [], | |
), | |
)); | |
expect(find.byKey(const Key("Empty note list")), findsOneWidget); | |
}); | |
testWidgets( | |
'2. Given the mocked note list, the note list should show the same title, start date, and end date.', | |
(WidgetTester tester) async { | |
await tester.pumpWidget(MaterialApp( | |
debugShowCheckedModeBanner: false, | |
home: NoteList( | |
homeBloc: mockHomeBloc, | |
noteModelList: NoteModelTest().generateFake(), | |
), | |
)); | |
expect(find.byKey(const Key("Empty note list")), findsNothing); | |
expect(find.text('Unit Test'), findsOneWidget); | |
expect( | |
find.text(DateTimeHelper.formatterToDisplay | |
.format(DateTimeHelper.formatter.parse('12 Jul 2021 12:33:00'))), | |
findsOneWidget); | |
expect( | |
find.text(DateTimeHelper.formatterToDisplay | |
.format(DateTimeHelper.formatter.parse('13 Jul 2021 12:34:00'))), | |
findsOneWidget); | |
}); | |
}); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment