import 'package:flutter_test/flutter_test.dart'; import 'package:patbond_flutter/core/network/api_exception.dart'; import 'package:patbond_flutter/features/pets/pet_display.dart'; import 'package:patbond_flutter/features/pets/pet_models.dart'; import '../../helpers/pet_test_helpers.dart'; void main() { test('petAgeLabel:岁 / 月 / 未满月 / 未知边界', () { final now = DateTime(2026, 9, 8); expect(petAgeLabel(DateTime(2024, 3, 15), now: now), '2 岁'); expect(petAgeLabel(DateTime(2025, 9, 9), now: now), '11 个月'); expect(petAgeLabel(DateTime(2026, 3, 1), now: now), '6 个月'); expect(petAgeLabel(DateTime(2026, 9, 1), now: now), '未满月'); expect(petAgeLabel(null, now: now), '年龄未知'); expect(petAgeLabel(DateTime(2027), now: now), '年龄未知'); }); test('petMetaLine:品种 · 性别 · 年龄;自定义品种回退', () { final now = DateTime(2026, 9, 8); expect(petMetaLine(buildPet('p-1'), now: now), '柴犬 · 男孩 · 2 岁'); final custom = buildPet( 'p-2', overrides: { 'breedId': null, 'breedDisplayName': null, 'customBreedName': '狸花', 'sex': 'unknown', 'birthDate': null, }, ); expect(petMetaLine(custom, now: now), '狸花 · 性别未知 · 年龄未知'); }); test('petLoadErrorMessage:网络 / 限流 / 其他三档文案', () { expect( petLoadErrorMessage(const ApiNetworkException('x')), '网络异常,请检查网络后重试', ); expect(petLoadErrorMessage(const ApiRateLimitException()), '请求过于频繁,请稍后再试'); expect( petLoadErrorMessage( const ApiBusinessException(code: 40000, message: 'x'), ), '加载失败,请稍后重试', ); expect(petLoadErrorMessage(null), '加载失败,请稍后重试'); }); test('物种 / 性别 / 状态标签', () { expect(petSpeciesLabel(PetSpecies.dog), '狗狗'); expect(petSpeciesLabel(PetSpecies.cat), '猫咪'); expect(petSexLabel(PetSex.female), '女孩'); expect(petStatusLabel(PetStatus.archived), '已归档'); expect(petStatusLabel(PetStatus.lost), '走失中'); }); }