63 lines
1.7 KiB
Dart
63 lines
1.7 KiB
Dart
import 'package:flutter_test/flutter_test.dart';
|
|
import 'package:cashumit/models/receipt_group.dart';
|
|
import 'package:cashumit/models/receipt_item.dart';
|
|
import 'package:cashumit/models/submission_task.dart';
|
|
|
|
void main() {
|
|
ReceiptGroup buildGroup(String id, double price) {
|
|
return ReceiptGroup(
|
|
id: id,
|
|
sourceAccountId: 'source_$id',
|
|
sourceAccountName: 'Sumber $id',
|
|
items: [
|
|
ReceiptItem(description: 'Item $id', quantity: 1, price: price),
|
|
],
|
|
);
|
|
}
|
|
|
|
test('amount menjumlahkan semua grup dan tip', () {
|
|
final task = SubmissionTask(
|
|
taskId: 't1',
|
|
groups: [buildGroup('a', 10000), buildGroup('b', 25000)],
|
|
tipAmount: 5000,
|
|
tipSourceAccountId: 'tip_source',
|
|
destinationAccountId: 'dest',
|
|
destinationAccountName: 'Tujuan',
|
|
transactionDate: DateTime(2026, 1, 1),
|
|
);
|
|
|
|
expect(task.itemsTotal, 35000);
|
|
expect(task.amount, 40000);
|
|
expect(task.splitCount, 3);
|
|
expect(task.hasTip, isTrue);
|
|
});
|
|
|
|
test('tanpa tip hanya menghitung item', () {
|
|
final task = SubmissionTask(
|
|
taskId: 't2',
|
|
groups: [buildGroup('a', 10000)],
|
|
destinationAccountId: 'dest',
|
|
destinationAccountName: 'Tujuan',
|
|
transactionDate: DateTime(2026, 1, 1),
|
|
);
|
|
|
|
expect(task.amount, 10000);
|
|
expect(task.splitCount, 1);
|
|
expect(task.hasTip, isFalse);
|
|
expect(task.label, 'Struk');
|
|
});
|
|
|
|
test('label memakai nama customer bila ada', () {
|
|
final task = SubmissionTask(
|
|
taskId: 't3',
|
|
groups: [buildGroup('a', 10000)],
|
|
destinationAccountId: 'dest',
|
|
destinationAccountName: 'Tujuan',
|
|
transactionDate: DateTime(2026, 1, 1),
|
|
customerName: 'NISFIA',
|
|
);
|
|
|
|
expect(task.label, 'NISFIA');
|
|
});
|
|
}
|