import 'package:flutter_test/flutter_test.dart'; import 'package:lanebow/models/participant_model.dart'; void main() { group('Participant.fromJson', () { test('maps flat fields including isPaid true via paymentStatus', () { final json = { 'id': 1, 'eventId': 10, 'memberId': 55, 'name': '홍길동', 'email': 'hong@example.com', 'phoneNumber': '010-1234-5678', 'status': 'confirmed', 'paymentStatus': 'paid', 'paidAmount': '15000', 'notes': '', }; final p = Participant.fromJson(json); expect(p.id, '1'); expect(p.eventId, '10'); expect(p.memberId, '55'); expect(p.name, '홍길동'); expect(p.email, 'hong@example.com'); expect(p.phoneNumber, '010-1234-5678'); expect(p.status, 'confirmed'); expect(p.isPaid, isTrue); expect(p.paidAmount, 15000); expect(p.notes, ''); }); test('maps nested Member fields and unpaid status', () { final json = { 'id': '2', 'eventId': '11', 'memberId': '99', 'status': 'registered', 'paymentStatus': 'unpaid', 'Member': { 'name': '이순신', 'email': 'lee@example.com', 'phone': '010-0000-0000', }, }; final p = Participant.fromJson(json); expect(p.name, '이순신'); expect(p.email, 'lee@example.com'); expect(p.phoneNumber, '010-0000-0000'); expect(p.isPaid, isFalse); }); test('keeps nulls when empty strings provided for optional fields', () { final json = { 'id': '3', 'eventId': '12', 'memberId': '100', 'name': null, 'email': null, 'phone': null, 'status': null, }; final p = Participant.fromJson(json); expect(p.name, isNull); expect(p.email, isNull); expect(p.phoneNumber, isNull); expect(p.status, isNull); }); }); }