Skip to content

Instantly share code, notes, and snippets.

@lemusthelroy
Created May 21, 2020 05:50
Show Gist options
  • Save lemusthelroy/217ada308daf7b6efc9eb3d13d1fca62 to your computer and use it in GitHub Desktop.
Save lemusthelroy/217ada308daf7b6efc9eb3d13d1fca62 to your computer and use it in GitHub Desktop.
import 'package:my_app_app/components/screens/search.dart';
import 'package:my_app_app/providers/search.dart';
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:mockito/mockito.dart';
import 'package:http/http.dart' as http;
import 'package:provider/provider.dart';
class MockClient extends Mock implements http.Client {}
void main() {
Widget wrapper({Widget child, @required http.Client client}) {
return MaterialApp(
home: MultiProvider(providers: [
ChangeNotifierProvider.value(
value: Search(client: client),
),
], child: child));
}
testWidgets('show empty text validation on empty search',
(WidgetTester tester) async {
var mockClient = MockClient();
when(mockClient.get(any))
.thenAnswer((_) async => http.Response('{"title": "Test"}', 200));
// Create the widget by telling the tester to build it.
await tester
.pumpWidget(wrapper(child: SearchItems(), client: mockClient));
verify(mockClient.get(any)).called(1);
await tester.fling(find.text('Test Item'), const Offset(0.0, 300.0), 1000.0);
await tester.pump();
verify(client.get(any)).called(2);
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment