HOT ARCHIVE 정렬 기준
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
import 'package:fancake/features/home/home_repository_firestore.dart'
|
||||
show HotArchiveRule, hotArchiveOrder;
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
|
||||
/// HOT ARCHIVE — Figma `2097:16415` 「목표 달성 임박 > 실시간 기여 급증 > 신규 등록, 최대 5개」.
|
||||
void main() {
|
||||
final t0 = DateTime(2026, 10, 1);
|
||||
({String id, double percent, int recentPop, DateTime createdAt}) c(
|
||||
String id,
|
||||
double percent,
|
||||
int recent,
|
||||
int day,
|
||||
) => (
|
||||
id: id,
|
||||
percent: percent,
|
||||
recentPop: recent,
|
||||
createdAt: t0.add(Duration(days: day)),
|
||||
);
|
||||
|
||||
test('임박 → 급증 → 신규 순이고 5건까지만', () {
|
||||
final order = hotArchiveOrder([
|
||||
c('old', 10, 0, 0),
|
||||
c('new', 10, 0, 5),
|
||||
c('surge-small', 20, 100, 1),
|
||||
c('surge-big', 30, 900, 0),
|
||||
c('imminent-90', 90, 0, 0),
|
||||
c('imminent-99', 99, 0, 0),
|
||||
c('rich-but-slow', 70, 0, 6),
|
||||
], const HotArchiveRule());
|
||||
expect(order, [
|
||||
'imminent-99',
|
||||
'imminent-90',
|
||||
'surge-big',
|
||||
'surge-small',
|
||||
'rich-but-slow',
|
||||
]);
|
||||
});
|
||||
|
||||
test('기준값은 운영값(config/policy.hotArchive)을 따르고 없으면 임시값', () {
|
||||
expect(HotArchiveRule.from(null).imminentPercent, 80);
|
||||
expect(HotArchiveRule.from(null).surgeWindow, const Duration(minutes: 60));
|
||||
final rule = HotArchiveRule.from({
|
||||
'hotArchive': {'imminentPercent': 95, 'surgeWindowMinutes': 30},
|
||||
});
|
||||
expect(rule.imminentPercent, 95);
|
||||
expect(rule.surgeWindow, const Duration(minutes: 30));
|
||||
expect(
|
||||
hotArchiveOrder([c('a', 90, 0, 0), c('b', 10, 5, 0)], rule),
|
||||
['b', 'a'],
|
||||
);
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user