From b69eaec9cf97527dfbc4f03699ffbce435ad3bcc Mon Sep 17 00:00:00 2001 From: fres-sudo Date: Sat, 11 Jul 2026 15:22:20 +0200 Subject: [PATCH 1/6] fix(ci): globally activate melos so exec subprocesses can find the binary Co-Authored-By: Claude Sonnet 4.6 --- .github/workflows/ci.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9c189aa..f9b69f0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -35,6 +35,11 @@ jobs: - name: Resolve workspace dependencies run: flutter pub get + - name: Activate melos globally + run: | + dart pub global activate melos + echo "$HOME/.pub-cache/bin" >> $GITHUB_PATH + - name: Bootstrap melos workspace run: dart run melos bootstrap From 36adb11905957b049da173575d9e4f8fbc5e5a84 Mon Sep 17 00:00:00 2001 From: fres-sudo Date: Sat, 11 Jul 2026 15:34:38 +0200 Subject: [PATCH 2/6] fix(test): update stale package import paths in test/mocks files Generated mocks and a handful of non-generated test files still referenced domain types and repository interfaces at their old in-feature paths (e.g. feature_orders/domain/models/order.dart). Those types have since been extracted to shared packages: inventory_contracts, order_management, discounts, catalog, and app_settings. Update every import to the canonical path so dart analyze passes. Co-Authored-By: Claude Sonnet 4.6 --- .../blocs/inventory/inventory_bloc_test.mocks.dart | 2 +- .../inventory_repository_concurrency_test.dart | 2 +- .../active_order/active_order_bloc_test.mocks.dart | 6 +++--- .../blocs/checkout/checkout_cubit_test.mocks.dart | 14 +++++++------- .../order_detail_cubit_test.mocks.dart | 6 +++--- .../repositories/orders_repository_impl_test.dart | 8 ++++---- 6 files changed, 19 insertions(+), 19 deletions(-) diff --git a/features/inventory/test/blocs/inventory/inventory_bloc_test.mocks.dart b/features/inventory/test/blocs/inventory/inventory_bloc_test.mocks.dart index 470f066..b7e69ec 100644 --- a/features/inventory/test/blocs/inventory/inventory_bloc_test.mocks.dart +++ b/features/inventory/test/blocs/inventory/inventory_bloc_test.mocks.dart @@ -5,7 +5,7 @@ // ignore_for_file: no_leading_underscores_for_library_prefixes import 'dart:async' as _i3; -import 'package:feature_inventory/domain/repositories/inventory_repository.dart' +import 'package:inventory_contracts/repositories/inventory_repository.dart' as _i2; import 'package:mockito/mockito.dart' as _i1; import 'package:mockito/src/dummies.dart' as _i5; diff --git a/features/inventory/test/repositories/inventory_repository_concurrency_test.dart b/features/inventory/test/repositories/inventory_repository_concurrency_test.dart index 5c0cc7e..d434a1b 100644 --- a/features/inventory/test/repositories/inventory_repository_concurrency_test.dart +++ b/features/inventory/test/repositories/inventory_repository_concurrency_test.dart @@ -17,7 +17,7 @@ import 'package:drift/native.dart'; import 'package:feature_inventory/data/repositories/inventory_repository_impl.dart'; import 'package:feature_inventory/data/sources/local/daos/stock_movements_dao.dart'; import 'package:feature_inventory/data/sources/local/daos/stocks_dao.dart'; -import 'package:feature_inventory/domain/repositories/inventory_repository.dart'; +import 'package:inventory_contracts/repositories/inventory_repository.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:result/result.dart'; diff --git a/features/orders/test/blocs/active_order/active_order_bloc_test.mocks.dart b/features/orders/test/blocs/active_order/active_order_bloc_test.mocks.dart index 3041703..665eea5 100644 --- a/features/orders/test/blocs/active_order/active_order_bloc_test.mocks.dart +++ b/features/orders/test/blocs/active_order/active_order_bloc_test.mocks.dart @@ -6,10 +6,10 @@ import 'dart:async' as _i4; import 'package:bloc_exports/bloc_exports.dart' as _i8; -import 'package:feature_orders/domain/models/order.dart' as _i5; -import 'package:feature_orders/domain/repositories/orders_repository.dart' +import 'package:order_management/models/order.dart' as _i5; +import 'package:order_management/repositories/orders_repository.dart' as _i3; -import 'package:feature_settings/presentation/blocs/settings/settings_cubit.dart' +import 'package:app_settings/blocs/settings_cubit.dart' as _i2; import 'package:mockito/mockito.dart' as _i1; import 'package:mockito/src/dummies.dart' as _i7; diff --git a/features/orders/test/blocs/checkout/checkout_cubit_test.mocks.dart b/features/orders/test/blocs/checkout/checkout_cubit_test.mocks.dart index 50d1002..1947983 100644 --- a/features/orders/test/blocs/checkout/checkout_cubit_test.mocks.dart +++ b/features/orders/test/blocs/checkout/checkout_cubit_test.mocks.dart @@ -5,16 +5,16 @@ // ignore_for_file: no_leading_underscores_for_library_prefixes import 'dart:async' as _i3; -import 'package:feature_discounts/domain/models/discount.dart' as _i11; -import 'package:feature_discounts/domain/repositories/discounts_repository.dart' +import 'package:discounts/models/discount.dart' as _i11; +import 'package:discounts/repositories/discounts_repository.dart' as _i10; -import 'package:feature_inventory/domain/repositories/inventory_repository.dart' +import 'package:inventory_contracts/repositories/inventory_repository.dart' as _i7; -import 'package:feature_orders/domain/models/order.dart' as _i4; -import 'package:feature_orders/domain/repositories/orders_repository.dart' +import 'package:order_management/models/order.dart' as _i4; +import 'package:order_management/repositories/orders_repository.dart' as _i2; -import 'package:feature_products/domain/models/product.dart' as _i9; -import 'package:feature_products/domain/repositories/products_repository.dart' +import 'package:catalog/models/product.dart' as _i9; +import 'package:catalog/repositories/products_repository.dart' as _i8; import 'package:mockito/mockito.dart' as _i1; import 'package:mockito/src/dummies.dart' as _i6; diff --git a/features/orders/test/blocs/order_detail/order_detail_cubit_test.mocks.dart b/features/orders/test/blocs/order_detail/order_detail_cubit_test.mocks.dart index a35e5f8..b623d32 100644 --- a/features/orders/test/blocs/order_detail/order_detail_cubit_test.mocks.dart +++ b/features/orders/test/blocs/order_detail/order_detail_cubit_test.mocks.dart @@ -5,10 +5,10 @@ // ignore_for_file: no_leading_underscores_for_library_prefixes import 'dart:async' as _i3; -import 'package:feature_inventory/domain/repositories/inventory_repository.dart' +import 'package:inventory_contracts/repositories/inventory_repository.dart' as _i7; -import 'package:feature_orders/domain/models/order.dart' as _i4; -import 'package:feature_orders/domain/repositories/orders_repository.dart' +import 'package:order_management/models/order.dart' as _i4; +import 'package:order_management/repositories/orders_repository.dart' as _i2; import 'package:mockito/mockito.dart' as _i1; import 'package:mockito/src/dummies.dart' as _i6; diff --git a/features/orders/test/data/repositories/orders_repository_impl_test.dart b/features/orders/test/data/repositories/orders_repository_impl_test.dart index 3b4bc15..659fff1 100644 --- a/features/orders/test/data/repositories/orders_repository_impl_test.dart +++ b/features/orders/test/data/repositories/orders_repository_impl_test.dart @@ -4,10 +4,10 @@ import 'package:drift/native.dart'; import 'package:feature_orders/data/repositories/orders_repository_impl.dart'; import 'package:feature_orders/data/sources/local/daos/order_items_dao.dart'; import 'package:feature_orders/data/sources/local/daos/orders_dao.dart'; -import 'package:feature_orders/domain/models/order.dart'; -import 'package:feature_orders/domain/models/order_line_item.dart'; -import 'package:feature_orders/domain/models/order_type.dart'; -import 'package:feature_orders/domain/models/selected_modifiers.dart'; +import 'package:order_management/models/order.dart'; +import 'package:order_management/models/order_line_item.dart'; +import 'package:order_management/models/order_type.dart'; +import 'package:order_management/models/selected_modifiers.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:result/result.dart'; From c6c4f77833bbcc1e08b4f0c453b128216ee4ecc9 Mon Sep 17 00:00:00 2001 From: fres-sudo Date: Sat, 11 Jul 2026 15:38:39 +0200 Subject: [PATCH 3/6] chore: reformat orders test mocks after import path corrections Co-Authored-By: Claude Sonnet 4.6 --- .../blocs/active_order/active_order_bloc_test.mocks.dart | 6 ++---- .../test/blocs/checkout/checkout_cubit_test.mocks.dart | 9 +++------ .../order_detail/order_detail_cubit_test.mocks.dart | 3 +-- 3 files changed, 6 insertions(+), 12 deletions(-) diff --git a/features/orders/test/blocs/active_order/active_order_bloc_test.mocks.dart b/features/orders/test/blocs/active_order/active_order_bloc_test.mocks.dart index 665eea5..56af6d1 100644 --- a/features/orders/test/blocs/active_order/active_order_bloc_test.mocks.dart +++ b/features/orders/test/blocs/active_order/active_order_bloc_test.mocks.dart @@ -7,10 +7,8 @@ import 'dart:async' as _i4; import 'package:bloc_exports/bloc_exports.dart' as _i8; import 'package:order_management/models/order.dart' as _i5; -import 'package:order_management/repositories/orders_repository.dart' - as _i3; -import 'package:app_settings/blocs/settings_cubit.dart' - as _i2; +import 'package:order_management/repositories/orders_repository.dart' as _i3; +import 'package:app_settings/blocs/settings_cubit.dart' as _i2; import 'package:mockito/mockito.dart' as _i1; import 'package:mockito/src/dummies.dart' as _i7; import 'package:result/result.dart' as _i6; diff --git a/features/orders/test/blocs/checkout/checkout_cubit_test.mocks.dart b/features/orders/test/blocs/checkout/checkout_cubit_test.mocks.dart index 1947983..0d932e0 100644 --- a/features/orders/test/blocs/checkout/checkout_cubit_test.mocks.dart +++ b/features/orders/test/blocs/checkout/checkout_cubit_test.mocks.dart @@ -6,16 +6,13 @@ import 'dart:async' as _i3; import 'package:discounts/models/discount.dart' as _i11; -import 'package:discounts/repositories/discounts_repository.dart' - as _i10; +import 'package:discounts/repositories/discounts_repository.dart' as _i10; import 'package:inventory_contracts/repositories/inventory_repository.dart' as _i7; import 'package:order_management/models/order.dart' as _i4; -import 'package:order_management/repositories/orders_repository.dart' - as _i2; +import 'package:order_management/repositories/orders_repository.dart' as _i2; import 'package:catalog/models/product.dart' as _i9; -import 'package:catalog/repositories/products_repository.dart' - as _i8; +import 'package:catalog/repositories/products_repository.dart' as _i8; import 'package:mockito/mockito.dart' as _i1; import 'package:mockito/src/dummies.dart' as _i6; import 'package:result/result.dart' as _i5; diff --git a/features/orders/test/blocs/order_detail/order_detail_cubit_test.mocks.dart b/features/orders/test/blocs/order_detail/order_detail_cubit_test.mocks.dart index b623d32..1540e3e 100644 --- a/features/orders/test/blocs/order_detail/order_detail_cubit_test.mocks.dart +++ b/features/orders/test/blocs/order_detail/order_detail_cubit_test.mocks.dart @@ -8,8 +8,7 @@ import 'dart:async' as _i3; import 'package:inventory_contracts/repositories/inventory_repository.dart' as _i7; import 'package:order_management/models/order.dart' as _i4; -import 'package:order_management/repositories/orders_repository.dart' - as _i2; +import 'package:order_management/repositories/orders_repository.dart' as _i2; import 'package:mockito/mockito.dart' as _i1; import 'package:mockito/src/dummies.dart' as _i6; import 'package:result/result.dart' as _i5; From 2959191cb3ee88533f7c7c1bdc2dfd767c620d80 Mon Sep 17 00:00:00 2001 From: fres-sudo Date: Sat, 11 Jul 2026 15:48:13 +0200 Subject: [PATCH 4/6] fix(test): fix voidOrder return type and feature_products stale imports in mocks - Update MockOrdersRepository.voidOrder in 3 mocks files: return type was Result but interface now returns Result (= Record {Order order, bool wasAlreadyVoided}); parameter was int? but is non-nullable int - Fix feature_products/domain/* imports in 5 products mock files and the orphaned products_bloc_test.dart: types were extracted to package:catalog (models, repositories, blocs) Co-Authored-By: Claude Sonnet 4.6 --- .../active_order_bloc_test.mocks.dart | 76 ++++++++++++------- .../checkout/checkout_cubit_test.mocks.dart | 76 ++++++++++++------- .../order_detail_cubit_test.mocks.dart | 76 ++++++++++++------- .../categories_bloc_test.mocks.dart | 5 +- .../modifiers/modifiers_bloc_test.mocks.dart | 7 +- .../product_detail_cubit_test.mocks.dart | 12 ++- .../product_form_cubit_test.mocks.dart | 12 ++- .../products/products_bloc_test.mocks.dart | 10 +-- .../products/test/products_bloc_test.dart | 10 +-- 9 files changed, 165 insertions(+), 119 deletions(-) diff --git a/features/orders/test/blocs/active_order/active_order_bloc_test.mocks.dart b/features/orders/test/blocs/active_order/active_order_bloc_test.mocks.dart index 56af6d1..0706045 100644 --- a/features/orders/test/blocs/active_order/active_order_bloc_test.mocks.dart +++ b/features/orders/test/blocs/active_order/active_order_bloc_test.mocks.dart @@ -173,53 +173,71 @@ class MockOrdersRepository extends _i1.Mock implements _i3.OrdersRepository { _i4.Future<_i6.Result<_i5.Order>> createOrder(_i5.Order? order) => (super.noSuchMethod( Invocation.method(#createOrder, [order]), - returnValue: _i4.Future<_i6.Result<_i5.Order>>.value( - _i7.dummyValue<_i6.Result<_i5.Order>>( - this, - Invocation.method(#createOrder, [order]), - ), - ), + returnValue: + _i4.Future< + _i6.Result<({_i5.Order order, bool wasAlreadyVoided})> + >.value( + _i7.dummyValue< + _i6.Result<({_i5.Order order, bool wasAlreadyVoided})> + >(this, Invocation.method(#createOrder, [order])), + ), ) - as _i4.Future<_i6.Result<_i5.Order>>); + as _i4.Future< + _i6.Result<({_i5.Order order, bool wasAlreadyVoided})> + >); @override _i4.Future<_i6.Result<_i5.Order>> updateOrder(_i5.Order? order) => (super.noSuchMethod( Invocation.method(#updateOrder, [order]), - returnValue: _i4.Future<_i6.Result<_i5.Order>>.value( - _i7.dummyValue<_i6.Result<_i5.Order>>( - this, - Invocation.method(#updateOrder, [order]), - ), - ), + returnValue: + _i4.Future< + _i6.Result<({_i5.Order order, bool wasAlreadyVoided})> + >.value( + _i7.dummyValue< + _i6.Result<({_i5.Order order, bool wasAlreadyVoided})> + >(this, Invocation.method(#updateOrder, [order])), + ), ) - as _i4.Future<_i6.Result<_i5.Order>>); + as _i4.Future< + _i6.Result<({_i5.Order order, bool wasAlreadyVoided})> + >); @override _i4.Future<_i6.Result<_i5.Order>> completeOrder(int? id) => (super.noSuchMethod( Invocation.method(#completeOrder, [id]), - returnValue: _i4.Future<_i6.Result<_i5.Order>>.value( - _i7.dummyValue<_i6.Result<_i5.Order>>( - this, - Invocation.method(#completeOrder, [id]), - ), - ), + returnValue: + _i4.Future< + _i6.Result<({_i5.Order order, bool wasAlreadyVoided})> + >.value( + _i7.dummyValue< + _i6.Result<({_i5.Order order, bool wasAlreadyVoided})> + >(this, Invocation.method(#completeOrder, [id])), + ), ) - as _i4.Future<_i6.Result<_i5.Order>>); + as _i4.Future< + _i6.Result<({_i5.Order order, bool wasAlreadyVoided})> + >); @override - _i4.Future<_i6.Result<_i5.Order>> voidOrder(int? id) => + _i4.Future<_i6.Result<({_i5.Order order, bool wasAlreadyVoided})>> voidOrder( + int id, + ) => (super.noSuchMethod( Invocation.method(#voidOrder, [id]), - returnValue: _i4.Future<_i6.Result<_i5.Order>>.value( - _i7.dummyValue<_i6.Result<_i5.Order>>( - this, - Invocation.method(#voidOrder, [id]), - ), - ), + returnValue: + _i4.Future< + _i6.Result<({_i5.Order order, bool wasAlreadyVoided})> + >.value( + _i7.dummyValue< + _i6.Result<({_i5.Order order, bool wasAlreadyVoided})> + >(this, Invocation.method(#voidOrder, [id])), + ), ) - as _i4.Future<_i6.Result<_i5.Order>>); + as _i4.Future< + _i6.Result<({_i5.Order order, bool wasAlreadyVoided})> + >); @override _i4.Future<_i6.Result> deleteOrder(int? id) => diff --git a/features/orders/test/blocs/checkout/checkout_cubit_test.mocks.dart b/features/orders/test/blocs/checkout/checkout_cubit_test.mocks.dart index 0d932e0..494f5d4 100644 --- a/features/orders/test/blocs/checkout/checkout_cubit_test.mocks.dart +++ b/features/orders/test/blocs/checkout/checkout_cubit_test.mocks.dart @@ -172,53 +172,71 @@ class MockOrdersRepository extends _i1.Mock implements _i2.OrdersRepository { _i3.Future<_i5.Result<_i4.Order>> createOrder(_i4.Order? order) => (super.noSuchMethod( Invocation.method(#createOrder, [order]), - returnValue: _i3.Future<_i5.Result<_i4.Order>>.value( - _i6.dummyValue<_i5.Result<_i4.Order>>( - this, - Invocation.method(#createOrder, [order]), - ), - ), + returnValue: + _i3.Future< + _i5.Result<({_i4.Order order, bool wasAlreadyVoided})> + >.value( + _i6.dummyValue< + _i5.Result<({_i4.Order order, bool wasAlreadyVoided})> + >(this, Invocation.method(#createOrder, [order])), + ), ) - as _i3.Future<_i5.Result<_i4.Order>>); + as _i3.Future< + _i5.Result<({_i4.Order order, bool wasAlreadyVoided})> + >); @override _i3.Future<_i5.Result<_i4.Order>> updateOrder(_i4.Order? order) => (super.noSuchMethod( Invocation.method(#updateOrder, [order]), - returnValue: _i3.Future<_i5.Result<_i4.Order>>.value( - _i6.dummyValue<_i5.Result<_i4.Order>>( - this, - Invocation.method(#updateOrder, [order]), - ), - ), + returnValue: + _i3.Future< + _i5.Result<({_i4.Order order, bool wasAlreadyVoided})> + >.value( + _i6.dummyValue< + _i5.Result<({_i4.Order order, bool wasAlreadyVoided})> + >(this, Invocation.method(#updateOrder, [order])), + ), ) - as _i3.Future<_i5.Result<_i4.Order>>); + as _i3.Future< + _i5.Result<({_i4.Order order, bool wasAlreadyVoided})> + >); @override _i3.Future<_i5.Result<_i4.Order>> completeOrder(int? id) => (super.noSuchMethod( Invocation.method(#completeOrder, [id]), - returnValue: _i3.Future<_i5.Result<_i4.Order>>.value( - _i6.dummyValue<_i5.Result<_i4.Order>>( - this, - Invocation.method(#completeOrder, [id]), - ), - ), + returnValue: + _i3.Future< + _i5.Result<({_i4.Order order, bool wasAlreadyVoided})> + >.value( + _i6.dummyValue< + _i5.Result<({_i4.Order order, bool wasAlreadyVoided})> + >(this, Invocation.method(#completeOrder, [id])), + ), ) - as _i3.Future<_i5.Result<_i4.Order>>); + as _i3.Future< + _i5.Result<({_i4.Order order, bool wasAlreadyVoided})> + >); @override - _i3.Future<_i5.Result<_i4.Order>> voidOrder(int? id) => + _i3.Future<_i5.Result<({_i4.Order order, bool wasAlreadyVoided})>> voidOrder( + int id, + ) => (super.noSuchMethod( Invocation.method(#voidOrder, [id]), - returnValue: _i3.Future<_i5.Result<_i4.Order>>.value( - _i6.dummyValue<_i5.Result<_i4.Order>>( - this, - Invocation.method(#voidOrder, [id]), - ), - ), + returnValue: + _i3.Future< + _i5.Result<({_i4.Order order, bool wasAlreadyVoided})> + >.value( + _i6.dummyValue< + _i5.Result<({_i4.Order order, bool wasAlreadyVoided})> + >(this, Invocation.method(#voidOrder, [id])), + ), ) - as _i3.Future<_i5.Result<_i4.Order>>); + as _i3.Future< + _i5.Result<({_i4.Order order, bool wasAlreadyVoided})> + >); @override _i3.Future<_i5.Result> deleteOrder(int? id) => diff --git a/features/orders/test/blocs/order_detail/order_detail_cubit_test.mocks.dart b/features/orders/test/blocs/order_detail/order_detail_cubit_test.mocks.dart index 1540e3e..093beb6 100644 --- a/features/orders/test/blocs/order_detail/order_detail_cubit_test.mocks.dart +++ b/features/orders/test/blocs/order_detail/order_detail_cubit_test.mocks.dart @@ -168,53 +168,71 @@ class MockOrdersRepository extends _i1.Mock implements _i2.OrdersRepository { _i3.Future<_i5.Result<_i4.Order>> createOrder(_i4.Order? order) => (super.noSuchMethod( Invocation.method(#createOrder, [order]), - returnValue: _i3.Future<_i5.Result<_i4.Order>>.value( - _i6.dummyValue<_i5.Result<_i4.Order>>( - this, - Invocation.method(#createOrder, [order]), - ), - ), + returnValue: + _i3.Future< + _i5.Result<({_i4.Order order, bool wasAlreadyVoided})> + >.value( + _i6.dummyValue< + _i5.Result<({_i4.Order order, bool wasAlreadyVoided})> + >(this, Invocation.method(#createOrder, [order])), + ), ) - as _i3.Future<_i5.Result<_i4.Order>>); + as _i3.Future< + _i5.Result<({_i4.Order order, bool wasAlreadyVoided})> + >); @override _i3.Future<_i5.Result<_i4.Order>> updateOrder(_i4.Order? order) => (super.noSuchMethod( Invocation.method(#updateOrder, [order]), - returnValue: _i3.Future<_i5.Result<_i4.Order>>.value( - _i6.dummyValue<_i5.Result<_i4.Order>>( - this, - Invocation.method(#updateOrder, [order]), - ), - ), + returnValue: + _i3.Future< + _i5.Result<({_i4.Order order, bool wasAlreadyVoided})> + >.value( + _i6.dummyValue< + _i5.Result<({_i4.Order order, bool wasAlreadyVoided})> + >(this, Invocation.method(#updateOrder, [order])), + ), ) - as _i3.Future<_i5.Result<_i4.Order>>); + as _i3.Future< + _i5.Result<({_i4.Order order, bool wasAlreadyVoided})> + >); @override _i3.Future<_i5.Result<_i4.Order>> completeOrder(int? id) => (super.noSuchMethod( Invocation.method(#completeOrder, [id]), - returnValue: _i3.Future<_i5.Result<_i4.Order>>.value( - _i6.dummyValue<_i5.Result<_i4.Order>>( - this, - Invocation.method(#completeOrder, [id]), - ), - ), + returnValue: + _i3.Future< + _i5.Result<({_i4.Order order, bool wasAlreadyVoided})> + >.value( + _i6.dummyValue< + _i5.Result<({_i4.Order order, bool wasAlreadyVoided})> + >(this, Invocation.method(#completeOrder, [id])), + ), ) - as _i3.Future<_i5.Result<_i4.Order>>); + as _i3.Future< + _i5.Result<({_i4.Order order, bool wasAlreadyVoided})> + >); @override - _i3.Future<_i5.Result<_i4.Order>> voidOrder(int? id) => + _i3.Future<_i5.Result<({_i4.Order order, bool wasAlreadyVoided})>> voidOrder( + int id, + ) => (super.noSuchMethod( Invocation.method(#voidOrder, [id]), - returnValue: _i3.Future<_i5.Result<_i4.Order>>.value( - _i6.dummyValue<_i5.Result<_i4.Order>>( - this, - Invocation.method(#voidOrder, [id]), - ), - ), + returnValue: + _i3.Future< + _i5.Result<({_i4.Order order, bool wasAlreadyVoided})> + >.value( + _i6.dummyValue< + _i5.Result<({_i4.Order order, bool wasAlreadyVoided})> + >(this, Invocation.method(#voidOrder, [id])), + ), ) - as _i3.Future<_i5.Result<_i4.Order>>); + as _i3.Future< + _i5.Result<({_i4.Order order, bool wasAlreadyVoided})> + >); @override _i3.Future<_i5.Result> deleteOrder(int? id) => diff --git a/features/products/test/blocs/categories/categories_bloc_test.mocks.dart b/features/products/test/blocs/categories/categories_bloc_test.mocks.dart index edca59e..cb0db2e 100644 --- a/features/products/test/blocs/categories/categories_bloc_test.mocks.dart +++ b/features/products/test/blocs/categories/categories_bloc_test.mocks.dart @@ -5,9 +5,8 @@ // ignore_for_file: no_leading_underscores_for_library_prefixes import 'dart:async' as _i3; -import 'package:feature_products/domain/models/category.dart' as _i4; -import 'package:feature_products/domain/repositories/categories_repository.dart' - as _i2; +import 'package:catalog/models/category.dart' as _i4; +import 'package:catalog/repositories/categories_repository.dart' as _i2; import 'package:mockito/mockito.dart' as _i1; import 'package:mockito/src/dummies.dart' as _i6; import 'package:result/result.dart' as _i5; diff --git a/features/products/test/blocs/modifiers/modifiers_bloc_test.mocks.dart b/features/products/test/blocs/modifiers/modifiers_bloc_test.mocks.dart index 5885dbd..f995f72 100644 --- a/features/products/test/blocs/modifiers/modifiers_bloc_test.mocks.dart +++ b/features/products/test/blocs/modifiers/modifiers_bloc_test.mocks.dart @@ -5,10 +5,9 @@ // ignore_for_file: no_leading_underscores_for_library_prefixes import 'dart:async' as _i3; -import 'package:feature_products/domain/models/modifier_group.dart' as _i4; -import 'package:feature_products/domain/models/modifier_option.dart' as _i7; -import 'package:feature_products/domain/repositories/modifiers_repository.dart' - as _i2; +import 'package:catalog/models/modifier_group.dart' as _i4; +import 'package:catalog/models/modifier_option.dart' as _i7; +import 'package:catalog/repositories/modifiers_repository.dart' as _i2; import 'package:mockito/mockito.dart' as _i1; import 'package:mockito/src/dummies.dart' as _i6; import 'package:result/result.dart' as _i5; diff --git a/features/products/test/blocs/product_detail/product_detail_cubit_test.mocks.dart b/features/products/test/blocs/product_detail/product_detail_cubit_test.mocks.dart index d58d6f9..0fa8a49 100644 --- a/features/products/test/blocs/product_detail/product_detail_cubit_test.mocks.dart +++ b/features/products/test/blocs/product_detail/product_detail_cubit_test.mocks.dart @@ -5,13 +5,11 @@ // ignore_for_file: no_leading_underscores_for_library_prefixes import 'dart:async' as _i3; -import 'package:feature_products/domain/models/modifier_group.dart' as _i8; -import 'package:feature_products/domain/models/modifier_option.dart' as _i9; -import 'package:feature_products/domain/models/product.dart' as _i4; -import 'package:feature_products/domain/repositories/modifiers_repository.dart' - as _i7; -import 'package:feature_products/domain/repositories/products_repository.dart' - as _i2; +import 'package:catalog/models/modifier_group.dart' as _i8; +import 'package:catalog/models/modifier_option.dart' as _i9; +import 'package:catalog/models/product.dart' as _i4; +import 'package:catalog/repositories/modifiers_repository.dart' as _i7; +import 'package:catalog/repositories/products_repository.dart' as _i2; import 'package:mockito/mockito.dart' as _i1; import 'package:mockito/src/dummies.dart' as _i6; import 'package:result/result.dart' as _i5; diff --git a/features/products/test/blocs/product_form/product_form_cubit_test.mocks.dart b/features/products/test/blocs/product_form/product_form_cubit_test.mocks.dart index b0dd603..158a9ee 100644 --- a/features/products/test/blocs/product_form/product_form_cubit_test.mocks.dart +++ b/features/products/test/blocs/product_form/product_form_cubit_test.mocks.dart @@ -5,13 +5,11 @@ // ignore_for_file: no_leading_underscores_for_library_prefixes import 'dart:async' as _i3; -import 'package:feature_products/domain/models/modifier_group.dart' as _i8; -import 'package:feature_products/domain/models/modifier_option.dart' as _i9; -import 'package:feature_products/domain/models/product.dart' as _i4; -import 'package:feature_products/domain/repositories/modifiers_repository.dart' - as _i7; -import 'package:feature_products/domain/repositories/products_repository.dart' - as _i2; +import 'package:catalog/models/modifier_group.dart' as _i8; +import 'package:catalog/models/modifier_option.dart' as _i9; +import 'package:catalog/models/product.dart' as _i4; +import 'package:catalog/repositories/modifiers_repository.dart' as _i7; +import 'package:catalog/repositories/products_repository.dart' as _i2; import 'package:mockito/mockito.dart' as _i1; import 'package:mockito/src/dummies.dart' as _i6; import 'package:result/result.dart' as _i5; diff --git a/features/products/test/blocs/products/products_bloc_test.mocks.dart b/features/products/test/blocs/products/products_bloc_test.mocks.dart index 21f484e..4df4df7 100644 --- a/features/products/test/blocs/products/products_bloc_test.mocks.dart +++ b/features/products/test/blocs/products/products_bloc_test.mocks.dart @@ -5,12 +5,10 @@ // ignore_for_file: no_leading_underscores_for_library_prefixes import 'dart:async' as _i3; -import 'package:feature_products/domain/models/category.dart' as _i8; -import 'package:feature_products/domain/models/product.dart' as _i4; -import 'package:feature_products/domain/repositories/categories_repository.dart' - as _i7; -import 'package:feature_products/domain/repositories/products_repository.dart' - as _i2; +import 'package:catalog/models/category.dart' as _i8; +import 'package:catalog/models/product.dart' as _i4; +import 'package:catalog/repositories/categories_repository.dart' as _i7; +import 'package:catalog/repositories/products_repository.dart' as _i2; import 'package:mockito/mockito.dart' as _i1; import 'package:mockito/src/dummies.dart' as _i6; import 'package:result/result.dart' as _i5; diff --git a/features/products/test/products_bloc_test.dart b/features/products/test/products_bloc_test.dart index 1ecfd79..886115f 100644 --- a/features/products/test/products_bloc_test.dart +++ b/features/products/test/products_bloc_test.dart @@ -1,10 +1,10 @@ import 'dart:async'; -import 'package:feature_products/domain/models/category.dart'; -import 'package:feature_products/domain/models/product.dart'; -import 'package:feature_products/domain/repositories/categories_repository.dart'; -import 'package:feature_products/domain/repositories/products_repository.dart'; -import 'package:feature_products/presentation/blocs/products/products_bloc.dart'; +import 'package:catalog/models/category.dart'; +import 'package:catalog/models/product.dart'; +import 'package:catalog/repositories/categories_repository.dart'; +import 'package:catalog/repositories/products_repository.dart'; +import 'package:catalog/blocs/products/products_bloc.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:result/result.dart'; From 32c8416a6f6c29828d31083cac73783c71b07610 Mon Sep 17 00:00:00 2001 From: fres-sudo Date: Sun, 12 Jul 2026 16:08:58 +0200 Subject: [PATCH 5/6] fix(test): fix voidOrder return type and feature_products stale imports in mocks MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Revert accidental VoidOrderResult replacement in createOrder/updateOrder/ completeOrder mock bodies (only voidOrder should return VoidOrderResult) - Fix order_detail_cubit_test: stub voidOrder with record literal {order: x, wasAlreadyVoided: false}; replace any with literal 7 for non-nullable int parameter in verifyNever - Fix printer_section_test: stale feature_settings/domain and feature_settings/presentation/blocs imports → package:app_settings Co-Authored-By: Claude Sonnet 4.6 --- .../active_order_bloc_test.mocks.dart | 54 ++++++++----------- .../checkout/checkout_cubit_test.mocks.dart | 54 ++++++++----------- .../order_detail/order_detail_cubit_test.dart | 14 ++--- .../order_detail_cubit_test.mocks.dart | 54 ++++++++----------- .../widgets/printer_section_test.dart | 4 +- 5 files changed, 72 insertions(+), 108 deletions(-) diff --git a/features/orders/test/blocs/active_order/active_order_bloc_test.mocks.dart b/features/orders/test/blocs/active_order/active_order_bloc_test.mocks.dart index 0706045..63fe46a 100644 --- a/features/orders/test/blocs/active_order/active_order_bloc_test.mocks.dart +++ b/features/orders/test/blocs/active_order/active_order_bloc_test.mocks.dart @@ -173,52 +173,40 @@ class MockOrdersRepository extends _i1.Mock implements _i3.OrdersRepository { _i4.Future<_i6.Result<_i5.Order>> createOrder(_i5.Order? order) => (super.noSuchMethod( Invocation.method(#createOrder, [order]), - returnValue: - _i4.Future< - _i6.Result<({_i5.Order order, bool wasAlreadyVoided})> - >.value( - _i7.dummyValue< - _i6.Result<({_i5.Order order, bool wasAlreadyVoided})> - >(this, Invocation.method(#createOrder, [order])), - ), + returnValue: _i4.Future<_i6.Result<_i5.Order>>.value( + _i7.dummyValue<_i6.Result<_i5.Order>>( + this, + Invocation.method(#createOrder, [order]), + ), + ), ) - as _i4.Future< - _i6.Result<({_i5.Order order, bool wasAlreadyVoided})> - >); + as _i4.Future<_i6.Result<_i5.Order>>); @override _i4.Future<_i6.Result<_i5.Order>> updateOrder(_i5.Order? order) => (super.noSuchMethod( Invocation.method(#updateOrder, [order]), - returnValue: - _i4.Future< - _i6.Result<({_i5.Order order, bool wasAlreadyVoided})> - >.value( - _i7.dummyValue< - _i6.Result<({_i5.Order order, bool wasAlreadyVoided})> - >(this, Invocation.method(#updateOrder, [order])), - ), + returnValue: _i4.Future<_i6.Result<_i5.Order>>.value( + _i7.dummyValue<_i6.Result<_i5.Order>>( + this, + Invocation.method(#updateOrder, [order]), + ), + ), ) - as _i4.Future< - _i6.Result<({_i5.Order order, bool wasAlreadyVoided})> - >); + as _i4.Future<_i6.Result<_i5.Order>>); @override _i4.Future<_i6.Result<_i5.Order>> completeOrder(int? id) => (super.noSuchMethod( Invocation.method(#completeOrder, [id]), - returnValue: - _i4.Future< - _i6.Result<({_i5.Order order, bool wasAlreadyVoided})> - >.value( - _i7.dummyValue< - _i6.Result<({_i5.Order order, bool wasAlreadyVoided})> - >(this, Invocation.method(#completeOrder, [id])), - ), + returnValue: _i4.Future<_i6.Result<_i5.Order>>.value( + _i7.dummyValue<_i6.Result<_i5.Order>>( + this, + Invocation.method(#completeOrder, [id]), + ), + ), ) - as _i4.Future< - _i6.Result<({_i5.Order order, bool wasAlreadyVoided})> - >); + as _i4.Future<_i6.Result<_i5.Order>>); @override _i4.Future<_i6.Result<({_i5.Order order, bool wasAlreadyVoided})>> voidOrder( diff --git a/features/orders/test/blocs/checkout/checkout_cubit_test.mocks.dart b/features/orders/test/blocs/checkout/checkout_cubit_test.mocks.dart index 494f5d4..39f4b2e 100644 --- a/features/orders/test/blocs/checkout/checkout_cubit_test.mocks.dart +++ b/features/orders/test/blocs/checkout/checkout_cubit_test.mocks.dart @@ -172,52 +172,40 @@ class MockOrdersRepository extends _i1.Mock implements _i2.OrdersRepository { _i3.Future<_i5.Result<_i4.Order>> createOrder(_i4.Order? order) => (super.noSuchMethod( Invocation.method(#createOrder, [order]), - returnValue: - _i3.Future< - _i5.Result<({_i4.Order order, bool wasAlreadyVoided})> - >.value( - _i6.dummyValue< - _i5.Result<({_i4.Order order, bool wasAlreadyVoided})> - >(this, Invocation.method(#createOrder, [order])), - ), + returnValue: _i3.Future<_i5.Result<_i4.Order>>.value( + _i6.dummyValue<_i5.Result<_i4.Order>>( + this, + Invocation.method(#createOrder, [order]), + ), + ), ) - as _i3.Future< - _i5.Result<({_i4.Order order, bool wasAlreadyVoided})> - >); + as _i3.Future<_i5.Result<_i4.Order>>); @override _i3.Future<_i5.Result<_i4.Order>> updateOrder(_i4.Order? order) => (super.noSuchMethod( Invocation.method(#updateOrder, [order]), - returnValue: - _i3.Future< - _i5.Result<({_i4.Order order, bool wasAlreadyVoided})> - >.value( - _i6.dummyValue< - _i5.Result<({_i4.Order order, bool wasAlreadyVoided})> - >(this, Invocation.method(#updateOrder, [order])), - ), + returnValue: _i3.Future<_i5.Result<_i4.Order>>.value( + _i6.dummyValue<_i5.Result<_i4.Order>>( + this, + Invocation.method(#updateOrder, [order]), + ), + ), ) - as _i3.Future< - _i5.Result<({_i4.Order order, bool wasAlreadyVoided})> - >); + as _i3.Future<_i5.Result<_i4.Order>>); @override _i3.Future<_i5.Result<_i4.Order>> completeOrder(int? id) => (super.noSuchMethod( Invocation.method(#completeOrder, [id]), - returnValue: - _i3.Future< - _i5.Result<({_i4.Order order, bool wasAlreadyVoided})> - >.value( - _i6.dummyValue< - _i5.Result<({_i4.Order order, bool wasAlreadyVoided})> - >(this, Invocation.method(#completeOrder, [id])), - ), + returnValue: _i3.Future<_i5.Result<_i4.Order>>.value( + _i6.dummyValue<_i5.Result<_i4.Order>>( + this, + Invocation.method(#completeOrder, [id]), + ), + ), ) - as _i3.Future< - _i5.Result<({_i4.Order order, bool wasAlreadyVoided})> - >); + as _i3.Future<_i5.Result<_i4.Order>>); @override _i3.Future<_i5.Result<({_i4.Order order, bool wasAlreadyVoided})>> voidOrder( diff --git a/features/orders/test/blocs/order_detail/order_detail_cubit_test.dart b/features/orders/test/blocs/order_detail/order_detail_cubit_test.dart index f1bc9f7..e34367b 100644 --- a/features/orders/test/blocs/order_detail/order_detail_cubit_test.dart +++ b/features/orders/test/blocs/order_detail/order_detail_cubit_test.dart @@ -74,9 +74,9 @@ void main() { orderId: anyNamed('orderId'), ), ).thenAnswer((_) async => Result.ok((productId: 1, quantity: 3))); - when( - ordersRepository.voidOrder(7), - ).thenAnswer((_) async => Result.ok(completed)); + when(ordersRepository.voidOrder(7)).thenAnswer( + (_) async => Result.ok((order: completed, wasAlreadyVoided: false)), + ); final cubit = buildCubit()..load(7); await Future.delayed(Duration.zero); @@ -101,9 +101,9 @@ void main() { when( ordersRepository.watchOrderById(7), ).thenAnswer((_) => Stream.value(pending)); - when( - ordersRepository.voidOrder(7), - ).thenAnswer((_) async => Result.ok(pending)); + when(ordersRepository.voidOrder(7)).thenAnswer( + (_) async => Result.ok((order: pending, wasAlreadyVoided: false)), + ); final cubit = buildCubit()..load(7); await Future.delayed(Duration.zero); @@ -137,7 +137,7 @@ void main() { await Future.delayed(Duration.zero); await cubit.voidOrder(); - verifyNever(ordersRepository.voidOrder(any)); + verifyNever(ordersRepository.voidOrder(7)); await cubit.close(); }); }); diff --git a/features/orders/test/blocs/order_detail/order_detail_cubit_test.mocks.dart b/features/orders/test/blocs/order_detail/order_detail_cubit_test.mocks.dart index 093beb6..67b1e8a 100644 --- a/features/orders/test/blocs/order_detail/order_detail_cubit_test.mocks.dart +++ b/features/orders/test/blocs/order_detail/order_detail_cubit_test.mocks.dart @@ -168,52 +168,40 @@ class MockOrdersRepository extends _i1.Mock implements _i2.OrdersRepository { _i3.Future<_i5.Result<_i4.Order>> createOrder(_i4.Order? order) => (super.noSuchMethod( Invocation.method(#createOrder, [order]), - returnValue: - _i3.Future< - _i5.Result<({_i4.Order order, bool wasAlreadyVoided})> - >.value( - _i6.dummyValue< - _i5.Result<({_i4.Order order, bool wasAlreadyVoided})> - >(this, Invocation.method(#createOrder, [order])), - ), + returnValue: _i3.Future<_i5.Result<_i4.Order>>.value( + _i6.dummyValue<_i5.Result<_i4.Order>>( + this, + Invocation.method(#createOrder, [order]), + ), + ), ) - as _i3.Future< - _i5.Result<({_i4.Order order, bool wasAlreadyVoided})> - >); + as _i3.Future<_i5.Result<_i4.Order>>); @override _i3.Future<_i5.Result<_i4.Order>> updateOrder(_i4.Order? order) => (super.noSuchMethod( Invocation.method(#updateOrder, [order]), - returnValue: - _i3.Future< - _i5.Result<({_i4.Order order, bool wasAlreadyVoided})> - >.value( - _i6.dummyValue< - _i5.Result<({_i4.Order order, bool wasAlreadyVoided})> - >(this, Invocation.method(#updateOrder, [order])), - ), + returnValue: _i3.Future<_i5.Result<_i4.Order>>.value( + _i6.dummyValue<_i5.Result<_i4.Order>>( + this, + Invocation.method(#updateOrder, [order]), + ), + ), ) - as _i3.Future< - _i5.Result<({_i4.Order order, bool wasAlreadyVoided})> - >); + as _i3.Future<_i5.Result<_i4.Order>>); @override _i3.Future<_i5.Result<_i4.Order>> completeOrder(int? id) => (super.noSuchMethod( Invocation.method(#completeOrder, [id]), - returnValue: - _i3.Future< - _i5.Result<({_i4.Order order, bool wasAlreadyVoided})> - >.value( - _i6.dummyValue< - _i5.Result<({_i4.Order order, bool wasAlreadyVoided})> - >(this, Invocation.method(#completeOrder, [id])), - ), + returnValue: _i3.Future<_i5.Result<_i4.Order>>.value( + _i6.dummyValue<_i5.Result<_i4.Order>>( + this, + Invocation.method(#completeOrder, [id]), + ), + ), ) - as _i3.Future< - _i5.Result<({_i4.Order order, bool wasAlreadyVoided})> - >); + as _i3.Future<_i5.Result<_i4.Order>>); @override _i3.Future<_i5.Result<({_i4.Order order, bool wasAlreadyVoided})>> voidOrder( diff --git a/features/settings/test/presentation/widgets/printer_section_test.dart b/features/settings/test/presentation/widgets/printer_section_test.dart index afe6de8..40924e7 100644 --- a/features/settings/test/presentation/widgets/printer_section_test.dart +++ b/features/settings/test/presentation/widgets/printer_section_test.dart @@ -1,6 +1,6 @@ import 'package:bloc_exports/bloc_exports.dart'; -import 'package:feature_settings/domain/repositories/settings_repository.dart'; -import 'package:feature_settings/presentation/blocs/settings/settings_cubit.dart'; +import 'package:app_settings/repositories/settings_repository.dart'; +import 'package:app_settings/blocs/settings_cubit.dart'; import 'package:feature_settings/presentation/widgets/printer_section.dart'; import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; From ee8a52db167ba6c7f0b0af9736b1f12242ee2395 Mon Sep 17 00:00:00 2001 From: fres-sudo Date: Sun, 12 Jul 2026 17:01:01 +0200 Subject: [PATCH 6/6] fix(ci): sync branch with master and repair stale codegen blocking pipeline Branch was 2 commits behind master's formatting fixes; merging alone reintroduced format failures because those master commits were formatted with a different dart format version than the pinned SDK (3.38.5) uses. Re-ran `melos run format:fix` to reconcile. Also fixes issues verified by running the full CI pipeline locally that were blocking `lint`/`test` from ever completing: - products_repository_test.mocks.dart and friends were stale (missing MockInventoryRepository) after a repository interface change; regenerated via build_runner and restored the DAO .g.dart mixins that build_runner incorrectly empties for cross-package drift tables. - printer_section_test.dart had a typo (_alues) that made a mocked field always null, causing undefined_identifier analyzer errors. - app_shell_sidebar.dart had a dead, always-default local parameter shadowing the real showCollapseToggle field. - active_order_bloc_test.dart had an unused discounts import. Co-Authored-By: Claude Sonnet 5 --- .../lib/app/pages/protected_shell_page.dart | 25 +- .../active_order/active_order_bloc_test.dart | 1 - .../categories_bloc_test.mocks.dart | 2 +- .../modifiers/modifiers_bloc_test.mocks.dart | 2 +- .../product_detail_cubit_test.mocks.dart | 2 +- .../product_form_cubit_test.mocks.dart | 2 +- .../products/products_bloc_test.mocks.dart | 2 +- .../products_repository_test.mocks.dart | 881 ++++++------------ .../widgets/printer_section_test.dart | 29 +- .../widgets/app_shell/app_shell_sidebar.dart | 58 +- 10 files changed, 373 insertions(+), 631 deletions(-) diff --git a/apps/agora/lib/app/pages/protected_shell_page.dart b/apps/agora/lib/app/pages/protected_shell_page.dart index aa4c138..d89690f 100644 --- a/apps/agora/lib/app/pages/protected_shell_page.dart +++ b/apps/agora/lib/app/pages/protected_shell_page.dart @@ -112,7 +112,10 @@ class _ProtectedShellPageState extends State { return BlocBuilder( builder: (context, clockState) { - final isClockedIn = clockState.maybeWhen(clockedIn: (_) => true, orElse: () => false); + final isClockedIn = clockState.maybeWhen( + clockedIn: (_) => true, + orElse: () => false, + ); return AutoTabsRouter( homeIndex: 0, @@ -120,7 +123,9 @@ class _ProtectedShellPageState extends State { builder: (context, child) { final tabsRouter = AutoTabsRouter.of(context); final currentRouteName = tabsRouter.current.name; - var activeIndex = entries.indexWhere((e) => e.route.routeName == currentRouteName); + var activeIndex = entries.indexWhere( + (e) => e.route.routeName == currentRouteName, + ); if (activeIndex < 0) { activeIndex = _selectedIndex.clamp(0, entries.length - 1); } @@ -136,7 +141,13 @@ class _ProtectedShellPageState extends State { currentOperator: 'Main Counter', onOperatorSwitchTap: () {}, openSidebar: () => _scaffoldKey.currentState?.openDrawer(), - child: _buildLayout(context, child, tabsRouter, activeIndex, entries), + child: _buildLayout( + context, + child, + tabsRouter, + activeIndex, + entries, + ), ); }, ); @@ -171,7 +182,8 @@ class _ProtectedShellPageState extends State { items: [for (final e in entries) e.item], selectedIndex: activeIndex, isCollapsed: _isSidebarCollapsed, - onCollapsedChanged: (v) => setState(() => _isSidebarCollapsed = v), + onCollapsedChanged: (v) => + setState(() => _isSidebarCollapsed = v), onItemSelected: (index) { setState(() => _selectedIndex = index); tabsRouter.navigate(entries[index].route); @@ -214,7 +226,10 @@ class _ProtectedShellPageState extends State { const Spacer(), AppIconButton.ghost( onPressed: () => Navigator.of(context).pop(), - icon: const Icon(AgoraIcons.x_mark, color: AppPalette.neutral400), + icon: const Icon( + AgoraIcons.x_mark, + color: AppPalette.neutral400, + ), style: IconButton.styleFrom( padding: EdgeInsets.zero, minimumSize: const Size(40, 40), diff --git a/features/orders/test/blocs/active_order/active_order_bloc_test.dart b/features/orders/test/blocs/active_order/active_order_bloc_test.dart index 0b36d8a..731fbcb 100644 --- a/features/orders/test/blocs/active_order/active_order_bloc_test.dart +++ b/features/orders/test/blocs/active_order/active_order_bloc_test.dart @@ -1,4 +1,3 @@ -import 'package:discounts/discounts.dart'; import 'package:order_management/order_management.dart'; import 'package:feature_products/feature_products.dart'; import 'package:app_settings/blocs/settings_cubit.dart'; diff --git a/features/products/test/blocs/categories/categories_bloc_test.mocks.dart b/features/products/test/blocs/categories/categories_bloc_test.mocks.dart index cb0db2e..b56f34f 100644 --- a/features/products/test/blocs/categories/categories_bloc_test.mocks.dart +++ b/features/products/test/blocs/categories/categories_bloc_test.mocks.dart @@ -1,5 +1,5 @@ // Mocks generated by Mockito 5.4.6 from annotations -// in agora_workspace/test/products/blocs/categories/categories_bloc_test.dart. +// in feature_products/test/blocs/categories/categories_bloc_test.dart. // Do not manually edit this file. // ignore_for_file: no_leading_underscores_for_library_prefixes diff --git a/features/products/test/blocs/modifiers/modifiers_bloc_test.mocks.dart b/features/products/test/blocs/modifiers/modifiers_bloc_test.mocks.dart index f995f72..e7ef4b8 100644 --- a/features/products/test/blocs/modifiers/modifiers_bloc_test.mocks.dart +++ b/features/products/test/blocs/modifiers/modifiers_bloc_test.mocks.dart @@ -1,5 +1,5 @@ // Mocks generated by Mockito 5.4.6 from annotations -// in agora_workspace/test/products/blocs/modifiers/modifiers_bloc_test.dart. +// in feature_products/test/blocs/modifiers/modifiers_bloc_test.dart. // Do not manually edit this file. // ignore_for_file: no_leading_underscores_for_library_prefixes diff --git a/features/products/test/blocs/product_detail/product_detail_cubit_test.mocks.dart b/features/products/test/blocs/product_detail/product_detail_cubit_test.mocks.dart index 0fa8a49..6e7fff8 100644 --- a/features/products/test/blocs/product_detail/product_detail_cubit_test.mocks.dart +++ b/features/products/test/blocs/product_detail/product_detail_cubit_test.mocks.dart @@ -1,5 +1,5 @@ // Mocks generated by Mockito 5.4.6 from annotations -// in agora_workspace/test/products/blocs/product_detail/product_detail_cubit_test.dart. +// in feature_products/test/blocs/product_detail/product_detail_cubit_test.dart. // Do not manually edit this file. // ignore_for_file: no_leading_underscores_for_library_prefixes diff --git a/features/products/test/blocs/product_form/product_form_cubit_test.mocks.dart b/features/products/test/blocs/product_form/product_form_cubit_test.mocks.dart index 158a9ee..a40dc4c 100644 --- a/features/products/test/blocs/product_form/product_form_cubit_test.mocks.dart +++ b/features/products/test/blocs/product_form/product_form_cubit_test.mocks.dart @@ -1,5 +1,5 @@ // Mocks generated by Mockito 5.4.6 from annotations -// in agora_workspace/test/products/blocs/product_form/product_form_cubit_test.dart. +// in feature_products/test/blocs/product_form/product_form_cubit_test.dart. // Do not manually edit this file. // ignore_for_file: no_leading_underscores_for_library_prefixes diff --git a/features/products/test/blocs/products/products_bloc_test.mocks.dart b/features/products/test/blocs/products/products_bloc_test.mocks.dart index 4df4df7..c445619 100644 --- a/features/products/test/blocs/products/products_bloc_test.mocks.dart +++ b/features/products/test/blocs/products/products_bloc_test.mocks.dart @@ -1,5 +1,5 @@ // Mocks generated by Mockito 5.4.6 from annotations -// in agora_workspace/test/products/blocs/products/products_bloc_test.dart. +// in feature_products/test/blocs/products/products_bloc_test.dart. // Do not manually edit this file. // ignore_for_file: no_leading_underscores_for_library_prefixes diff --git a/features/products/test/repositories/products_repository_test.mocks.dart b/features/products/test/repositories/products_repository_test.mocks.dart index 1b12cf8..4e7b122 100644 --- a/features/products/test/repositories/products_repository_test.mocks.dart +++ b/features/products/test/repositories/products_repository_test.mocks.dart @@ -1,5 +1,5 @@ // Mocks generated by Mockito 5.4.6 from annotations -// in agora_workspace/test/products/repositories/products_repository_test.dart. +// in feature_products/test/repositories/products_repository_test.dart. // Do not manually edit this file. // ignore_for_file: no_leading_underscores_for_library_prefixes @@ -8,14 +8,15 @@ import 'dart:async' as _i5; import 'package:database/database.dart' as _i2; import 'package:drift/drift.dart' as _i3; import 'package:drift/src/runtime/executor/stream_queries.dart' as _i4; -import 'package:feature_inventory/data/sources/local/daos/stocks_dao.dart' - as _i8; import 'package:feature_products/data/sources/local/daos/modifiers_dao.dart' - as _i9; + as _i10; import 'package:feature_products/data/sources/local/daos/products_dao.dart' as _i6; +import 'package:inventory_contracts/repositories/inventory_repository.dart' + as _i8; import 'package:mockito/mockito.dart' as _i1; import 'package:mockito/src/dummies.dart' as _i7; +import 'package:result/result.dart' as _i9; // ignore_for_file: type=lint // ignore_for_file: avoid_redundant_argument_values @@ -120,18 +121,6 @@ class _FakeGenerationContext_14 extends _i1.SmartFake : super(parent, parentInvocation); } -class _Fake$StocksTableTable_15 extends _i1.SmartFake - implements _i2.$StocksTableTable { - _Fake$StocksTableTable_15(Object parent, Invocation parentInvocation) - : super(parent, parentInvocation); -} - -class _Fake$ProductsTableTable_16 extends _i1.SmartFake - implements _i2.$ProductsTableTable { - _Fake$ProductsTableTable_16(Object parent, Invocation parentInvocation) - : super(parent, parentInvocation); -} - /// A class which mocks [ProductsDao]. /// /// See the documentation for Mockito's code generation for more information. @@ -752,687 +741,383 @@ class MockProductsDao extends _i1.Mock implements _i6.ProductsDao { as _i5.Future); } -/// A class which mocks [StocksDao]. +/// A class which mocks [InventoryRepository]. /// /// See the documentation for Mockito's code generation for more information. -class MockStocksDao extends _i1.Mock implements _i8.StocksDao { - MockStocksDao() { +class MockInventoryRepository extends _i1.Mock + implements _i8.InventoryRepository { + MockInventoryRepository() { _i1.throwOnMissingStub(this); } @override - _i2.AgoraDatabase get attachedDatabase => - (super.noSuchMethod( - Invocation.getter(#attachedDatabase), - returnValue: _FakeAgoraDatabase_0( - this, - Invocation.getter(#attachedDatabase), - ), - ) - as _i2.AgoraDatabase); - - @override - _i3.DatabaseConnection get connection => - (super.noSuchMethod( - Invocation.getter(#connection), - returnValue: _FakeDatabaseConnection_1( - this, - Invocation.getter(#connection), - ), - ) - as _i3.DatabaseConnection); - - @override - _i3.DriftDatabaseOptions get options => - (super.noSuchMethod( - Invocation.getter(#options), - returnValue: _FakeDriftDatabaseOptions_2( - this, - Invocation.getter(#options), - ), - ) - as _i3.DriftDatabaseOptions); - - @override - _i3.SqlTypes get typeMapping => - (super.noSuchMethod( - Invocation.getter(#typeMapping), - returnValue: _i7.dummyValue<_i3.SqlTypes>( - this, - Invocation.getter(#typeMapping), - ), - ) - as _i3.SqlTypes); - - @override - _i3.QueryExecutor get executor => - (super.noSuchMethod( - Invocation.getter(#executor), - returnValue: _FakeQueryExecutor_3( - this, - Invocation.getter(#executor), - ), - ) - as _i3.QueryExecutor); - - @override - _i4.StreamQueryStore get streamQueries => - (super.noSuchMethod( - Invocation.getter(#streamQueries), - returnValue: _FakeStreamQueryStore_4( - this, - Invocation.getter(#streamQueries), - ), - ) - as _i4.StreamQueryStore); - - @override - _i3.DatabaseConnectionUser get resolvedEngine => - (super.noSuchMethod( - Invocation.getter(#resolvedEngine), - returnValue: _FakeDatabaseConnectionUser_5( - this, - Invocation.getter(#resolvedEngine), - ), - ) - as _i3.DatabaseConnectionUser); - - @override - _i2.$StocksTableTable get stocksTable => - (super.noSuchMethod( - Invocation.getter(#stocksTable), - returnValue: _Fake$StocksTableTable_15( - this, - Invocation.getter(#stocksTable), - ), - ) - as _i2.$StocksTableTable); - - @override - _i2.$ProductsTableTable get productsTable => - (super.noSuchMethod( - Invocation.getter(#productsTable), - returnValue: _Fake$ProductsTableTable_16( - this, - Invocation.getter(#productsTable), - ), - ) - as _i2.$ProductsTableTable); - - @override - _i5.Stream> watchAllStocks() => + _i5.Stream> watchAllStocks() => (super.noSuchMethod( Invocation.method(#watchAllStocks, []), - returnValue: _i5.Stream>.empty(), + returnValue: + _i5.Stream>.empty(), ) - as _i5.Stream>); + as _i5.Stream>); @override - _i5.Stream> watchPaginatedStocks({ - required int? limit, - required int? offset, - }) => + _i5.Stream< + List<({String name, int productId, int quantity, bool trackStock})> + > + watchStockLevels() => (super.noSuchMethod( - Invocation.method(#watchPaginatedStocks, [], { - #limit: limit, - #offset: offset, - }), - returnValue: _i5.Stream>.empty(), + Invocation.method(#watchStockLevels, []), + returnValue: + _i5.Stream< + List< + ({ + String name, + int productId, + int quantity, + bool trackStock, + }) + > + >.empty(), ) - as _i5.Stream>); + as _i5.Stream< + List<({String name, int productId, int quantity, bool trackStock})> + >); @override - _i5.Stream<_i2.StockEntity?> watchStockByProductId(int? productId) => + _i5.Stream<({int productId, int quantity})?> watchStockByProductId( + int? productId, + ) => (super.noSuchMethod( Invocation.method(#watchStockByProductId, [productId]), - returnValue: _i5.Stream<_i2.StockEntity?>.empty(), - ) - as _i5.Stream<_i2.StockEntity?>); - - @override - _i5.Future<_i2.StockEntity?> getStockByProductId(int? productId) => - (super.noSuchMethod( - Invocation.method(#getStockByProductId, [productId]), - returnValue: _i5.Future<_i2.StockEntity?>.value(), + returnValue: _i5.Stream<({int productId, int quantity})?>.empty(), ) - as _i5.Future<_i2.StockEntity?>); + as _i5.Stream<({int productId, int quantity})?>); @override - _i5.Future getStocksCount() => + _i5.Stream> watchLowStocks( + int? threshold, + ) => (super.noSuchMethod( - Invocation.method(#getStocksCount, []), - returnValue: _i5.Future.value(0), + Invocation.method(#watchLowStocks, [threshold]), + returnValue: + _i5.Stream>.empty(), ) - as _i5.Future); + as _i5.Stream>); @override _i5.Stream< - List<({String name, int productId, int quantity, bool trackStock})> + List< + ({ + int id, + int productId, + int quantityChange, + String reason, + DateTime timestamp, + }) + > > - watchStockLevels() => + watchMovementsByProductId(int? productId) => (super.noSuchMethod( - Invocation.method(#watchStockLevels, []), + Invocation.method(#watchMovementsByProductId, [productId]), returnValue: _i5.Stream< List< ({ - String name, + int id, int productId, - int quantity, - bool trackStock, + int quantityChange, + String reason, + DateTime timestamp, }) > >.empty(), ) as _i5.Stream< - List<({String name, int productId, int quantity, bool trackStock})> + List< + ({ + int id, + int productId, + int quantityChange, + String reason, + DateTime timestamp, + }) + > >); @override - _i5.Stream> watchLowStocks(int? threshold) => + _i5.Future<_i9.Result> getStockQuantity(int? productId) => (super.noSuchMethod( - Invocation.method(#watchLowStocks, [threshold]), - returnValue: _i5.Stream>.empty(), + Invocation.method(#getStockQuantity, [productId]), + returnValue: _i5.Future<_i9.Result>.value( + _i7.dummyValue<_i9.Result>( + this, + Invocation.method(#getStockQuantity, [productId]), + ), + ), ) - as _i5.Stream>); + as _i5.Future<_i9.Result>); @override - _i5.Future insertStock(_i2.StocksTableCompanion? companion) => + _i5.Future<_i9.Result<({int productId, int quantity})?>> getStockByProductId( + int? productId, + ) => (super.noSuchMethod( - Invocation.method(#insertStock, [companion]), - returnValue: _i5.Future.value(0), + Invocation.method(#getStockByProductId, [productId]), + returnValue: + _i5.Future<_i9.Result<({int productId, int quantity})?>>.value( + _i7.dummyValue<_i9.Result<({int productId, int quantity})?>>( + this, + Invocation.method(#getStockByProductId, [productId]), + ), + ), ) - as _i5.Future); + as _i5.Future<_i9.Result<({int productId, int quantity})?>>); @override - _i5.Future updateStock( - int? productId, - _i2.StocksTableCompanion? companion, - ) => + _i5.Future<_i9.Result> getStocksCount() => (super.noSuchMethod( - Invocation.method(#updateStock, [productId, companion]), - returnValue: _i5.Future.value(false), + Invocation.method(#getStocksCount, []), + returnValue: _i5.Future<_i9.Result>.value( + _i7.dummyValue<_i9.Result>( + this, + Invocation.method(#getStocksCount, []), + ), + ), ) - as _i5.Future); + as _i5.Future<_i9.Result>); @override - _i5.Future upsertStock({ - required int? productId, - required int? quantity, + _i5.Future< + _i9.Result< + List< + ({ + int id, + int productId, + int quantityChange, + String reason, + DateTime timestamp, + }) + > + > + > + getMovementHistory({ + int? productId, + DateTime? startDate, + DateTime? endDate, }) => (super.noSuchMethod( - Invocation.method(#upsertStock, [], { + Invocation.method(#getMovementHistory, [], { #productId: productId, - #quantity: quantity, + #startDate: startDate, + #endDate: endDate, }), - returnValue: _i5.Future.value(), - returnValueForMissingStub: _i5.Future.value(), + returnValue: + _i5.Future< + _i9.Result< + List< + ({ + int id, + int productId, + int quantityChange, + String reason, + DateTime timestamp, + }) + > + > + >.value( + _i7.dummyValue< + _i9.Result< + List< + ({ + int id, + int productId, + int quantityChange, + String reason, + DateTime timestamp, + }) + > + > + >( + this, + Invocation.method(#getMovementHistory, [], { + #productId: productId, + #startDate: startDate, + #endDate: endDate, + }), + ), + ), ) - as _i5.Future); + as _i5.Future< + _i9.Result< + List< + ({ + int id, + int productId, + int quantityChange, + String reason, + DateTime timestamp, + }) + > + > + >); @override - _i5.Future adjustStockQuantity({ + _i5.Future<_i9.Result<({int productId, int quantity})>> adjustStock({ required int? productId, required int? delta, + required String? reason, }) => (super.noSuchMethod( - Invocation.method(#adjustStockQuantity, [], { + Invocation.method(#adjustStock, [], { #productId: productId, #delta: delta, + #reason: reason, }), - returnValue: _i5.Future.value(false), + returnValue: + _i5.Future<_i9.Result<({int productId, int quantity})>>.value( + _i7.dummyValue<_i9.Result<({int productId, int quantity})>>( + this, + Invocation.method(#adjustStock, [], { + #productId: productId, + #delta: delta, + #reason: reason, + }), + ), + ), ) - as _i5.Future); + as _i5.Future<_i9.Result<({int productId, int quantity})>>); @override - _i5.Future softDeleteStock(int? productId) => + _i5.Future<_i9.Result<({int productId, int quantity})>> setStock({ + required int? productId, + required int? quantity, + required String? reason, + }) => (super.noSuchMethod( - Invocation.method(#softDeleteStock, [productId]), - returnValue: _i5.Future.value(false), + Invocation.method(#setStock, [], { + #productId: productId, + #quantity: quantity, + #reason: reason, + }), + returnValue: + _i5.Future<_i9.Result<({int productId, int quantity})>>.value( + _i7.dummyValue<_i9.Result<({int productId, int quantity})>>( + this, + Invocation.method(#setStock, [], { + #productId: productId, + #quantity: quantity, + #reason: reason, + }), + ), + ), ) - as _i5.Future); + as _i5.Future<_i9.Result<({int productId, int quantity})>>); @override - _i5.Future restoreStock(int? productId) => + _i5.Future<_i9.Result<({int productId, int quantity})>> decrementForOrder({ + required int? productId, + required int? quantity, + required int? orderId, + }) => (super.noSuchMethod( - Invocation.method(#restoreStock, [productId]), - returnValue: _i5.Future.value(false), + Invocation.method(#decrementForOrder, [], { + #productId: productId, + #quantity: quantity, + #orderId: orderId, + }), + returnValue: + _i5.Future<_i9.Result<({int productId, int quantity})>>.value( + _i7.dummyValue<_i9.Result<({int productId, int quantity})>>( + this, + Invocation.method(#decrementForOrder, [], { + #productId: productId, + #quantity: quantity, + #orderId: orderId, + }), + ), + ), ) - as _i5.Future); + as _i5.Future<_i9.Result<({int productId, int quantity})>>); @override - _i5.Future hardDeleteStock(int? productId) => + _i5.Future<_i9.Result<({int productId, int quantity})>> + restoreForVoidedOrder({ + required int? productId, + required int? quantity, + required int? orderId, + }) => (super.noSuchMethod( - Invocation.method(#hardDeleteStock, [productId]), - returnValue: _i5.Future.value(0), + Invocation.method(#restoreForVoidedOrder, [], { + #productId: productId, + #quantity: quantity, + #orderId: orderId, + }), + returnValue: + _i5.Future<_i9.Result<({int productId, int quantity})>>.value( + _i7.dummyValue<_i9.Result<({int productId, int quantity})>>( + this, + Invocation.method(#restoreForVoidedOrder, [], { + #productId: productId, + #quantity: quantity, + #orderId: orderId, + }), + ), + ), ) - as _i5.Future); + as _i5.Future<_i9.Result<({int productId, int quantity})>>); @override - _i5.Stream createStream( - _i4.QueryStreamFetcher? stmt, - ) => + _i5.Future<_i9.Result> initializeStock({ + required int? productId, + required int? quantity, + }) => (super.noSuchMethod( - Invocation.method(#createStream, [stmt]), - returnValue: _i5.Stream.empty(), + Invocation.method(#initializeStock, [], { + #productId: productId, + #quantity: quantity, + }), + returnValue: _i5.Future<_i9.Result>.value( + _i7.dummyValue<_i9.Result>( + this, + Invocation.method(#initializeStock, [], { + #productId: productId, + #quantity: quantity, + }), + ), + ), ) - as _i5.Stream); + as _i5.Future<_i9.Result>); @override - T alias(_i3.ResultSetImplementation? table, String? alias) => + _i5.Future<_i9.Result> softDeleteStock(int? productId) => (super.noSuchMethod( - Invocation.method(#alias, [table, alias]), - returnValue: _i7.dummyValue( - this, - Invocation.method(#alias, [table, alias]), + Invocation.method(#softDeleteStock, [productId]), + returnValue: _i5.Future<_i9.Result>.value( + _i7.dummyValue<_i9.Result>( + this, + Invocation.method(#softDeleteStock, [productId]), + ), ), ) - as T); - - @override - void markTablesUpdated(Iterable<_i3.TableInfo<_i3.Table, dynamic>>? tables) => - super.noSuchMethod( - Invocation.method(#markTablesUpdated, [tables]), - returnValueForMissingStub: null, - ); - - @override - void notifyUpdates(Set<_i3.TableUpdate>? updates) => super.noSuchMethod( - Invocation.method(#notifyUpdates, [updates]), - returnValueForMissingStub: null, - ); + as _i5.Future<_i9.Result>); @override - _i5.Stream> tableUpdates([ - _i3.TableUpdateQuery? query = const _i3.TableUpdateQuery.any(), - ]) => - (super.noSuchMethod( - Invocation.method(#tableUpdates, [query]), - returnValue: _i5.Stream>.empty(), - ) - as _i5.Stream>); - - @override - _i5.Future doWhenOpened( - _i5.FutureOr Function(_i3.QueryExecutor)? fn, - ) => - (super.noSuchMethod( - Invocation.method(#doWhenOpened, [fn]), - returnValue: - _i7.ifNotNull( - _i7.dummyValueOrNull( - this, - Invocation.method(#doWhenOpened, [fn]), - ), - (T v) => _i5.Future.value(v), - ) ?? - _FakeFuture_6(this, Invocation.method(#doWhenOpened, [fn])), - ) - as _i5.Future); - - @override - _i3.InsertStatement into( - _i3.TableInfo? table, - ) => - (super.noSuchMethod( - Invocation.method(#into, [table]), - returnValue: _FakeInsertStatement_7( - this, - Invocation.method(#into, [table]), - ), - ) - as _i3.InsertStatement); - - @override - _i3.UpdateStatement update( - _i3.TableInfo? table, - ) => - (super.noSuchMethod( - Invocation.method(#update, [table]), - returnValue: _FakeUpdateStatement_8( - this, - Invocation.method(#update, [table]), - ), - ) - as _i3.UpdateStatement); - - @override - _i3.SimpleSelectStatement select( - _i3.ResultSetImplementation? table, { - bool? distinct = false, - }) => - (super.noSuchMethod( - Invocation.method(#select, [table], {#distinct: distinct}), - returnValue: _FakeSimpleSelectStatement_9( - this, - Invocation.method(#select, [table], {#distinct: distinct}), - ), - ) - as _i3.SimpleSelectStatement); - - @override - _i3.JoinedSelectStatement selectOnly( - _i3.ResultSetImplementation? table, { - bool? distinct = false, - }) => - (super.noSuchMethod( - Invocation.method(#selectOnly, [table], {#distinct: distinct}), - returnValue: _FakeJoinedSelectStatement_10( - this, - Invocation.method(#selectOnly, [table], {#distinct: distinct}), - ), - ) - as _i3.JoinedSelectStatement); - - @override - _i3.BaseSelectStatement<_i3.TypedResult> selectExpressions( - Iterable<_i3.Expression>? columns, - ) => - (super.noSuchMethod( - Invocation.method(#selectExpressions, [columns]), - returnValue: _FakeBaseSelectStatement_11<_i3.TypedResult>( - this, - Invocation.method(#selectExpressions, [columns]), - ), - ) - as _i3.BaseSelectStatement<_i3.TypedResult>); - - @override - _i3.DeleteStatement delete( - _i3.TableInfo? table, - ) => - (super.noSuchMethod( - Invocation.method(#delete, [table]), - returnValue: _FakeDeleteStatement_12( - this, - Invocation.method(#delete, [table]), - ), - ) - as _i3.DeleteStatement); - - @override - _i5.Future customUpdate( - String? query, { - List<_i3.Variable>? variables = const [], - Set<_i3.ResultSetImplementation>? updates, - _i3.UpdateKind? updateKind, - }) => - (super.noSuchMethod( - Invocation.method( - #customUpdate, - [query], - { - #variables: variables, - #updates: updates, - #updateKind: updateKind, - }, - ), - returnValue: _i5.Future.value(0), - ) - as _i5.Future); - - @override - _i5.Future customInsert( - String? query, { - List<_i3.Variable>? variables = const [], - Set<_i3.ResultSetImplementation>? updates, - }) => - (super.noSuchMethod( - Invocation.method( - #customInsert, - [query], - {#variables: variables, #updates: updates}, - ), - returnValue: _i5.Future.value(0), - ) - as _i5.Future); - - @override - _i5.Future> customWriteReturning( - String? query, { - List<_i3.Variable>? variables = const [], - Set<_i3.ResultSetImplementation>? updates, - _i3.UpdateKind? updateKind, - }) => - (super.noSuchMethod( - Invocation.method( - #customWriteReturning, - [query], - { - #variables: variables, - #updates: updates, - #updateKind: updateKind, - }, - ), - returnValue: _i5.Future>.value(<_i3.QueryRow>[]), - ) - as _i5.Future>); - - @override - _i3.Selectable<_i3.QueryRow> customSelect( - String? query, { - List<_i3.Variable>? variables = const [], - Set<_i3.ResultSetImplementation>? readsFrom = const {}, - }) => - (super.noSuchMethod( - Invocation.method( - #customSelect, - [query], - {#variables: variables, #readsFrom: readsFrom}, - ), - returnValue: _FakeSelectable_13<_i3.QueryRow>( - this, - Invocation.method( - #customSelect, - [query], - {#variables: variables, #readsFrom: readsFrom}, - ), - ), - ) - as _i3.Selectable<_i3.QueryRow>); - - @override - _i3.Selectable<_i3.QueryRow> customSelectQuery( - String? query, { - List<_i3.Variable>? variables = const [], - Set<_i3.ResultSetImplementation>? readsFrom = const {}, - }) => - (super.noSuchMethod( - Invocation.method( - #customSelectQuery, - [query], - {#variables: variables, #readsFrom: readsFrom}, - ), - returnValue: _FakeSelectable_13<_i3.QueryRow>( - this, - Invocation.method( - #customSelectQuery, - [query], - {#variables: variables, #readsFrom: readsFrom}, - ), - ), - ) - as _i3.Selectable<_i3.QueryRow>); - - @override - _i5.Future customStatement(String? statement, [List? args]) => - (super.noSuchMethod( - Invocation.method(#customStatement, [statement, args]), - returnValue: _i5.Future.value(), - returnValueForMissingStub: _i5.Future.value(), - ) - as _i5.Future); - - @override - _i5.Future transaction( - _i5.Future Function()? action, { - bool? requireNew = false, - }) => - (super.noSuchMethod( - Invocation.method( - #transaction, - [action], - {#requireNew: requireNew}, - ), - returnValue: - _i7.ifNotNull( - _i7.dummyValueOrNull( - this, - Invocation.method( - #transaction, - [action], - {#requireNew: requireNew}, - ), - ), - (T v) => _i5.Future.value(v), - ) ?? - _FakeFuture_6( - this, - Invocation.method( - #transaction, - [action], - {#requireNew: requireNew}, - ), - ), - ) - as _i5.Future); - - @override - _i5.Future exclusively(_i5.Future Function()? action) => - (super.noSuchMethod( - Invocation.method(#exclusively, [action]), - returnValue: - _i7.ifNotNull( - _i7.dummyValueOrNull( - this, - Invocation.method(#exclusively, [action]), - ), - (T v) => _i5.Future.value(v), - ) ?? - _FakeFuture_6( - this, - Invocation.method(#exclusively, [action]), - ), - ) - as _i5.Future); - - @override - _i5.Future batch(_i5.FutureOr Function(_i3.Batch)? runInBatch) => - (super.noSuchMethod( - Invocation.method(#batch, [runInBatch]), - returnValue: _i5.Future.value(), - returnValueForMissingStub: _i5.Future.value(), - ) - as _i5.Future); - - @override - _i5.Future runWithInterceptor( - _i5.Future Function()? action, { - required _i3.QueryInterceptor? interceptor, - }) => - (super.noSuchMethod( - Invocation.method( - #runWithInterceptor, - [action], - {#interceptor: interceptor}, - ), - returnValue: - _i7.ifNotNull( - _i7.dummyValueOrNull( - this, - Invocation.method( - #runWithInterceptor, - [action], - {#interceptor: interceptor}, - ), - ), - (T v) => _i5.Future.value(v), - ) ?? - _FakeFuture_6( - this, - Invocation.method( - #runWithInterceptor, - [action], - {#interceptor: interceptor}, - ), - ), - ) - as _i5.Future); - - @override - _i3.GenerationContext $write( - _i3.Component? component, { - bool? hasMultipleTables, - int? startIndex, - }) => + _i5.Future<_i9.Result> restoreStock(int? productId) => (super.noSuchMethod( - Invocation.method( - #$write, - [component], - {#hasMultipleTables: hasMultipleTables, #startIndex: startIndex}, - ), - returnValue: _FakeGenerationContext_14( - this, - Invocation.method( - #$write, - [component], - { - #hasMultipleTables: hasMultipleTables, - #startIndex: startIndex, - }, - ), - ), - ) - as _i3.GenerationContext); - - @override - _i3.GenerationContext $writeInsertable( - _i3.TableInfo<_i3.Table, dynamic>? table, - _i3.Insertable? insertable, { - int? startIndex, - }) => - (super.noSuchMethod( - Invocation.method( - #$writeInsertable, - [table, insertable], - {#startIndex: startIndex}, - ), - returnValue: _FakeGenerationContext_14( - this, - Invocation.method( - #$writeInsertable, - [table, insertable], - {#startIndex: startIndex}, + Invocation.method(#restoreStock, [productId]), + returnValue: _i5.Future<_i9.Result>.value( + _i7.dummyValue<_i9.Result>( + this, + Invocation.method(#restoreStock, [productId]), ), ), ) - as _i3.GenerationContext); - - @override - String $expandVar(int? start, int? amount) => - (super.noSuchMethod( - Invocation.method(#$expandVar, [start, amount]), - returnValue: _i7.dummyValue( - this, - Invocation.method(#$expandVar, [start, amount]), - ), - ) - as String); - - @override - _i5.Future close() => - (super.noSuchMethod( - Invocation.method(#close, []), - returnValue: _i5.Future.value(), - returnValueForMissingStub: _i5.Future.value(), - ) - as _i5.Future); + as _i5.Future<_i9.Result>); } /// A class which mocks [ModifiersDao]. /// /// See the documentation for Mockito's code generation for more information. -class MockModifiersDao extends _i1.Mock implements _i9.ModifiersDao { +class MockModifiersDao extends _i1.Mock implements _i10.ModifiersDao { MockModifiersDao() { _i1.throwOnMissingStub(this); } diff --git a/features/settings/test/presentation/widgets/printer_section_test.dart b/features/settings/test/presentation/widgets/printer_section_test.dart index 38ae420..40924e7 100644 --- a/features/settings/test/presentation/widgets/printer_section_test.dart +++ b/features/settings/test/presentation/widgets/printer_section_test.dart @@ -10,7 +10,7 @@ import 'package:result/result.dart'; /// Minimal in-memory [SettingsRepository] fake — only what [SettingsCubit] /// needs to reach a `loaded` state and back reads/writes. class _FakeSettingsRepository implements SettingsRepository { - final Map _alues = {}; + final Map _values = {}; @override Stream> watchAllSettings() => const Stream.empty(); @@ -19,26 +19,32 @@ class _FakeSettingsRepository implements SettingsRepository { Stream watchSettingValue(String key) => const Stream.empty(); @override - Stream> watchSettingsByPrefix(String prefix) => const Stream.empty(); + Stream> watchSettingsByPrefix(String prefix) => + const Stream.empty(); @override - Future> getString(String key) async => Result.ok(_values[key]); + Future> getString(String key) async => + Result.ok(_values[key]); @override - Future> getInt(String key) async => Result.ok(int.tryParse(_values[key] ?? '')); + Future> getInt(String key) async => + Result.ok(int.tryParse(_values[key] ?? '')); @override - Future> getBool(String key) async => Result.ok(_values[key] == 'true'); + Future> getBool(String key) async => + Result.ok(_values[key] == 'true'); @override Future> getDouble(String key) async => Result.ok(double.tryParse(_values[key] ?? '')); @override - Future>> getPrinterSettings() async => const Result.ok([]); + Future>> getPrinterSettings() async => + const Result.ok([]); @override - Future>> getReceiptSettings() async => const Result.ok([]); + Future>> getReceiptSettings() async => + const Result.ok([]); @override Future> setString(String key, String value) async { @@ -120,7 +126,9 @@ void main() { expect(find.text('Test receipt sent to printer'), findsOneWidget); }); - testWidgets('surfaces an error snackbar when the printer fails', (tester) async { + testWidgets('surfaces an error snackbar when the printer fails', ( + tester, + ) async { printerService.failPrint = true; await pumpPrinterSection(tester); @@ -129,7 +137,10 @@ void main() { await tester.pumpAndSettle(); expect(printerService.printedJobs, isEmpty); - expect(find.text('Test print failed — check the printer connection'), findsOneWidget); + expect( + find.text('Test print failed — check the printer connection'), + findsOneWidget, + ); }); }); } diff --git a/packages/ui_kit/lib/src/widgets/app_shell/app_shell_sidebar.dart b/packages/ui_kit/lib/src/widgets/app_shell/app_shell_sidebar.dart index dc4f830..cadfce4 100644 --- a/packages/ui_kit/lib/src/widgets/app_shell/app_shell_sidebar.dart +++ b/packages/ui_kit/lib/src/widgets/app_shell/app_shell_sidebar.dart @@ -46,7 +46,10 @@ class AppShellSidebar extends StatelessWidget { if (showHeader) _buildHeader(context), Expanded( child: ListView.separated( - padding: EdgeInsets.symmetric(horizontal: isCollapsed ? 8 : 12, vertical: 8), + padding: EdgeInsets.symmetric( + horizontal: isCollapsed ? 8 : 12, + vertical: 8, + ), itemCount: items.length, separatorBuilder: (_, _) => const SizedBox(height: 2), itemBuilder: (context, index) { @@ -58,7 +61,9 @@ class AppShellSidebar extends StatelessWidget { isSelected: index == selectedIndex, isCollapsed: isCollapsed, isEnabled: item.isEnabled, - onTap: item.isEnabled ? () => onItemSelected?.call(index) : null, + onTap: item.isEnabled + ? () => onItemSelected?.call(index) + : null, ); }, ), @@ -72,7 +77,10 @@ class AppShellSidebar extends StatelessWidget { Widget _buildUserFooter(BuildContext context) { return Container( - padding: EdgeInsets.symmetric(horizontal: isCollapsed ? 8 : 12, vertical: 10), + padding: EdgeInsets.symmetric( + horizontal: isCollapsed ? 8 : 12, + vertical: 10, + ), decoration: const BoxDecoration( border: Border(top: BorderSide(color: Color(0xff1f1f1f), width: 1)), ), @@ -93,16 +101,27 @@ class AppShellSidebar extends StatelessWidget { ); } - Widget _buildHeader(BuildContext context, {bool showCollapseToggle = true}) { + Widget _buildHeader(BuildContext context) { return Padding( padding: EdgeInsets.fromLTRB(isCollapsed ? 0 : 20, 20, 0, 12), child: isCollapsed ? Center( - child: logo ?? const Icon(AgoraIcons.zap, color: AppPalette.primary500, size: 26), + child: + logo ?? + const Icon( + AgoraIcons.zap, + color: AppPalette.primary500, + size: 26, + ), ) : Row( children: [ - logo ?? Icon(AgoraIcons.zap, color: context.colors.primary, size: 26), + logo ?? + Icon( + AgoraIcons.zap, + color: context.colors.primary, + size: 26, + ), const SizedBox(width: 10), AppText.titleMd(appName, color: context.colors.background), ], @@ -112,7 +131,12 @@ class AppShellSidebar extends StatelessWidget { Widget _buildCollapseToggle(BuildContext context) { return Padding( - padding: EdgeInsets.fromLTRB(isCollapsed ? 8 : 12, 0, isCollapsed ? 8 : 12, 20), + padding: EdgeInsets.fromLTRB( + isCollapsed ? 8 : 12, + 0, + isCollapsed ? 8 : 12, + 20, + ), child: Align( alignment: isCollapsed ? Alignment.center : Alignment.centerRight, child: Tooltip( @@ -189,7 +213,10 @@ class _SidebarNavItem extends StatelessWidget { child: AnimatedContainer( duration: const Duration(milliseconds: 200), curve: Curves.easeInOut, - padding: EdgeInsets.symmetric(horizontal: isCollapsed ? 0 : 10, vertical: 11), + padding: EdgeInsets.symmetric( + horizontal: isCollapsed ? 0 : 10, + vertical: 11, + ), decoration: BoxDecoration( color: isSelected ? const Color(0xff1f1f1f) : Colors.transparent, borderRadius: BorderRadius.circular(6), @@ -205,7 +232,9 @@ class _SidebarNavItem extends StatelessWidget { height: 18, margin: const EdgeInsets.only(right: 10), decoration: BoxDecoration( - color: isSelected ? AppPalette.primary500 : Colors.transparent, + color: isSelected + ? AppPalette.primary500 + : Colors.transparent, borderRadius: BorderRadius.circular(2), ), ), @@ -214,10 +243,13 @@ class _SidebarNavItem extends StatelessWidget { Expanded( child: Text( label, - style: Theme.of(context).textTheme.bodyMedium?.copyWith( - fontWeight: isSelected ? FontWeight.w600 : FontWeight.w500, - color: iconColor, - ), + style: Theme.of(context).textTheme.bodyMedium + ?.copyWith( + fontWeight: isSelected + ? FontWeight.w600 + : FontWeight.w500, + color: iconColor, + ), overflow: TextOverflow.ellipsis, ), ),