// 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); }); }