mirror of
https://github.com/chenasraf/pantry-flutter.git
synced 2026-05-17 17:28:03 +00:00
88 lines
2.3 KiB
Dart
88 lines
2.3 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:flutter_test/flutter_test.dart';
|
|
import 'package:pantry/widgets/upload_tile.dart';
|
|
|
|
import '../helpers/fakes.dart';
|
|
import '../helpers/test_app.dart';
|
|
|
|
void main() {
|
|
testWidgets('shows progress indicator when loading', (tester) async {
|
|
final controller = FakePhotoBoardController();
|
|
final task = makeUploadTask(progress: 0.5);
|
|
|
|
await tester.pumpWidget(
|
|
wrapForTest(
|
|
SizedBox(
|
|
width: 120,
|
|
height: 120,
|
|
child: UploadTile(task: task, controller: controller),
|
|
),
|
|
),
|
|
);
|
|
|
|
expect(find.byType(CircularProgressIndicator), findsOneWidget);
|
|
expect(find.byIcon(Icons.refresh), findsNothing);
|
|
});
|
|
|
|
testWidgets('shows refresh icon when errored', (tester) async {
|
|
final controller = FakePhotoBoardController();
|
|
final task = makeUploadTask(error: 'network', done: true);
|
|
|
|
await tester.pumpWidget(
|
|
wrapForTest(
|
|
SizedBox(
|
|
width: 120,
|
|
height: 120,
|
|
child: UploadTile(task: task, controller: controller),
|
|
),
|
|
),
|
|
);
|
|
|
|
expect(find.byIcon(Icons.refresh), findsOneWidget);
|
|
expect(find.byType(CircularProgressIndicator), findsNothing);
|
|
});
|
|
|
|
testWidgets('tap-to-retry calls controller.retryUpload on errored tile', (
|
|
tester,
|
|
) async {
|
|
final controller = FakePhotoBoardController();
|
|
final task = makeUploadTask(error: 'network', done: true);
|
|
|
|
await tester.pumpWidget(
|
|
wrapForTest(
|
|
SizedBox(
|
|
width: 120,
|
|
height: 120,
|
|
child: UploadTile(task: task, controller: controller),
|
|
),
|
|
),
|
|
);
|
|
|
|
await tester.tap(find.byIcon(Icons.refresh));
|
|
await tester.pump();
|
|
|
|
expect(controller.retryCalls, 1);
|
|
expect(controller.lastRetried, same(task));
|
|
});
|
|
|
|
testWidgets('tapping close dismisses upload', (tester) async {
|
|
final controller = FakePhotoBoardController();
|
|
final task = makeUploadTask(progress: 0.2);
|
|
|
|
await tester.pumpWidget(
|
|
wrapForTest(
|
|
SizedBox(
|
|
width: 120,
|
|
height: 120,
|
|
child: UploadTile(task: task, controller: controller),
|
|
),
|
|
),
|
|
);
|
|
|
|
await tester.tap(find.byIcon(Icons.close));
|
|
await tester.pump();
|
|
|
|
expect(controller.dismissCalls, 1);
|
|
});
|
|
}
|