import 'package:flutter_test/flutter_test.dart'; import 'package:tm_app/data/services/model/home/home_response/home_response_model.dart'; void main() { group('HomeResponseModel Tests', () { final mockJson = { 'partnership': 'Yes', 'selfApply': 'No', 'contracting': 'In Progress', 'tender_submitted': '3', 'approved_tenders': '2', 'tender_value': '150000', 'thunder_status': 'active', 'your_tenders': [ { 'success': true, 'message': 'Tender retrieved', 'profile_match': 0.95, 'data': { 'id': 'tnd_001', 'title': 'Bridge Construction Project', 'country_code': 'US', }, 'error': null, }, ], }; test('fromJson creates valid HomeResponseModel instance', () { final response = HomeResponseModel.fromJson(mockJson); expect(response.partnership, 'Yes'); expect(response.selfApply, 'No'); expect(response.contracting, 'In Progress'); expect(response.tenderSubmitted, '3'); expect(response.approvedTenders, '2'); expect(response.tenderValue, '150000'); expect(response.thunderStatus, 'active'); final tender = response.yourTenders?.first; expect(tender?.success, isTrue); expect(tender?.message, 'Tender retrieved'); expect(tender?.profileMatch, 0.95); expect(tender?.data?.id, 'tnd_001'); expect(tender?.data?.title, 'Bridge Construction Project'); }); test('toJson converts model back to JSON correctly', () { final response = HomeResponseModel.fromJson(mockJson); final json = response.toJson(); expect(json['partnership'], 'Yes'); expect(json['selfApply'], 'No'); expect(json['tender_submitted'], '3'); final tenders = response.yourTenders ?? []; expect(tenders.length, 1); final tender = tenders.first; final tenderJson = tender.toJson(); expect(tenderJson['success'], true); expect(tenderJson['message'], 'Tender retrieved'); final tenderData = (tenderJson['data'] is Map) ? tenderJson['data'] as Map : tender.data?.toJson(); expect(tenderData?['id'], 'tnd_001'); expect(tenderData?['title'], 'Bridge Construction Project'); }); test('copyWith correctly updates fields', () { final response = HomeResponseModel.fromJson(mockJson); final updated = response.copyWith( partnership: 'No', tenderValue: '999999', ); expect(updated.partnership, 'No'); expect(updated.tenderValue, '999999'); expect(updated.selfApply, equals('No')); }); test('equality operator works correctly', () { final res1 = HomeResponseModel.fromJson(mockJson); final res2 = HomeResponseModel.fromJson(mockJson); final res3 = res1.copyWith(partnership: 'Different'); expect(res1, equals(res2)); expect(res1.hashCode, equals(res2.hashCode)); expect(res1, isNot(equals(res3))); }); }); }