Skip to content

Instantly share code, notes, and snippets.

@lepiku
Created June 7, 2021 11:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lepiku/14922df33bf2393217a853066738b376 to your computer and use it in GitHub Desktop.
Save lepiku/14922df33bf2393217a853066738b376 to your computer and use it in GitHub Desktop.
Repository Design Pattern in Flutter: repository test
void main() {
late IReportRepository reportRepository;
late ReportHelper mockReportHelper;
late MockMonitoringAPIProvider mockApiProvider;
late MockNetworkInfo mockNetworkInfo;
setUp(() {
mockReportHelper = MockReportHelper();
mockApiProvider = MockMonitoringAPIProvider();
mockNetworkInfo = MockNetworkInfo();
reportRepository = ReportRepository(
localDataSource: mockReportHelper,
remoteDataSource: mockApiProvider,
networkInfo: mockNetworkInfo,
);
});
test('queryAll when connected', () async {
when(mockNetworkInfo.isConnected()).thenAnswer((_) async => true);
when(mockApiProvider.getReports()).thenAnswer((_) async => _dummyReports);
when(mockReportHelper.insert(_dummyReports[0]))
.thenAnswer((realInvocation) async => _dummyReports[0]);
when(mockReportHelper.insert(_dummyReports[1]))
.thenAnswer((realInvocation) async => _dummyReports[1]);
when(mockReportHelper.insert(_dummyReports[2]))
.thenAnswer((realInvocation) async => _dummyReports[2]);
when(mockApiProvider.getReports()).thenAnswer((_) async => _dummyReports);
when(mockReportHelper.queryAll()).thenAnswer((_) async => _dummyReports);
List<Report> result = await reportRepository.queryAll();
verify(mockApiProvider.getReports()).called(1);
verify(mockReportHelper.insert(_dummyReports[0])).called(1);
verify(mockReportHelper.insert(_dummyReports[1])).called(1);
verify(mockReportHelper.insert(_dummyReports[2])).called(1);
verify(mockReportHelper.queryAll()).called(1);
expect(result, _dummyReports);
});
test('queryAll when not connected', () async {
when(mockNetworkInfo.isConnected()).thenAnswer((_) async => false);
when(mockReportHelper.queryAll()).thenAnswer((_) async => _dummyReports);
List<Report> result = await reportRepository.queryAll();
verify(mockReportHelper.queryAll()).called(1);
expect(result, _dummyReports);
});
// ...
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment