use super::feed::Feed;
pub(crate) fn sample() -> Feed {
serde_json::from_str(include_str!("../../tests/fixtures/scores-sample.json")).expect("sample")
}
pub(crate) fn seed() -> Feed {
let feed = sample();
seed_feed(&feed);
feed
}
pub(crate) fn seed_feed(feed: &Feed) {
write_scores(feed);
let prices = crate::cost::price_feed::Feed {
built_at: feed.built_at.clone(),
age_seconds: Some(0),
stale: Some(false),
count: None,
models: feed
.models
.iter()
.map(|model| crate::cost::price_feed::FeedModel {
id: model.id.clone(),
aliases: vec![],
input_per_mtok: 1.0,
output_per_mtok: 1.0,
cached_input_per_mtok: None,
context_length: None,
source: None,
})
.collect(),
};
crate::cost::set_feed_for_tests(prices);
}
pub(crate) fn live() -> Feed {
serde_json::from_str(include_str!("../../tests/fixtures/leaderboard/scores-trimmed-20261009.json"))
.expect("live scores")
}
pub(crate) fn live_prices() -> crate::cost::price_feed::Feed {
serde_json::from_str(include_str!("../../tests/fixtures/leaderboard/prices-trimmed-20261009.json"))
.expect("live prices")
}
pub(crate) fn seed_live() -> Feed {
let feed = live();
write_scores(&feed);
crate::cost::set_feed_for_tests(live_prices());
feed
}
fn write_scores(feed: &Feed) {
crate::paths::ensure_dirs().expect("dirs");
std::fs::write(
crate::paths::aid_dir().join("scores.json"),
serde_json::to_vec(feed).expect("scores JSON"),
)
.expect("scores");
crate::cost::clear_feed_for_tests();
}