Files
modrinth/packages/aditude/tests/metrics.rs
T
2026-08-17 07:28:50 +00:00

118 lines
3.2 KiB
Rust

#![expect(missing_docs, reason = "test crate")]
use aditude::{Client, mock::AditudeMock, v1, v2};
use chrono::{DateTime, Utc};
use rust_decimal::dec;
#[tokio::test]
async fn mock_metrics() {
let metrics_v1_response = vec![v1::MetricsResponse {
points_list: vec![v1::Point {
metric: v1::Metric {
revenue: Some(dec!(1.23)),
impressions: Some(456),
cpm: Some(dec!(7.89)),
},
time: v1::Time {
seconds: 123,
nanos: 0,
},
}],
}];
let epoch = DateTime::UNIX_EPOCH;
let metrics_v2_response = v2::Metrics {
responses: vec![
v2::Response {
rows: vec![v2::Row {
impressions: Some(123),
revenue: None,
time: epoch,
}],
},
v2::Response {
rows: vec![v2::Row {
impressions: None,
revenue: Some(dec!(45.6)),
time: epoch,
}],
},
],
};
let aditude = Client::from_mock(AditudeMock {
metrics_v1_response: Some(metrics_v1_response.clone()),
metrics_v2_response: Some(metrics_v2_response.clone()),
});
assert_eq!(
metrics_v1_response,
aditude
.get_metrics_v1(v1::GetMetrics {
metrics: &[],
range: v1::Range::Yesterday,
interval: v1::Interval::OneDay,
})
.await
.unwrap()
);
assert_eq!(
metrics_v2_response,
aditude
.get_metrics_v2(v2::GetMetrics {
metrics: &[],
range: v2::Range::Yesterday,
interval: v2::Interval::OneDay,
})
.await
.unwrap()
);
}
#[tokio::test]
async fn test_yesterday() {
_ = dotenvy::dotenv();
let (Ok(url), Ok(key)) = (
dotenvy::var("ADITUDE_API_URL"),
dotenvy::var("ADITUDE_API_KEY"),
) else {
return;
};
if url.trim().is_empty()
|| key.trim().is_empty()
|| url == "none"
|| key == "none"
{
return;
}
let aditude = Client::new(url, key);
let real_yesterday = aditude
.get_metrics_v2(v2::GetMetrics {
metrics: &[v2::MetricKind::Impressions, v2::MetricKind::Revenue],
range: v2::Range::Yesterday,
interval: v2::Interval::OneDay,
})
.await
.unwrap();
// Aditude defines the time range "Yesterday" according to this logic, I think.
// We need to make sure it stays defined like this.
let now = Utc::now();
let (start_of_yesterday, end_of_yesterday) = aditude::yesterday(now);
let our_yesterday = aditude
.get_metrics_v2(v2::GetMetrics {
metrics: &[v2::MetricKind::Impressions, v2::MetricKind::Revenue],
range: v2::Range::Custom {
start: start_of_yesterday,
end: end_of_yesterday,
},
interval: v2::Interval::OneDay,
})
.await
.unwrap();
assert_eq!(real_yesterday, our_yesterday);
}