use crate::{cdr, json, test, Version, Versioned as _};
#[test]
fn should_parse_v221_cdr_as_v211_with_warnings() {
const JSON: &str = include_str!("../../test_data/v221/every_field_set/cdr.json");
test::setup();
let (cdr, warnings) =
cdr::from_json(json::parse_object(JSON).unwrap(), Version::V211).into_parts();
assert_eq!(
cdr.version(),
Version::V211,
"The v221 CDR was forced to be parsed as v211"
);
test::assert_schema_warnings(
&warnings,
&[
("$.cdr_token", &["unexpected_field"]),
("$.cdr_location", &["unexpected_field"]),
("$.end_date_time", &["unexpected_field"]),
(
"$",
&[
"missing_field(auth_id)",
"missing_field(location)",
"missing_field(stop_date_time)",
],
),
("$.total_cost", &["invalid_type(object)"]),
("$.country_code", &["unexpected_field"]),
("$.party_id", &["unexpected_field"]),
("$.session_id", &["unexpected_field"]),
("$.total_energy_cost", &["unexpected_field"]),
("$.total_time_cost", &["unexpected_field"]),
("$.charging_periods[0].tariff_id", &["unexpected_field"]),
("$.charging_periods[1].tariff_id", &["unexpected_field"]),
("$.tariffs[0].country_code", &["unexpected_field"]),
("$.tariffs[0].party_id", &["unexpected_field"]),
("$.tariffs[0].type", &["unexpected_field"]),
("$.tariffs[0].end_date_time", &["unexpected_field"]),
("$.tariffs[0].max_price", &["unexpected_field"]),
("$.tariffs[0].min_price", &["unexpected_field"]),
(
"$.tariffs[0].elements[0].price_components[0].vat",
&["unexpected_field"],
),
(
"$.tariffs[0].elements[1].price_components[0].vat",
&["unexpected_field"],
),
(
"$.tariffs[0].elements[2].price_components[0].vat",
&["unexpected_field"],
),
(
"$.tariffs[0].elements[0].restrictions.max_current",
&["unexpected_field"],
),
(
"$.tariffs[0].elements[0].restrictions.min_current",
&["unexpected_field"],
),
(
"$.tariffs[0].elements[0].restrictions.reservation",
&["unexpected_field"],
),
(
"$.tariffs[0].energy_mix.environ_impact[0].category",
&["unexpected_field"],
),
(
"$.tariffs[0].energy_mix.environ_impact[1].category",
&["unexpected_field"],
),
(
"$.tariffs[0].energy_mix.environ_impact[0]",
&["missing_field(source)"],
),
(
"$.tariffs[0].energy_mix.environ_impact[1]",
&["missing_field(source)"],
),
],
);
}