flutter_image_picker/test/image_picker_ui_test.dart

152 lines
4.6 KiB
Dart
Raw Normal View History

2022-11-01 08:24:41 +01:00
// SPDX-FileCopyrightText: 2022 Iconica
//
// SPDX-License-Identifier: BSD-3-Clause
2022-09-02 16:14:24 +02:00
import 'dart:typed_data';
import 'package:flutter/material.dart';
2022-09-05 11:13:07 +02:00
import 'package:flutter_image_picker/flutter_image_picker.dart'
as iconica_image_picker;
import 'package:flutter_test/flutter_test.dart';
2024-02-06 16:18:57 +01:00
import 'package:image_picker/image_picker.dart' as image_picker;
2022-09-02 16:14:24 +02:00
import 'package:mocktail/mocktail.dart';
2022-09-05 09:40:35 +02:00
import 'mocks/image_picker_service_mock.dart';
void main() {
2024-02-06 16:18:57 +01:00
var cameraImage = Uint8List(10);
var galleryImage = Uint8List(44);
2022-09-02 16:14:24 +02:00
testWidgets('Image Picker Shows With Normal Theme', (tester) async {
await tester.pumpWidget(
const MaterialApp(
home: Material(
child: iconica_image_picker.ImagePicker(),
),
),
);
2024-02-06 16:18:57 +01:00
var titleFinder =
2022-09-02 16:14:24 +02:00
find.text(const iconica_image_picker.ImagePickerTheme().title);
2024-02-06 16:18:57 +01:00
var makePhotoIconFinder = find.byIcon(Icons.camera_alt_rounded);
var makePhotoTextFinder =
2022-09-02 16:14:24 +02:00
find.text(const iconica_image_picker.ImagePickerTheme().makePhotoText);
2024-02-06 16:18:57 +01:00
var selectImageIconFinder = find.byIcon(Icons.image);
var selectImageTextFinder = find
2022-09-02 16:14:24 +02:00
.text(const iconica_image_picker.ImagePickerTheme().selectImageText);
2024-02-06 16:18:57 +01:00
var closebuttonTextFinder = find
2022-09-02 16:14:24 +02:00
.text(const iconica_image_picker.ImagePickerTheme().closeButtonText);
expect(titleFinder, findsOneWidget);
expect(makePhotoIconFinder, findsOneWidget);
expect(makePhotoTextFinder, findsOneWidget);
expect(selectImageIconFinder, findsOneWidget);
expect(selectImageTextFinder, findsOneWidget);
expect(closebuttonTextFinder, findsOneWidget);
});
2022-09-02 16:14:24 +02:00
testWidgets(
'Image Picker Calls Function Correctly When ImageSource Is Gallery',
(tester) async {
2024-02-06 16:18:57 +01:00
var serviceMock = ImagePickerServiceMock();
2022-09-02 16:14:24 +02:00
when(() => serviceMock.pickImage(image_picker.ImageSource.gallery))
.thenAnswer((_) => Future.value(galleryImage));
2024-02-06 16:18:57 +01:00
await tester.pumpWidget(
MaterialApp(
2022-09-02 16:14:24 +02:00
home: Material(
2024-02-06 16:18:57 +01:00
child: iconica_image_picker.ImagePicker(
imagePickerService: serviceMock,
),
),
),
);
2022-09-02 16:14:24 +02:00
2024-02-06 16:18:57 +01:00
var finder = find.byKey(
Key(const iconica_image_picker.ImagePickerTheme().selectImageText),
);
2022-09-02 16:14:24 +02:00
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 {
2024-02-06 16:18:57 +01:00
var serviceMock = ImagePickerServiceMock();
2022-09-02 16:14:24 +02:00
when(() => serviceMock.pickImage(image_picker.ImageSource.camera))
.thenAnswer((_) => Future.value(cameraImage));
2024-02-06 16:18:57 +01:00
await tester.pumpWidget(
MaterialApp(
2022-09-02 16:14:24 +02:00
home: Material(
2024-02-06 16:18:57 +01:00
child: iconica_image_picker.ImagePicker(
imagePickerService: serviceMock,
),
),
),
);
2022-09-02 16:14:24 +02:00
2024-02-06 16:18:57 +01:00
var finder = find.byKey(
Key(const iconica_image_picker.ImagePickerTheme().makePhotoText),
);
2022-09-02 16:14:24 +02:00
await tester.tap(finder);
verify(() => serviceMock.pickImage(image_picker.ImageSource.camera))
.called(1);
});
testWidgets('Image Picker Shows With Custom Theme', (tester) async {
2024-02-06 16:18:57 +01:00
var title = 'title';
Widget makePhotoIcon = Container(
height: 125,
width: 125,
color: Colors.red,
);
2024-02-06 16:18:57 +01:00
var makePhotoText = 'taaaake image';
Widget selectImageIcon = Container(
height: 125,
width: 125,
color: Colors.blue,
);
2024-02-06 16:18:57 +01:00
var selectImageText = 'seleeeeect image';
var closeButtonText = 'Close Dialog!';
2024-02-06 16:18:57 +01:00
await tester.pumpWidget(
MaterialApp(
home: Material(
2024-02-06 16:18:57 +01:00
child: iconica_image_picker.ImagePicker(
imagePickerTheme: iconica_image_picker.ImagePickerTheme(
title: title,
makePhotoIcon: makePhotoIcon,
makePhotoText: makePhotoText,
selectImageIcon: selectImageIcon,
selectImageText: selectImageText,
closeButtonText: closeButtonText,
),
),
),
),
);
var titleFinder = find.text(title);
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(titleFinder, findsOneWidget);
expect(makePhotoIconFinder, findsOneWidget);
expect(makePhotoTextFinder, findsOneWidget);
expect(selectImageIconFinder, findsOneWidget);
expect(selectImageTextFinder, findsOneWidget);
expect(closebuttonTextFinder, findsOneWidget);
});
}