import 'package:flutter_test/flutter_test.dart'; import 'package:uto_manager/domain/entities/authorized_rank.dart'; void main() { group('AuthorizedRank', () { group('payGrade', () { test('returns correct pay grade string for enlisted', () { expect(AuthorizedRank.e1.payGrade, equals('E-1')); expect(AuthorizedRank.e4.payGrade, equals('E-4')); expect(AuthorizedRank.e9.payGrade, equals('E-9')); }); test('returns correct pay grade string for warrant officers', () { expect(AuthorizedRank.w1.payGrade, equals('W-1')); expect(AuthorizedRank.w5.payGrade, equals('W-5')); }); test('returns correct pay grade string for commissioned officers', () { expect(AuthorizedRank.o1.payGrade, equals('O-1')); expect(AuthorizedRank.o6.payGrade, equals('O-6')); expect(AuthorizedRank.o10.payGrade, equals('O-10')); }); }); group('category flags', () { test('enlisted ranks are correctly identified', () { expect(AuthorizedRank.e1.isEnlisted, isTrue); expect(AuthorizedRank.e9.isEnlisted, isTrue); expect(AuthorizedRank.w1.isEnlisted, isFalse); expect(AuthorizedRank.o1.isEnlisted, isFalse); }); test('warrant officer ranks are correctly identified', () { expect(AuthorizedRank.w1.isWarrantOfficer, isTrue); expect(AuthorizedRank.w5.isWarrantOfficer, isTrue); expect(AuthorizedRank.e1.isWarrantOfficer, isFalse); expect(AuthorizedRank.o1.isWarrantOfficer, isFalse); }); test('commissioned officer ranks are correctly identified', () { expect(AuthorizedRank.o1.isCommissionedOfficer, isTrue); expect(AuthorizedRank.o10.isCommissionedOfficer, isTrue); expect(AuthorizedRank.e1.isCommissionedOfficer, isFalse); expect(AuthorizedRank.w1.isCommissionedOfficer, isFalse); }); }); group('gradeLevel', () { test('returns correct numeric grade level', () { expect(AuthorizedRank.e1.gradeLevel, equals(1)); expect(AuthorizedRank.e4.gradeLevel, equals(4)); expect(AuthorizedRank.e9.gradeLevel, equals(9)); expect(AuthorizedRank.w1.gradeLevel, equals(1)); expect(AuthorizedRank.w5.gradeLevel, equals(5)); expect(AuthorizedRank.o1.gradeLevel, equals(1)); expect(AuthorizedRank.o10.gradeLevel, equals(10)); }); }); group('meetsMinimum', () { test('E-6 meets minimum of E-5', () { expect(AuthorizedRank.e6.meetsMinimum(AuthorizedRank.e5), isTrue); }); test('E-6 meets minimum of E-6 (exact match)', () { expect(AuthorizedRank.e6.meetsMinimum(AuthorizedRank.e6), isTrue); }); test('E-4 does NOT meet minimum of E-5', () { expect(AuthorizedRank.e4.meetsMinimum(AuthorizedRank.e5), isFalse); }); test('W-3 meets minimum of W-2', () { expect(AuthorizedRank.w3.meetsMinimum(AuthorizedRank.w2), isTrue); }); test('O-3 meets minimum of O-2', () { expect(AuthorizedRank.o3.meetsMinimum(AuthorizedRank.o2), isTrue); }); test('enlisted does NOT meet minimum of officer (cross-category)', () { expect(AuthorizedRank.e9.meetsMinimum(AuthorizedRank.o1), isFalse); }); test('officer does NOT meet minimum of enlisted (cross-category)', () { expect(AuthorizedRank.o1.meetsMinimum(AuthorizedRank.e1), isFalse); }); test('warrant does NOT meet minimum of enlisted (cross-category)', () { expect(AuthorizedRank.w1.meetsMinimum(AuthorizedRank.e1), isFalse); }); }); group('rankTitle', () { test('returns correct title for common ranks', () { expect(AuthorizedRank.e1.rankTitle, equals('Private')); expect(AuthorizedRank.e5.rankTitle, equals('Sergeant')); expect(AuthorizedRank.e6.rankTitle, equals('Staff Sergeant')); expect(AuthorizedRank.e7.rankTitle, equals('Sergeant First Class')); expect(AuthorizedRank.o2.rankTitle, equals('First Lieutenant')); expect(AuthorizedRank.o3.rankTitle, equals('Captain')); expect(AuthorizedRank.w1.rankTitle, equals('Warrant Officer 1')); }); }); }); }