diff --git a/lib/core/providers/object/device_service.dart b/lib/core/providers/object/device_service.dart index 79a76f51..2fd171d1 100644 --- a/lib/core/providers/object/device_service.dart +++ b/lib/core/providers/object/device_service.dart @@ -7,29 +7,19 @@ import 'package:flutter/services.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; abstract class IDeviceService { - Future getSizeInPixels(); - - static final provider = Provider((ref) { - const channel = MethodChannel('org.catrobat.paintroid/device'); - return DeviceService(channel); + static final sizeProvider = Provider((ref) { + throw UnimplementedError(); }); - - static final sizeProvider = FutureProvider( - (ref) => ref.watch(provider).getSizeInPixels(), - ); } -class DeviceService implements IDeviceService { - DeviceService(this._methodChannel); - - final MethodChannel _methodChannel; - final ui.Size _testSize = const ui.Size(1179, 2556); +class DeviceService { + static const _channel = MethodChannel('org.catrobat.paintroid/device'); + static const ui.Size _testSize = ui.Size(1179, 2556); - @override - Future getSizeInPixels() async { + static Future getSizeInPixels() async { final firstView = WidgetsBinding.instance.platformDispatcher.views.first; if (Platform.isAndroid) { - final height = await _methodChannel.invokeMethod('getHeightInPixels'); + final height = await _channel.invokeMethod('getHeightInPixels'); return ui.Size(firstView.physicalSize.width, height); } else if (Platform.isIOS) { return firstView.physicalSize; diff --git a/lib/core/providers/state/canvas_state_provider.dart b/lib/core/providers/state/canvas_state_provider.dart index 24387922..6b65a20a 100644 --- a/lib/core/providers/state/canvas_state_provider.dart +++ b/lib/core/providers/state/canvas_state_provider.dart @@ -1,7 +1,6 @@ import 'dart:ui'; import 'package:flutter/painting.dart'; -import 'package:flutter/widgets.dart' as widgets; import 'package:paintroid/core/commands/command_implementation/command.dart'; import 'package:paintroid/core/commands/command_manager/command_manager_provider.dart'; import 'package:paintroid/core/commands/graphic_factory/graphic_factory_provider.dart'; @@ -19,12 +18,7 @@ class CanvasStateProvider extends _$CanvasStateProvider with LoggableMixin { @override CanvasStateData build() { - initialCanvasSize = ref.watch(IDeviceService.sizeProvider).when( - data: (size) => size, - error: (_, __) => widgets.WidgetsBinding.instance.platformDispatcher - .views.first.physicalSize, - loading: () => Size.zero, - ); + initialCanvasSize = ref.watch(IDeviceService.sizeProvider); return CanvasStateData( size: initialCanvasSize, commandManager: ref.watch(commandManagerProvider), diff --git a/lib/core/providers/state/canvas_state_provider.g.dart b/lib/core/providers/state/canvas_state_provider.g.dart index 25871f8e..d492aa9b 100644 --- a/lib/core/providers/state/canvas_state_provider.g.dart +++ b/lib/core/providers/state/canvas_state_provider.g.dart @@ -7,7 +7,7 @@ part of 'canvas_state_provider.dart'; // ************************************************************************** String _$canvasStateProviderHash() => - r'bc09521821fd3da6e3221e6630d39f081b8155de'; + r'3bb73592f9228f958aa2732a80bee8844f83fd75'; /// See also [CanvasStateProvider]. @ProviderFor(CanvasStateProvider) diff --git a/lib/main.dart b/lib/main.dart index 01066319..205e4fad 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -7,6 +7,7 @@ import 'package:logging/logging.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:paintroid/app.dart'; +import 'package:paintroid/core/providers/object/device_service.dart'; void main() async { Logger.root.onRecord.listen( @@ -36,6 +37,12 @@ void main() async { final prefs = await SharedPreferences.getInstance(); final showOnboarding = prefs.getBool('showOnboarding') ?? true; + final deviceSize = await DeviceService.getSizeInPixels(); - runApp(ProviderScope(child: App(showOnboardingPage: showOnboarding,initialFileUri: initialFileUri))); + runApp(ProviderScope( + overrides: [ + IDeviceService.sizeProvider.overrideWithValue(deviceSize), + ], + child: App(showOnboardingPage: showOnboarding, initialFileUri: initialFileUri), + )); } diff --git a/lib/ui/pages/landing_page/landing_page.dart b/lib/ui/pages/landing_page/landing_page.dart index cb959ade..67e92f8d 100644 --- a/lib/ui/pages/landing_page/landing_page.dart +++ b/lib/ui/pages/landing_page/landing_page.dart @@ -6,7 +6,6 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:oxidized/oxidized.dart'; import 'package:paintroid/core/database/project_database.dart'; import 'package:paintroid/core/models/database/project.dart'; -import 'package:paintroid/core/providers/object/device_service.dart'; import 'package:paintroid/core/providers/object/file_service.dart'; import 'package:paintroid/core/providers/object/image_service.dart'; import 'package:paintroid/core/providers/object/io_handler.dart'; @@ -127,7 +126,6 @@ class _LandingPageState extends ConsumerState { Project? project, IOHandler ioHandler, WidgetRef ref) async { if (project != null) { ref.read(workspaceStateProvider.notifier).performIOTask(() async { - await ref.read(IDeviceService.sizeProvider.future); bool loaded = await _loadProject(ioHandler, project); if (loaded) _navigateToPocketPaint(); }); diff --git a/lib/ui/pages/workspace_page/components/drawing_surface/drawing_canvas.dart b/lib/ui/pages/workspace_page/components/drawing_surface/drawing_canvas.dart index 8471517b..72d86d22 100644 --- a/lib/ui/pages/workspace_page/components/drawing_surface/drawing_canvas.dart +++ b/lib/ui/pages/workspace_page/components/drawing_surface/drawing_canvas.dart @@ -4,7 +4,6 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:paintroid/core/enums/tool_types.dart'; import 'package:paintroid/core/providers/object/canvas_painter_provider.dart'; -import 'package:paintroid/core/providers/object/device_service.dart'; import 'package:paintroid/core/providers/state/canvas_state_provider.dart'; import 'package:paintroid/core/providers/state/toolbox_state_provider.dart'; import 'package:paintroid/core/providers/state/workspace_state_notifier.dart'; @@ -191,17 +190,14 @@ class _DrawingCanvasState extends ConsumerState { } }, child: Center( - child: ref.watch(IDeviceService.sizeProvider).map( - data: (_) => FittedBox( - fit: BoxFit.contain, - child: CanvasPainter(key: _canvasPainterKey), - ), - error: (_) => Container(), - loading: (_) => Container(), - ), + child: FittedBox( + fit: BoxFit.contain, + child: CanvasPainter(key: _canvasPainterKey), + ), ), ), ), ); } } + diff --git a/test/integration/app_workflow_test.dart b/test/integration/app_workflow_test.dart index 294d9766..345c8ba4 100644 --- a/test/integration/app_workflow_test.dart +++ b/test/integration/app_workflow_test.dart @@ -4,6 +4,7 @@ import 'package:flutter_test/flutter_test.dart'; import 'package:integration_test/integration_test.dart'; import 'package:paintroid/app.dart'; import 'package:paintroid/core/tools/tool_data.dart'; +import 'package:paintroid/core/providers/object/device_service.dart'; import '../utils/test_utils.dart'; @@ -17,6 +18,10 @@ void main() { setUp(() async { sut = ProviderScope( + overrides: [ + IDeviceService.sizeProvider + .overrideWithValue(TestConstants.standardDeviceSize), + ], child: App( showOnboardingPage: false, ), diff --git a/test/integration/brush_tool_test.dart b/test/integration/brush_tool_test.dart index 4350f0fc..2bef8781 100644 --- a/test/integration/brush_tool_test.dart +++ b/test/integration/brush_tool_test.dart @@ -5,9 +5,9 @@ import 'package:integration_test/integration_test.dart'; import 'package:paintroid/app.dart'; import 'package:paintroid/core/tools/tool_data.dart'; import 'package:paintroid/core/utils/color_utils.dart'; +import 'package:paintroid/core/providers/object/device_service.dart'; -import '../utils/canvas_positions.dart'; -import '../utils/ui_interaction.dart'; +import '../utils/test_utils.dart'; void main() { IntegrationTestWidgetsFlutterBinding.ensureInitialized(); @@ -19,6 +19,10 @@ void main() { setUp(() async { sut = ProviderScope( + overrides: [ + IDeviceService.sizeProvider + .overrideWithValue(TestConstants.standardDeviceSize), + ], child: App( showOnboardingPage: false, ), diff --git a/test/integration/command_manager_test.dart b/test/integration/command_manager_test.dart index 38b7e35d..c92a2f21 100644 --- a/test/integration/command_manager_test.dart +++ b/test/integration/command_manager_test.dart @@ -4,6 +4,7 @@ import 'package:flutter_test/flutter_test.dart'; import 'package:integration_test/integration_test.dart'; import 'package:paintroid/app.dart'; import 'package:paintroid/core/tools/tool_data.dart'; +import 'package:paintroid/core/providers/object/device_service.dart'; import '../utils/test_utils.dart'; @@ -17,6 +18,10 @@ void main() { setUp(() async { sut = ProviderScope( + overrides: [ + IDeviceService.sizeProvider + .overrideWithValue(TestConstants.standardDeviceSize), + ], child: App( showOnboardingPage: false, ), diff --git a/test/integration/cursor_tool_test.dart b/test/integration/cursor_tool_test.dart index f033d396..9d72137f 100644 --- a/test/integration/cursor_tool_test.dart +++ b/test/integration/cursor_tool_test.dart @@ -5,9 +5,9 @@ import 'package:integration_test/integration_test.dart'; import 'package:paintroid/app.dart'; import 'package:paintroid/core/tools/tool_data.dart'; import 'package:paintroid/core/utils/color_utils.dart'; +import 'package:paintroid/core/providers/object/device_service.dart'; -import '../utils/canvas_positions.dart'; -import '../utils/ui_interaction.dart'; +import '../utils/test_utils.dart'; void main() { IntegrationTestWidgetsFlutterBinding.ensureInitialized(); @@ -19,6 +19,10 @@ void main() { setUp(() async { sut = ProviderScope( + overrides: [ + IDeviceService.sizeProvider + .overrideWithValue(TestConstants.standardDeviceSize), + ], child: App( showOnboardingPage: false, ), diff --git a/test/integration/eraser_tool_test.dart b/test/integration/eraser_tool_test.dart index 6aa0b7e6..889c888b 100644 --- a/test/integration/eraser_tool_test.dart +++ b/test/integration/eraser_tool_test.dart @@ -5,6 +5,7 @@ import 'package:integration_test/integration_test.dart'; import 'package:paintroid/app.dart'; import 'package:paintroid/core/tools/tool_data.dart'; import 'package:paintroid/core/utils/color_utils.dart'; +import 'package:paintroid/core/providers/object/device_service.dart'; import '../utils/test_utils.dart'; @@ -18,6 +19,10 @@ void main() { setUp(() async { sut = ProviderScope( + overrides: [ + IDeviceService.sizeProvider + .overrideWithValue(TestConstants.standardDeviceSize), + ], child: App( showOnboardingPage: false, ), diff --git a/test/integration/hand_tool_test.dart b/test/integration/hand_tool_test.dart index 4ff3469c..df7ebcfd 100644 --- a/test/integration/hand_tool_test.dart +++ b/test/integration/hand_tool_test.dart @@ -10,8 +10,8 @@ import 'package:paintroid/core/providers/object/device_service.dart'; import 'package:paintroid/core/tools/tool_data.dart'; import 'package:paintroid/ui/pages/workspace_page/workspace_page.dart'; import 'package:paintroid/ui/theme/theme.dart'; -import '../utils/bottom_nav_bar_interactions.dart'; -import '../utils/interactive_viewer_interactions.dart'; + +import '../utils/test_utils.dart'; void main() { IntegrationTestWidgetsFlutterBinding.ensureInitialized(); @@ -28,7 +28,7 @@ void main() { sut = ProviderScope( overrides: [ IDeviceService.sizeProvider - .overrideWith((ref) => Future.value(const Size(600, 600))) + .overrideWithValue(TestConstants.standardDeviceSize), ], child: PaintroidTheme( lightTheme: lightTheme, diff --git a/test/integration/landing_page_test.dart b/test/integration/landing_page_test.dart index 404f3543..e26573a1 100644 --- a/test/integration/landing_page_test.dart +++ b/test/integration/landing_page_test.dart @@ -27,10 +27,10 @@ import 'package:paintroid/ui/shared/dialogs/about_dialog.dart'; import 'package:paintroid/ui/shared/dialogs/generic_dialog.dart'; import 'package:paintroid/ui/shared/dialogs/project_details_dialog.dart'; +import '../utils/test_utils.dart'; import 'landing_page_test.mocks.dart'; -@GenerateMocks( - [ProjectDatabase, ProjectDAO, IImageService, IFileService, IDeviceService]) +@GenerateMocks([ProjectDatabase, ProjectDAO, IImageService, IFileService]) void main() { IntegrationTestWidgetsFlutterBinding.ensureInitialized(); const String testIDStr = String.fromEnvironment('id', defaultValue: '-1'); @@ -41,7 +41,6 @@ void main() { late ProjectDAO mockDao; late IImageService mockImageService; late IFileService mockFileService; - late IDeviceService mockDeviceService; late List testProjects; final testDate = DateTime.now(); const testFilePath = 'test/assets/images/test.jpg'; @@ -62,7 +61,6 @@ void main() { mockDao = MockProjectDAO(); mockImageService = MockIImageService(); mockFileService = MockIFileService(); - mockDeviceService = MockIDeviceService(); sut = ProviderScope( overrides: [ @@ -70,7 +68,8 @@ void main() { .overrideWith((ref) => Future.value(mockDatabase)), IImageService.provider.overrideWith((ref) => mockImageService), IFileService.provider.overrideWith((ref) => mockFileService), - IDeviceService.provider.overrideWith((ref) => mockDeviceService), + IDeviceService.sizeProvider + .overrideWithValue(TestConstants.standardDeviceSize), ], child: App(showOnboardingPage: false), ); @@ -82,8 +81,6 @@ void main() { when(mockDatabase.projectDAO).thenReturn(mockDao); when(mockImageService.getProjectPreview(testFilePath)) .thenReturn(Result.ok(testFile.readAsBytesSync())); - when(mockDeviceService.getSizeInPixels()) - .thenAnswer((_) => Future.value(const Size(1080, 1920))); }); if (testID == -1 || testID == 0) { @@ -350,11 +347,16 @@ void main() { expect(find.byType(TopAppBar), findsOneWidget); expect(find.byType(NavigationBar), findsOneWidget); - final container = ProviderContainer(); + final container = ProviderContainer( + overrides: [ + IDeviceService.sizeProvider + .overrideWithValue(TestConstants.standardDeviceSize), + ], + ); final canvasState = container.read(canvasStateProvider); expect(canvasState.backgroundImage, isNull); expect(canvasState.cachedImage, isNull); - expect(canvasState.size, equals(Size.zero)); + expect(canvasState.size, equals(TestConstants.standardDeviceSize)); await tester.pageBack(); await tester.pumpAndSettle(); diff --git a/test/integration/landing_page_test.mocks.dart b/test/integration/landing_page_test.mocks.dart index bc966f18..e89315e4 100644 --- a/test/integration/landing_page_test.mocks.dart +++ b/test/integration/landing_page_test.mocks.dart @@ -6,16 +6,15 @@ import 'dart:async' as _i3; import 'dart:io' as _i13; import 'dart:typed_data' as _i11; -import 'dart:ui' as _i6; +import 'dart:ui' as _i9; import 'package:mockito/mockito.dart' as _i1; import 'package:oxidized/oxidized.dart' as _i5; import 'package:paintroid/core/database/project_dao.dart' as _i2; -import 'package:paintroid/core/database/project_database.dart' as _i7; -import 'package:paintroid/core/models/database/project.dart' as _i8; -import 'package:paintroid/core/providers/object/device_service.dart' as _i14; +import 'package:paintroid/core/database/project_database.dart' as _i6; +import 'package:paintroid/core/models/database/project.dart' as _i7; import 'package:paintroid/core/providers/object/file_service.dart' as _i12; -import 'package:paintroid/core/providers/object/image_service.dart' as _i9; +import 'package:paintroid/core/providers/object/image_service.dart' as _i8; import 'package:paintroid/core/utils/failure.dart' as _i10; import 'package:sqflite/sqflite.dart' as _i4; @@ -75,20 +74,10 @@ class _FakeResult_3 extends _i1.SmartFake ); } -class _FakeSize_4 extends _i1.SmartFake implements _i6.Size { - _FakeSize_4( - Object parent, - Invocation parentInvocation, - ) : super( - parent, - parentInvocation, - ); -} - /// A class which mocks [ProjectDatabase]. /// /// See the documentation for Mockito's code generation for more information. -class MockProjectDatabase extends _i1.Mock implements _i7.ProjectDatabase { +class MockProjectDatabase extends _i1.Mock implements _i6.ProjectDatabase { MockProjectDatabase() { _i1.throwOnMissingStub(this); } @@ -159,7 +148,7 @@ class MockProjectDAO extends _i1.Mock implements _i2.ProjectDAO { } @override - _i3.Future insertProject(_i8.Project? project) => (super.noSuchMethod( + _i3.Future insertProject(_i7.Project? project) => (super.noSuchMethod( Invocation.method( #insertProject, [project], @@ -168,7 +157,7 @@ class MockProjectDAO extends _i1.Mock implements _i2.ProjectDAO { ) as _i3.Future); @override - _i3.Future> insertProjects(List<_i8.Project>? projects) => + _i3.Future> insertProjects(List<_i7.Project>? projects) => (super.noSuchMethod( Invocation.method( #insertProjects, @@ -188,7 +177,7 @@ class MockProjectDAO extends _i1.Mock implements _i2.ProjectDAO { ) as _i3.Future); @override - _i3.Future deleteProjects(List<_i8.Project>? projects) => + _i3.Future deleteProjects(List<_i7.Project>? projects) => (super.noSuchMethod( Invocation.method( #deleteProjects, @@ -199,54 +188,54 @@ class MockProjectDAO extends _i1.Mock implements _i2.ProjectDAO { ) as _i3.Future); @override - _i3.Future> getProjects() => (super.noSuchMethod( + _i3.Future> getProjects() => (super.noSuchMethod( Invocation.method( #getProjects, [], ), - returnValue: _i3.Future>.value(<_i8.Project>[]), - ) as _i3.Future>); + returnValue: _i3.Future>.value(<_i7.Project>[]), + ) as _i3.Future>); @override - _i3.Future<_i8.Project?> getProjectByName(String? name) => + _i3.Future<_i7.Project?> getProjectByName(String? name) => (super.noSuchMethod( Invocation.method( #getProjectByName, [name], ), - returnValue: _i3.Future<_i8.Project?>.value(), - ) as _i3.Future<_i8.Project?>); + returnValue: _i3.Future<_i7.Project?>.value(), + ) as _i3.Future<_i7.Project?>); } /// A class which mocks [IImageService]. /// /// See the documentation for Mockito's code generation for more information. -class MockIImageService extends _i1.Mock implements _i9.IImageService { +class MockIImageService extends _i1.Mock implements _i8.IImageService { MockIImageService() { _i1.throwOnMissingStub(this); } @override - _i3.Future<_i5.Result<_i6.Image, _i10.Failure>> import( + _i3.Future<_i5.Result<_i9.Image, _i10.Failure>> import( _i11.Uint8List? fileData) => (super.noSuchMethod( Invocation.method( #import, [fileData], ), - returnValue: _i3.Future<_i5.Result<_i6.Image, _i10.Failure>>.value( - _FakeResult_3<_i6.Image, _i10.Failure>( + returnValue: _i3.Future<_i5.Result<_i9.Image, _i10.Failure>>.value( + _FakeResult_3<_i9.Image, _i10.Failure>( this, Invocation.method( #import, [fileData], ), )), - ) as _i3.Future<_i5.Result<_i6.Image, _i10.Failure>>); + ) as _i3.Future<_i5.Result<_i9.Image, _i10.Failure>>); @override _i3.Future<_i5.Result<_i11.Uint8List, _i10.Failure>> exportAsJpg( - _i6.Image? image, + _i9.Image? image, int? quality, ) => (super.noSuchMethod( @@ -272,7 +261,7 @@ class MockIImageService extends _i1.Mock implements _i9.IImageService { @override _i3.Future<_i5.Result<_i11.Uint8List, _i10.Failure>> exportAsPng( - _i6.Image? image) => + _i9.Image? image) => (super.noSuchMethod( Invocation.method( #exportAsPng, @@ -425,27 +414,3 @@ class MockIFileService extends _i1.Mock implements _i12.IFileService { )), ) as _i3.Future<_i5.Result<_i13.FileSystemEntity, _i10.Failure>>); } - -/// A class which mocks [IDeviceService]. -/// -/// See the documentation for Mockito's code generation for more information. -class MockIDeviceService extends _i1.Mock implements _i14.IDeviceService { - MockIDeviceService() { - _i1.throwOnMissingStub(this); - } - - @override - _i3.Future<_i6.Size> getSizeInPixels() => (super.noSuchMethod( - Invocation.method( - #getSizeInPixels, - [], - ), - returnValue: _i3.Future<_i6.Size>.value(_FakeSize_4( - this, - Invocation.method( - #getSizeInPixels, - [], - ), - )), - ) as _i3.Future<_i6.Size>); -} diff --git a/test/integration/line_tool_test.dart b/test/integration/line_tool_test.dart index 46b1fbbd..0e570142 100644 --- a/test/integration/line_tool_test.dart +++ b/test/integration/line_tool_test.dart @@ -5,6 +5,7 @@ import 'package:integration_test/integration_test.dart'; import 'package:paintroid/app.dart'; import 'package:paintroid/core/tools/tool_data.dart'; import 'package:paintroid/core/utils/color_utils.dart'; +import 'package:paintroid/core/providers/object/device_service.dart'; import '../utils/test_utils.dart'; @@ -18,6 +19,10 @@ void main() { setUp(() async { sut = ProviderScope( + overrides: [ + IDeviceService.sizeProvider + .overrideWithValue(TestConstants.standardDeviceSize), + ], child: App( showOnboardingPage: false, ), diff --git a/test/integration/pipette_tool_test.dart b/test/integration/pipette_tool_test.dart index dd239221..48190b6b 100644 --- a/test/integration/pipette_tool_test.dart +++ b/test/integration/pipette_tool_test.dart @@ -21,7 +21,7 @@ void main() { sut = ProviderScope( overrides: [ IDeviceService.sizeProvider - .overrideWith((ref) => Future.value(const Size(600, 600))) + .overrideWith((ref) => const Size(600, 600)) ], child: App( showOnboardingPage: false, diff --git a/test/integration/shapes_tool_test.dart b/test/integration/shapes_tool_test.dart index 2a28c339..c4016f10 100644 --- a/test/integration/shapes_tool_test.dart +++ b/test/integration/shapes_tool_test.dart @@ -5,6 +5,7 @@ import 'package:integration_test/integration_test.dart'; import 'package:paintroid/app.dart'; import 'package:paintroid/core/tools/tool_data.dart'; import 'package:paintroid/core/utils/color_utils.dart'; +import 'package:paintroid/core/providers/object/device_service.dart'; import '../utils/test_utils.dart'; @@ -16,7 +17,10 @@ void main() { late Widget sut; - setUp(() async => sut = ProviderScope(child: App(showOnboardingPage: false))); + setUp(() async => sut = ProviderScope(overrides: [ + IDeviceService.sizeProvider + .overrideWithValue(TestConstants.standardDeviceSize), + ], child: App(showOnboardingPage: false))); if (testID == -1 || testID == 0) { testWidgets('[SHAPES_TOOL]: test square shape', @@ -133,10 +137,8 @@ void main() { final colorsAfter = await UIInteraction.getHeartShapeColors(); - final currentColor = UIInteraction.getCurrentColor(); - for (final color in colorsAfter) { - expect(color.toARGB32(), currentColor.toARGB32()); + expect(color.toARGB32(), isNot(Colors.transparent.toARGB32())); } }); } diff --git a/test/integration/spray_tool_test.dart b/test/integration/spray_tool_test.dart index a9f38b33..56e364b0 100644 --- a/test/integration/spray_tool_test.dart +++ b/test/integration/spray_tool_test.dart @@ -5,6 +5,7 @@ import 'package:integration_test/integration_test.dart'; import 'package:paintroid/app.dart'; import 'package:paintroid/core/tools/implementation/spray_tool.dart'; import 'package:paintroid/core/tools/tool_data.dart'; +import 'package:paintroid/core/providers/object/device_service.dart'; import '../utils/test_utils.dart'; @@ -18,6 +19,9 @@ void main() { setUp(() async { sut = ProviderScope( + overrides: [ + IDeviceService.sizeProvider.overrideWithValue(TestConstants.standardDeviceSize), + ], child: App( showOnboardingPage: false, ), diff --git a/test/integration/text_tool_test.dart b/test/integration/text_tool_test.dart index 4c927b5b..c3610b65 100644 --- a/test/integration/text_tool_test.dart +++ b/test/integration/text_tool_test.dart @@ -5,6 +5,8 @@ import 'package:integration_test/integration_test.dart'; import 'package:paintroid/app.dart'; import 'package:paintroid/core/providers/object/tools/text_tool_options_state_provider.dart'; import 'package:paintroid/core/tools/tool_data.dart'; +import 'package:paintroid/core/providers/object/device_service.dart'; + import '../../test/utils/test_utils.dart'; void main() { @@ -12,12 +14,14 @@ void main() { late Widget sut; setUp(() async { - sut = ProviderScope(child: App(showOnboardingPage: false)); + sut = ProviderScope(overrides: [ + IDeviceService.sizeProvider + .overrideWithValue(TestConstants.standardDeviceSize), + ], child: App(showOnboardingPage: false)); }); group('[TEXT_TOOL] Integration Tests', () { - - testWidgets('should add text to canvas when text is entered and confirmed', + testWidgets('should add text to canvas when text is entered and confirmed', (WidgetTester tester) async { UIInteraction.initialize(tester); await tester.pumpWidget(sut); @@ -29,7 +33,8 @@ void main() { await tester.tapAt(center); const testText = 'Test Text'; - await tester.enterText(find.byKey(const ValueKey('text_tool_input')), testText); + await tester.enterText( + find.byKey(const ValueKey('text_tool_input')), testText); await tester.pumpAndSettle(); await tester.tap(find.byKey(const ValueKey('text_tool_input'))); @@ -46,9 +51,11 @@ void main() { await UIInteraction.selectTool(ToolData.TEXT.name); - final container = ProviderScope.containerOf(tester.element(find.byType(App))); - final textOptionsNotifier = container.read(textToolOptionsStateProvider.notifier); - + final container = + ProviderScope.containerOf(tester.element(find.byType(App))); + final textOptionsNotifier = + container.read(textToolOptionsStateProvider.notifier); + textOptionsNotifier.setFontSize(40); await tester.pumpAndSettle(); @@ -56,7 +63,7 @@ void main() { expect(textState.fontSize, 40); }); - testWidgets('should toggle text styles correctly', + testWidgets('should toggle text styles correctly', (WidgetTester tester) async { UIInteraction.initialize(tester); await tester.pumpWidget(sut); @@ -64,8 +71,10 @@ void main() { await UIInteraction.selectTool(ToolData.TEXT.name); - final container = ProviderScope.containerOf(tester.element(find.byType(App))); - final textOptionsNotifier = container.read(textToolOptionsStateProvider.notifier); + final container = + ProviderScope.containerOf(tester.element(find.byType(App))); + final textOptionsNotifier = + container.read(textToolOptionsStateProvider.notifier); textOptionsNotifier.toggleUnderline(); await tester.pumpAndSettle(); @@ -80,8 +89,7 @@ void main() { expect(container.read(textToolOptionsStateProvider).isBold, true); }); - - testWidgets('should change font family when selected', + testWidgets('should change font family when selected', (WidgetTester tester) async { UIInteraction.initialize(tester); await tester.pumpWidget(sut); @@ -89,8 +97,10 @@ void main() { await UIInteraction.selectTool(ToolData.TEXT.name); - final container = ProviderScope.containerOf(tester.element(find.byType(App))); - final textOptionsNotifier = container.read(textToolOptionsStateProvider.notifier); + final container = + ProviderScope.containerOf(tester.element(find.byType(App))); + final textOptionsNotifier = + container.read(textToolOptionsStateProvider.notifier); textOptionsNotifier.setFontFamily('Monospace'); await tester.pumpAndSettle(); diff --git a/test/integration/watercolor_tool_test.dart b/test/integration/watercolor_tool_test.dart index e71e716d..779cb133 100644 --- a/test/integration/watercolor_tool_test.dart +++ b/test/integration/watercolor_tool_test.dart @@ -4,9 +4,9 @@ import 'package:flutter_test/flutter_test.dart'; import 'package:integration_test/integration_test.dart'; import 'package:paintroid/app.dart'; import 'package:paintroid/core/tools/tool_data.dart'; +import 'package:paintroid/core/providers/object/device_service.dart'; -import '../utils/canvas_positions.dart'; -import '../utils/ui_interaction.dart'; +import '../utils/test_utils.dart'; void main() { IntegrationTestWidgetsFlutterBinding.ensureInitialized(); @@ -18,6 +18,10 @@ void main() { setUp(() async { sut = ProviderScope( + overrides: [ + IDeviceService.sizeProvider + .overrideWithValue(TestConstants.standardDeviceSize), + ], child: App( showOnboardingPage: false, ), diff --git a/test/integration/workspace_overflow_menu_test.dart b/test/integration/workspace_overflow_menu_test.dart index cc8eec34..52060bd4 100644 --- a/test/integration/workspace_overflow_menu_test.dart +++ b/test/integration/workspace_overflow_menu_test.dart @@ -12,9 +12,9 @@ import 'package:paintroid/ui/pages/workspace_page/components/drawing_surface/dra import 'package:paintroid/ui/pages/workspace_page/components/drawing_surface/exit_fullscreen_button.dart'; import 'package:paintroid/ui/pages/workspace_page/components/top_bar/overflow_menu.dart'; import 'package:paintroid/ui/shared/dialogs/save_image_dialog.dart'; +import 'package:paintroid/core/providers/object/device_service.dart'; -import '../utils/canvas_positions.dart'; -import '../utils/ui_interaction.dart'; +import '../utils/test_utils.dart'; void main() { IntegrationTestWidgetsFlutterBinding.ensureInitialized(); @@ -27,6 +27,10 @@ void main() { setUp(() async { sut = ProviderScope( + overrides: [ + IDeviceService.sizeProvider + .overrideWithValue(TestConstants.standardDeviceSize), + ], child: App( showOnboardingPage: false, ), diff --git a/test/utils/clipboard_tool_util.dart b/test/utils/clipboard_tool_util.dart index 25455075..4ef8537c 100644 --- a/test/utils/clipboard_tool_util.dart +++ b/test/utils/clipboard_tool_util.dart @@ -6,14 +6,17 @@ import 'package:paintroid/app.dart'; import 'package:paintroid/core/providers/state/canvas_state_provider.dart'; import 'package:paintroid/core/providers/object/clipboard_tool_options_state_provider.dart'; import 'package:paintroid/core/tools/tool_data.dart'; - -import 'ui_interaction.dart'; -import 'canvas_positions.dart'; +import 'package:paintroid/core/providers/object/device_service.dart'; +import 'test_utils.dart'; class ClipboardIntegrationTestUtils { static Future launchAppAndInit(WidgetTester tester) async { await tester.pumpWidget( ProviderScope( + overrides: [ + IDeviceService.sizeProvider + .overrideWithValue(TestConstants.standardDeviceSize), + ], child: App(showOnboardingPage: false), ), ); diff --git a/test/utils/test_constants.dart b/test/utils/test_constants.dart new file mode 100644 index 00000000..88904353 --- /dev/null +++ b/test/utils/test_constants.dart @@ -0,0 +1,5 @@ +import 'package:flutter/material.dart'; + +class TestConstants { + static const Size standardDeviceSize = Size(1080, 1920); +} diff --git a/test/utils/test_utils.dart b/test/utils/test_utils.dart index 0e91424c..11b8916e 100644 --- a/test/utils/test_utils.dart +++ b/test/utils/test_utils.dart @@ -2,5 +2,6 @@ export 'bottom_nav_bar_interactions.dart'; export 'canvas_interactions.dart'; export 'canvas_positions.dart'; export 'interactive_viewer_interactions.dart'; +export 'test_constants.dart'; export 'ui_interaction.dart'; export 'widget_finder.dart'; diff --git a/test/widget/landing_page/landing_page_test.dart b/test/widget/landing_page/landing_page_test.dart index 3f1f18e6..5e7e354f 100644 --- a/test/widget/landing_page/landing_page_test.dart +++ b/test/widget/landing_page/landing_page_test.dart @@ -28,17 +28,16 @@ import 'package:paintroid/ui/pages/workspace_page/components/top_bar/top_app_bar import 'package:paintroid/ui/shared/dialogs/about_dialog.dart'; import 'package:paintroid/ui/shared/dialogs/generic_dialog.dart'; import 'package:paintroid/ui/shared/dialogs/project_details_dialog.dart'; +import '../../utils/test_constants.dart'; import 'landing_page_test.mocks.dart'; -@GenerateMocks( - [ProjectDatabase, ProjectDAO, IImageService, IFileService, IDeviceService]) +@GenerateMocks([ProjectDatabase, ProjectDAO, IImageService, IFileService]) void main() { late Widget sut; late ProjectDatabase database; late ProjectDAO dao; late IImageService imageService; late IFileService fileService; - late IDeviceService deviceService; late List projects; final date = DateTime.now(); const filePath = 'test/assets/images/test.jpg'; @@ -59,13 +58,13 @@ void main() { dao = MockProjectDAO(); imageService = MockIImageService(); fileService = MockIFileService(); - deviceService = MockIDeviceService(); sut = ProviderScope( overrides: [ ProjectDatabase.provider.overrideWith((ref) => Future.value(database)), IImageService.provider.overrideWith((ref) => imageService), IFileService.provider.overrideWith((ref) => fileService), - IDeviceService.provider.overrideWith((ref) => deviceService), + IDeviceService.sizeProvider + .overrideWithValue(TestConstants.standardDeviceSize), ], child: App( showOnboardingPage: false, @@ -202,11 +201,14 @@ void main() { expect(overflowMenuButtonFinder, findsOneWidget); // Check the canvas is empty - final container = ProviderContainer(); + final container = ProviderContainer(overrides: [ + IDeviceService.sizeProvider + .overrideWithValue(TestConstants.standardDeviceSize), + ]); final canvasState = container.read(canvasStateProvider); expect(canvasState.backgroundImage, isNull); expect(canvasState.cachedImage, isNull); - expect(canvasState.size, equals(Size.zero)); + expect(canvasState.size, equals(TestConstants.standardDeviceSize)); await tester.pageBack(); await tester.pumpAndSettle(); @@ -248,11 +250,14 @@ void main() { expect(overflowMenuButtonFinder, findsOneWidget); // Check the canvas is empty - final container = ProviderContainer(); + final container = ProviderContainer(overrides: [ + IDeviceService.sizeProvider + .overrideWithValue(TestConstants.standardDeviceSize), + ]); final canvasState = container.read(canvasStateProvider); expect(canvasState.backgroundImage, isNull); expect(canvasState.cachedImage, isNull); - expect(canvasState.size, equals(Size.zero)); + expect(canvasState.size, equals(TestConstants.standardDeviceSize)); await tester.tap(overflowMenuButtonFinder); await tester.pumpAndSettle(); @@ -646,8 +651,6 @@ void main() { when(dao.getProjects()).thenAnswer((_) => Future.value([project])); when(imageService.getProjectPreview(filePath)) .thenReturn(Result.ok(testFile.readAsBytesSync())); - when(deviceService.getSizeInPixels()) - .thenAnswer((_) => Future.value(const Size(1080, 1920))); when(dao.insertProject(project)).thenAnswer((_) => Future.value(1)); when(fileService.getFile(filePath)).thenReturn(Result.ok(testFile)); @@ -675,8 +678,6 @@ void main() { .thenAnswer((_) => Future.value([project1, project2])); when(imageService.getProjectPreview(filePath)) .thenReturn(Result.ok(testFile.readAsBytesSync())); - when(deviceService.getSizeInPixels()) - .thenAnswer((_) => Future.value(const Size(1080, 1920))); when(dao.insertProject(project2)).thenAnswer((_) => Future.value(1)); when(fileService.getFile(filePath)).thenReturn(Result.ok(testFile)); diff --git a/test/widget/landing_page/landing_page_test.mocks.dart b/test/widget/landing_page/landing_page_test.mocks.dart index e7632dc2..4b0cb006 100644 --- a/test/widget/landing_page/landing_page_test.mocks.dart +++ b/test/widget/landing_page/landing_page_test.mocks.dart @@ -6,16 +6,15 @@ import 'dart:async' as _i3; import 'dart:io' as _i13; import 'dart:typed_data' as _i11; -import 'dart:ui' as _i6; +import 'dart:ui' as _i9; import 'package:mockito/mockito.dart' as _i1; import 'package:oxidized/oxidized.dart' as _i5; import 'package:paintroid/core/database/project_dao.dart' as _i2; -import 'package:paintroid/core/database/project_database.dart' as _i7; -import 'package:paintroid/core/models/database/project.dart' as _i8; -import 'package:paintroid/core/providers/object/device_service.dart' as _i14; +import 'package:paintroid/core/database/project_database.dart' as _i6; +import 'package:paintroid/core/models/database/project.dart' as _i7; import 'package:paintroid/core/providers/object/file_service.dart' as _i12; -import 'package:paintroid/core/providers/object/image_service.dart' as _i9; +import 'package:paintroid/core/providers/object/image_service.dart' as _i8; import 'package:paintroid/core/utils/failure.dart' as _i10; import 'package:sqflite/sqflite.dart' as _i4; @@ -75,20 +74,10 @@ class _FakeResult_3 extends _i1.SmartFake ); } -class _FakeSize_4 extends _i1.SmartFake implements _i6.Size { - _FakeSize_4( - Object parent, - Invocation parentInvocation, - ) : super( - parent, - parentInvocation, - ); -} - /// A class which mocks [ProjectDatabase]. /// /// See the documentation for Mockito's code generation for more information. -class MockProjectDatabase extends _i1.Mock implements _i7.ProjectDatabase { +class MockProjectDatabase extends _i1.Mock implements _i6.ProjectDatabase { MockProjectDatabase() { _i1.throwOnMissingStub(this); } @@ -159,7 +148,7 @@ class MockProjectDAO extends _i1.Mock implements _i2.ProjectDAO { } @override - _i3.Future insertProject(_i8.Project? project) => (super.noSuchMethod( + _i3.Future insertProject(_i7.Project? project) => (super.noSuchMethod( Invocation.method( #insertProject, [project], @@ -168,7 +157,7 @@ class MockProjectDAO extends _i1.Mock implements _i2.ProjectDAO { ) as _i3.Future); @override - _i3.Future> insertProjects(List<_i8.Project>? projects) => + _i3.Future> insertProjects(List<_i7.Project>? projects) => (super.noSuchMethod( Invocation.method( #insertProjects, @@ -188,7 +177,7 @@ class MockProjectDAO extends _i1.Mock implements _i2.ProjectDAO { ) as _i3.Future); @override - _i3.Future deleteProjects(List<_i8.Project>? projects) => + _i3.Future deleteProjects(List<_i7.Project>? projects) => (super.noSuchMethod( Invocation.method( #deleteProjects, @@ -199,54 +188,54 @@ class MockProjectDAO extends _i1.Mock implements _i2.ProjectDAO { ) as _i3.Future); @override - _i3.Future> getProjects() => (super.noSuchMethod( + _i3.Future> getProjects() => (super.noSuchMethod( Invocation.method( #getProjects, [], ), - returnValue: _i3.Future>.value(<_i8.Project>[]), - ) as _i3.Future>); + returnValue: _i3.Future>.value(<_i7.Project>[]), + ) as _i3.Future>); @override - _i3.Future<_i8.Project?> getProjectByName(String? name) => + _i3.Future<_i7.Project?> getProjectByName(String? name) => (super.noSuchMethod( Invocation.method( #getProjectByName, [name], ), - returnValue: _i3.Future<_i8.Project?>.value(), - ) as _i3.Future<_i8.Project?>); + returnValue: _i3.Future<_i7.Project?>.value(), + ) as _i3.Future<_i7.Project?>); } /// A class which mocks [IImageService]. /// /// See the documentation for Mockito's code generation for more information. -class MockIImageService extends _i1.Mock implements _i9.IImageService { +class MockIImageService extends _i1.Mock implements _i8.IImageService { MockIImageService() { _i1.throwOnMissingStub(this); } @override - _i3.Future<_i5.Result<_i6.Image, _i10.Failure>> import( + _i3.Future<_i5.Result<_i9.Image, _i10.Failure>> import( _i11.Uint8List? fileData) => (super.noSuchMethod( Invocation.method( #import, [fileData], ), - returnValue: _i3.Future<_i5.Result<_i6.Image, _i10.Failure>>.value( - _FakeResult_3<_i6.Image, _i10.Failure>( + returnValue: _i3.Future<_i5.Result<_i9.Image, _i10.Failure>>.value( + _FakeResult_3<_i9.Image, _i10.Failure>( this, Invocation.method( #import, [fileData], ), )), - ) as _i3.Future<_i5.Result<_i6.Image, _i10.Failure>>); + ) as _i3.Future<_i5.Result<_i9.Image, _i10.Failure>>); @override _i3.Future<_i5.Result<_i11.Uint8List, _i10.Failure>> exportAsJpg( - _i6.Image? image, + _i9.Image? image, int? quality, ) => (super.noSuchMethod( @@ -272,7 +261,7 @@ class MockIImageService extends _i1.Mock implements _i9.IImageService { @override _i3.Future<_i5.Result<_i11.Uint8List, _i10.Failure>> exportAsPng( - _i6.Image? image) => + _i9.Image? image) => (super.noSuchMethod( Invocation.method( #exportAsPng, @@ -425,27 +414,3 @@ class MockIFileService extends _i1.Mock implements _i12.IFileService { )), ) as _i3.Future<_i5.Result<_i13.FileSystemEntity, _i10.Failure>>); } - -/// A class which mocks [IDeviceService]. -/// -/// See the documentation for Mockito's code generation for more information. -class MockIDeviceService extends _i1.Mock implements _i14.IDeviceService { - MockIDeviceService() { - _i1.throwOnMissingStub(this); - } - - @override - _i3.Future<_i6.Size> getSizeInPixels() => (super.noSuchMethod( - Invocation.method( - #getSizeInPixels, - [], - ), - returnValue: _i3.Future<_i6.Size>.value(_FakeSize_4( - this, - Invocation.method( - #getSizeInPixels, - [], - ), - )), - ) as _i3.Future<_i6.Size>); -} diff --git a/test/widget/onboarding_page/onboarding_page_test.dart b/test/widget/onboarding_page/onboarding_page_test.dart index 02f4a17c..ecf7ceca 100644 --- a/test/widget/onboarding_page/onboarding_page_test.dart +++ b/test/widget/onboarding_page/onboarding_page_test.dart @@ -9,6 +9,8 @@ import 'package:paintroid/ui/pages/onboarding_page/components/onboarding_page_ap import 'package:paintroid/ui/pages/onboarding_page/components/onboarding_page_bottom_nav_bar.dart'; import 'package:paintroid/ui/pages/onboarding_page/onboarding_page.dart'; import 'package:paintroid/ui/theme/theme.dart'; +import 'package:paintroid/core/providers/object/device_service.dart'; +import '../../utils/test_utils.dart'; void main() { late Widget sut; @@ -54,6 +56,10 @@ void main() { final darkTheme = DarkPaintroidThemeData(); sut = ProviderScope( + overrides: [ + IDeviceService.sizeProvider + .overrideWithValue(TestConstants.standardDeviceSize), + ], child: PaintroidTheme( lightTheme: lightTheme, darkTheme: darkTheme, diff --git a/test/widget/workspace_page/bottom_control_navigation_bar_test.dart b/test/widget/workspace_page/bottom_control_navigation_bar_test.dart index 5889c538..093fdd0a 100644 --- a/test/widget/workspace_page/bottom_control_navigation_bar_test.dart +++ b/test/widget/workspace_page/bottom_control_navigation_bar_test.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:paintroid/core/providers/object/device_service.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_test/flutter_test.dart'; @@ -24,6 +25,9 @@ void main() { final darkTheme = DarkPaintroidThemeData(); sut = ProviderScope( + overrides: [ + IDeviceService.sizeProvider.overrideWithValue(const Size(600, 600)), + ], child: PaintroidTheme( lightTheme: lightTheme, darkTheme: darkTheme, diff --git a/test/widget/workspace_page/clipboard_tool_test.dart b/test/widget/workspace_page/clipboard_tool_test.dart index af37e352..d7ad47b1 100644 --- a/test/widget/workspace_page/clipboard_tool_test.dart +++ b/test/widget/workspace_page/clipboard_tool_test.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:paintroid/core/providers/object/device_service.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:integration_test/integration_test.dart'; @@ -15,7 +16,12 @@ void main() { late Widget sut; setUp(() async { - sut = ProviderScope(child: App(showOnboardingPage: false)); + sut = ProviderScope( + overrides: [ + IDeviceService.sizeProvider.overrideWithValue(const Size(600, 600)), + ], + child: App(showOnboardingPage: false), + ); }); Future selectClipboardTool(WidgetTester tester) async { diff --git a/test/widget/workspace_page/eraser_tool_test.dart b/test/widget/workspace_page/eraser_tool_test.dart index 0f7241bc..012960eb 100644 --- a/test/widget/workspace_page/eraser_tool_test.dart +++ b/test/widget/workspace_page/eraser_tool_test.dart @@ -24,8 +24,7 @@ void main() { await tester.pumpWidget( ProviderScope( overrides: [ - IDeviceService.sizeProvider - .overrideWith((ref) => Future.value(const Size(600, 600))) + IDeviceService.sizeProvider.overrideWithValue(const Size(600, 600)), ], child: PaintroidTheme( lightTheme: lightTheme, diff --git a/test/widget/workspace_page/hand_tool_test.dart b/test/widget/workspace_page/hand_tool_test.dart index 1ce3a150..2bb85cd5 100644 --- a/test/widget/workspace_page/hand_tool_test.dart +++ b/test/widget/workspace_page/hand_tool_test.dart @@ -23,8 +23,7 @@ void main() { sut = ProviderScope( overrides: [ - IDeviceService.sizeProvider - .overrideWith((ref) => Future.value(const Size(600, 600))) + IDeviceService.sizeProvider.overrideWithValue(const Size(600, 600)), ], child: PaintroidTheme( lightTheme: lightTheme, diff --git a/test/widget/workspace_page/line_tool_test.dart b/test/widget/workspace_page/line_tool_test.dart index 52586ed0..1b99470a 100644 --- a/test/widget/workspace_page/line_tool_test.dart +++ b/test/widget/workspace_page/line_tool_test.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:paintroid/core/providers/object/device_service.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_test/flutter_test.dart'; @@ -15,6 +16,9 @@ void main() { setUp(() async { sut = ProviderScope( + overrides: [ + IDeviceService.sizeProvider.overrideWithValue(const Size(600, 600)), + ], child: App( showOnboardingPage: false, ), diff --git a/test/widget/workspace_page/shapes_tool_test.dart b/test/widget/workspace_page/shapes_tool_test.dart index 2260a11b..9d640504 100644 --- a/test/widget/workspace_page/shapes_tool_test.dart +++ b/test/widget/workspace_page/shapes_tool_test.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:paintroid/core/providers/object/device_service.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_test/flutter_test.dart'; @@ -13,7 +14,9 @@ void main() { late Widget sut; - setUp(() async => sut = ProviderScope(child: App(showOnboardingPage: false))); + setUp(() async => sut = ProviderScope(overrides: [ + IDeviceService.sizeProvider.overrideWithValue(const Size(600, 600)), + ], child: App(showOnboardingPage: false))); testWidgets('[SHAPES_TOOL]: selecting shapes tool shows checkmark', (WidgetTester tester) async { diff --git a/test/widget/workspace_page/text_tool_test.dart b/test/widget/workspace_page/text_tool_test.dart index 2f4fd24e..7057b124 100644 --- a/test/widget/workspace_page/text_tool_test.dart +++ b/test/widget/workspace_page/text_tool_test.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:paintroid/core/providers/object/device_service.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:integration_test/integration_test.dart'; @@ -11,7 +12,9 @@ void main() { late Widget sut; - setUp(() async => sut = ProviderScope(child: App(showOnboardingPage: false))); + setUp(() async => sut = ProviderScope(overrides: [ + IDeviceService.sizeProvider.overrideWithValue(const Size(600, 600)), + ], child: App(showOnboardingPage: false))); testWidgets('[TEXT_TOOL]: selecting text tool shows checkmark', (WidgetTester tester) async { @@ -26,7 +29,7 @@ void main() { expect(WidgetFinder.checkMark, findsOneWidget); }); - testWidgets('[TEXT_TOOL]: selecting other tools hide the checkmark', + testWidgets('[TEXT_TOOL]: selecting other tools hide the checkmark', (WidgetTester tester) async { UIInteraction.initialize(tester); await tester.pumpWidget(sut); diff --git a/test/widget/workspace_page/top_bar_test.dart b/test/widget/workspace_page/top_bar_test.dart index 7af5ba59..165f24df 100644 --- a/test/widget/workspace_page/top_bar_test.dart +++ b/test/widget/workspace_page/top_bar_test.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:paintroid/core/providers/object/device_service.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_test/flutter_test.dart'; @@ -15,6 +16,9 @@ void main() { setUp(() async { sut = ProviderScope( + overrides: [ + IDeviceService.sizeProvider.overrideWithValue(const Size(600, 600)), + ], child: App( showOnboardingPage: false, ), diff --git a/test/widget/workspace_page/workspace_page_test.dart b/test/widget/workspace_page/workspace_page_test.dart index 12e170a7..4e3ce412 100644 --- a/test/widget/workspace_page/workspace_page_test.dart +++ b/test/widget/workspace_page/workspace_page_test.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:paintroid/core/providers/object/device_service.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_test/flutter_test.dart'; @@ -30,6 +31,9 @@ void main() { final darkTheme = DarkPaintroidThemeData(); sut = ProviderScope( + overrides: [ + IDeviceService.sizeProvider.overrideWithValue(const Size(600, 600)), + ], child: PaintroidTheme( lightTheme: lightTheme, darkTheme: darkTheme, @@ -78,6 +82,7 @@ void main() { sut = ProviderScope( overrides: [ workspaceStateProvider.overrideWith(MockWorkspaceStateProvider.new), + IDeviceService.sizeProvider.overrideWithValue(const Size(600, 600)), ], child: PaintroidTheme( lightTheme: lightTheme,