97 lines
3.0 KiB
Dart
97 lines
3.0 KiB
Dart
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<String, dynamic>
|
|
: 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)));
|
|
});
|
|
});
|
|
}
|