diff --git a/lib/models/scan_record.dart b/lib/models/scan_record.dart new file mode 100644 index 0000000..39cfe09 --- /dev/null +++ b/lib/models/scan_record.dart @@ -0,0 +1,21 @@ +enum SendStatus { pending, success, failed } + +class ScanRecord { + final String barcode; + final String codeType; + final DateTime timestamp; + SendStatus status; + + ScanRecord({ + required this.barcode, + required this.codeType, + required this.timestamp, + this.status = SendStatus.pending, + }); + + Map toJson() => { + 'barcode': barcode, + 'code_type': codeType, + 'timestamp': timestamp.toUtc().toIso8601String(), + }; +} diff --git a/test/models/scan_record_test.dart b/test/models/scan_record_test.dart new file mode 100644 index 0000000..270017d --- /dev/null +++ b/test/models/scan_record_test.dart @@ -0,0 +1,29 @@ +import 'package:flutter_test/flutter_test.dart'; +import 'package:pad_scanner/models/scan_record.dart'; + +void main() { + group('ScanRecord', () { + test('creates with correct defaults', () { + final record = ScanRecord( + barcode: '1234567890', + codeType: 'CODE128', + timestamp: DateTime.parse('2026-05-07T10:30:00Z'), + ); + expect(record.barcode, '1234567890'); + expect(record.codeType, 'CODE128'); + expect(record.status, SendStatus.pending); + }); + + test('toJson produces correct map', () { + final record = ScanRecord( + barcode: 'ABC123', + codeType: 'QR', + timestamp: DateTime.parse('2026-05-07T10:30:00Z'), + ); + final json = record.toJson(); + expect(json['barcode'], 'ABC123'); + expect(json['code_type'], 'QR'); + expect(json['timestamp'], '2026-05-07T10:30:00.000Z'); + }); + }); +}