115 lines
3.3 KiB
Dart
115 lines
3.3 KiB
Dart
import 'package:flutter_test/flutter_test.dart';
|
|
import 'package:yumi/shared/business_logic/models/res/sc_user_badge_res.dart';
|
|
|
|
void main() {
|
|
group('SCUserBadgeRes honor wall badges', () {
|
|
test('uses short badges only and sorts newest first', () {
|
|
final result = SCUserBadgeRes.fromJson({
|
|
'longBadges': [
|
|
{
|
|
'id': 'vip',
|
|
'type': 'LONG',
|
|
'sourceType': 'VIP',
|
|
'selectUrl': 'https://example.com/vip.png',
|
|
'updateTime': 3000,
|
|
},
|
|
],
|
|
'shortBadges': [
|
|
{
|
|
'id': 'old',
|
|
'type': 'SHORT',
|
|
'sourceType': 'ACTIVITY',
|
|
'selectUrl': 'https://example.com/old.png',
|
|
'updateTime': 1000,
|
|
},
|
|
{
|
|
'id': 'new',
|
|
'type': 'SHORT',
|
|
'sourceType': 'ACHIEVEMENT',
|
|
'selectUrl': 'https://example.com/new.png',
|
|
'updateTime': 2000,
|
|
},
|
|
],
|
|
});
|
|
|
|
expect(result.allBadges.map((badge) => badge.id), ['vip', 'old', 'new']);
|
|
expect(result.longDisplayBadges.map((badge) => badge.id), ['vip']);
|
|
expect(result.displayBadges.map((badge) => badge.id), ['old', 'new']);
|
|
expect(result.honorWallBadges.map((badge) => badge.id), ['new', 'old']);
|
|
});
|
|
|
|
test('filters long and vip badges from legacy mixed badges', () {
|
|
final result = SCUserBadgeRes.fromJson({
|
|
'badges': [
|
|
{
|
|
'id': 'long',
|
|
'type': 'LONG',
|
|
'selectUrl': 'https://example.com/long.png',
|
|
'updateTime': 3000,
|
|
},
|
|
{
|
|
'id': 'vip',
|
|
'type': 'VIP',
|
|
'sourceType': 'VIP',
|
|
'selectUrl': 'https://example.com/vip.png',
|
|
'updateTime': 2500,
|
|
},
|
|
{
|
|
'id': 'activity',
|
|
'type': 'ACTIVITY',
|
|
'sourceType': 'ACTIVITY',
|
|
'selectUrl': 'https://example.com/activity.png',
|
|
'updateTime': 1000,
|
|
},
|
|
{
|
|
'id': 'achievement',
|
|
'type': 'ACHIEVEMENT',
|
|
'sourceType': 'ACHIEVEMENT',
|
|
'selectUrl': 'https://example.com/achievement.png',
|
|
'updateTime': 2000,
|
|
},
|
|
],
|
|
});
|
|
|
|
expect(result.longDisplayBadges.map((badge) => badge.id), [
|
|
'long',
|
|
'vip',
|
|
]);
|
|
expect(result.displayBadges.map((badge) => badge.id), [
|
|
'activity',
|
|
'achievement',
|
|
]);
|
|
expect(result.honorWallBadges.map((badge) => badge.id), [
|
|
'achievement',
|
|
'activity',
|
|
]);
|
|
});
|
|
|
|
test('does not expose long badges as short display badges', () {
|
|
final result = SCUserBadgeRes.fromJson({
|
|
'longBadges': [
|
|
{
|
|
'id': 'long-one',
|
|
'type': 'LONG',
|
|
'selectUrl': 'https://example.com/long-one.png',
|
|
},
|
|
{
|
|
'id': 'vip-one',
|
|
'sourceType': 'VIP',
|
|
'selectUrl': 'https://example.com/vip-one.png',
|
|
},
|
|
],
|
|
'shortBadges': [],
|
|
});
|
|
|
|
expect(result.longDisplayBadges.map((badge) => badge.id), [
|
|
'long-one',
|
|
'vip-one',
|
|
]);
|
|
expect(result.shortDisplayBadges, isEmpty);
|
|
expect(result.displayBadges, isEmpty);
|
|
expect(result.honorWallBadges, isEmpty);
|
|
});
|
|
});
|
|
}
|