flutter_image_picker/test/image_picker_ui_test.dart
2024-08-08 10:42:33 +02:00

143 lines
4.2 KiB
Dart

// SPDX-FileCopyrightText: 2022 Iconica
//
// SPDX-License-Identifier: BSD-3-Clause
import "dart:typed_data";
import "package:flutter/material.dart";
import "package:flutter_image_picker/flutter_image_picker.dart"
as iconica_image_picker;
import "package:flutter_test/flutter_test.dart";
import "package:image_picker/image_picker.dart" as image_picker;
import "package:mocktail/mocktail.dart";
import "mocks/image_picker_service_mock.dart";
void main() {
var cameraImage = Uint8List(10);
var galleryImage = Uint8List(44);
testWidgets("Image Picker Shows With Normal Theme", (tester) async {
await tester.pumpWidget(
const MaterialApp(
home: Material(
child: iconica_image_picker.ImagePicker(),
),
),
);
var makePhotoIconFinder = find.byIcon(Icons.camera_alt_rounded);
var makePhotoTextFinder =
find.text(const iconica_image_picker.ImagePickerTheme().makePhotoText);
var selectImageIconFinder = find.byIcon(Icons.image);
var selectImageTextFinder = find
.text(const iconica_image_picker.ImagePickerTheme().selectImageText);
var closebuttonTextFinder = find.text("Close");
expect(makePhotoIconFinder, findsOneWidget);
expect(makePhotoTextFinder, findsOneWidget);
expect(selectImageIconFinder, findsOneWidget);
expect(selectImageTextFinder, findsOneWidget);
expect(closebuttonTextFinder, findsOneWidget);
});
testWidgets(
"Image Picker Calls Function Correctly When ImageSource Is Gallery",
(tester) async {
var serviceMock = ImagePickerServiceMock();
when(() => serviceMock.pickImage(image_picker.ImageSource.gallery))
.thenAnswer((_) => Future.value(galleryImage));
await tester.pumpWidget(
MaterialApp(
home: Material(
child: iconica_image_picker.ImagePicker(
service: serviceMock,
),
),
),
);
var finder = find.byKey(
Key(const iconica_image_picker.ImagePickerTheme().selectImageText),
);
await tester.tap(finder);
verify(() => serviceMock.pickImage(image_picker.ImageSource.gallery))
.called(1);
});
testWidgets(
"Image Picker Calls Function Correctly When ImageSource Is Camera",
(tester) async {
var serviceMock = ImagePickerServiceMock();
when(() => serviceMock.pickImage(image_picker.ImageSource.camera))
.thenAnswer((_) => Future.value(cameraImage));
await tester.pumpWidget(
MaterialApp(
home: Material(
child: iconica_image_picker.ImagePicker(
service: serviceMock,
),
),
),
);
var finder = find.byKey(
Key(const iconica_image_picker.ImagePickerTheme().makePhotoText),
);
await tester.tap(finder);
verify(() => serviceMock.pickImage(image_picker.ImageSource.camera))
.called(1);
});
testWidgets("Image Picker Shows With Custom Theme", (tester) async {
Widget makePhotoIcon = Container(
height: 125,
width: 125,
color: Colors.red,
);
var makePhotoText = "taaaake image";
Widget selectImageIcon = Container(
height: 125,
width: 125,
color: Colors.blue,
);
var selectImageText = "seleeeeect image";
var closeButtonText = "Close";
await tester.pumpWidget(
MaterialApp(
home: Material(
child: iconica_image_picker.ImagePicker(
theme: iconica_image_picker.ImagePickerTheme(
makePhotoIcon: makePhotoIcon,
makePhotoText: makePhotoText,
selectImageIcon: selectImageIcon,
selectImageText: selectImageText,
),
),
),
),
);
var makePhotoIconFinder = find.byWidget(makePhotoIcon);
var makePhotoTextFinder = find.text(makePhotoText);
var selectImageIconFinder = find.byWidget(selectImageIcon);
var selectImageTextFinder = find.text(selectImageText);
var closebuttonTextFinder = find.text(closeButtonText);
expect(makePhotoIconFinder, findsOneWidget);
expect(makePhotoTextFinder, findsOneWidget);
expect(selectImageIconFinder, findsOneWidget);
expect(selectImageTextFinder, findsOneWidget);
expect(closebuttonTextFinder, findsOneWidget);
});
}