use super::*;
use std::collections::{HashMap, HashSet};
fn resolver_with_document_hop_alias() -> FieldResolver {
let mut fields = HashMap::new();
fields.insert(
"metadata.open_graph.title".to_string(),
"metadata.document.open_graph[title]".to_string(),
);
let mut json_bridged_field_names = HashSet::new();
json_bridged_field_names.insert("open_graph".to_string());
let swift_first_class_map = SwiftFirstClassMap {
json_bridged_field_names,
..SwiftFirstClassMap::default()
};
FieldResolver::new_with_swift_first_class(
&fields,
&HashSet::new(),
&HashSet::new(),
&HashSet::new(),
&HashSet::new(),
&HashMap::new(),
swift_first_class_map,
)
}
#[test]
fn traversal_prefix_keeps_the_document_hop_and_the_map_key_subscript() {
let resolver = resolver_with_document_hop_alias();
let prefix = resolver.swift_json_bridged_traversal_prefix("metadata.open_graph.title");
assert_eq!(
prefix.as_deref(),
Some("metadata.document.open_graph"),
"must resolve the alias first and report the real struct prefix through `document`, not \
an incidental match on the unresolved alias label"
);
}
#[test]
fn iteration_prefix_keeps_the_document_hop_and_the_map_key_subscript() {
let resolver = resolver_with_document_hop_alias();
let prefix = resolver.swift_json_bridged_iteration_prefix("metadata.open_graph.title");
assert_eq!(
prefix.as_deref(),
Some("metadata.document.open_graph"),
"must resolve the alias first and report the real struct prefix through `document`, not \
an incidental match on the unresolved alias label"
);
}
#[test]
fn traversal_prefix_is_unaffected_for_an_already_resolved_path() {
let resolver = resolver_with_document_hop_alias();
let prefix = resolver.swift_json_bridged_traversal_prefix("metadata.document.open_graph[title]");
assert_eq!(prefix.as_deref(), Some("metadata.document.open_graph"));
}