import 'package:drift/native.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:kooltab2/database/app_database.dart'; import 'package:kooltab2/models/product.dart'; import 'package:kooltab2/services/bar_tab_service.dart'; import 'package:kooltab2/services/pin_lock_service.dart'; import 'package:kooltab2/services/product_service.dart'; import 'package:kooltab2/services/settings_service.dart'; import 'package:kooltab2/viewmodels/dev_menu_view_model.dart'; import 'package:mocktail/mocktail.dart'; class MockBarTabService extends Mock implements BarTabService {} class MockPinLockService extends Mock implements PinLockService {} class MockProductService extends Mock implements ProductService {} class MockSettingsService extends Mock implements SettingsService {} void main() { late AppDatabase database; late MockProductService productService; late DevMenuViewModel viewModel; setUp(() { database = AppDatabase(NativeDatabase.memory()); productService = MockProductService(); when(() => productService.getProducts()).thenAnswer( (_) async => const [ Product( id: 'product-1', name: 'Cola', category: 'Drinks', stockQuantity: 100, lowStockThreshold: 10, priceInCents: 250, ), Product( id: 'product-2', name: 'Chips', category: 'Snacks', stockQuantity: 100, lowStockThreshold: 10, priceInCents: 150, ), ], ); viewModel = DevMenuViewModel( database: database, productService: productService, barTabService: MockBarTabService(), settingsService: MockSettingsService(), pinLockService: MockPinLockService(), ); }); tearDown(() async { await database.close(); }); test('generates individual timestamped mock history items', () async { await viewModel.generateMockOrders(count: 12); final tabs = await database.select(database.closedTabs).get(); final items = await database.select(database.closedTabItems).get(); expect(tabs, hasLength(12)); expect(items, isNotEmpty); expect(items.every((item) => item.quantity == 1), isTrue); expect(items.every((item) => item.purchasedAt != null), isTrue); expect( viewModel.lastAction, startsWith('Generated 12 mock orders across '), ); }); }