feat: add more detailed history and group per day
This commit is contained in:
@@ -0,0 +1,78 @@
|
||||
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 '),
|
||||
);
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user