use std::path::Path;
use assert_matches::assert_matches;
use crate::{test, ObjectType, Versioned as _};
use super::{cdr_version_and_report, tariff_version_with_report, Report, Version};
#[test_each::file(
glob = "ocpi-tariffs/test_data/v221/real_world/*/cdr*.json",
name(segments = 2)
)]
fn should_guess_version_v221(cdr_json: &str, path: &Path) {
test::setup();
{
let Report {
version,
unexpected_fields,
} = cdr_version_and_report(cdr_json).unwrap();
let tariff = assert_matches!(version, Version::Certain ( tariff ) => tariff );
assert_matches!(tariff.version(), crate::Version::V221);
test::assert_no_unexpected_fields(ObjectType::Cdr, &unexpected_fields);
}
{
let tariff = std::fs::read_to_string(path.parent().unwrap().join("tariff.json")).ok();
if let Some(tariff) = tariff {
let Report {
version: guess,
unexpected_fields,
} = tariff_version_with_report(&tariff).unwrap();
let tariff = assert_matches!(guess, Version::Certain ( tariff ) => tariff);
assert_matches!(tariff.version(), crate::Version::V221);
test::assert_no_unexpected_fields(ObjectType::Tariff, &unexpected_fields);
}
}
}
#[test_each::file(
glob = "ocpi-tariffs/test_data/v211/lint/*/cdr*.json",
name(segments = 2)
)]
fn should_guess_version_v211(cdr_json: &str, path: &Path) {
test::setup();
{
let Report {
version: guess,
unexpected_fields,
} = cdr_version_and_report(cdr_json).unwrap();
let cdr = assert_matches!(guess, Version::Certain ( cdr ) => cdr);
assert_matches!(cdr.version(), crate::Version::V211);
test::assert_no_unexpected_fields(ObjectType::Cdr, &unexpected_fields);
}
{
let tariff_json = std::fs::read_to_string(path.parent().unwrap().join("tariff.json")).ok();
if let Some(tariff) = tariff_json {
let Report {
version: guess,
unexpected_fields,
} = tariff_version_with_report(&tariff).unwrap();
let tariff = assert_matches!(guess, Version::Certain ( tariff ) => tariff);
assert_matches!(tariff.version(), crate::Version::V211);
test::assert_no_unexpected_fields(ObjectType::Tariff, &unexpected_fields);
}
}
}