use super::{render_field_contains, resolver_with_array_field};
#[test]
fn python_wildcard_contains_iterates_every_element() {
let out = render_field_contains(&resolver_with_array_field("links"), "links[].link_type", "external");
assert!(out.contains("any("), "got: {out}");
assert!(
out.contains("in str(_e.link_type) for _e in (result.links or [])"),
"got: {out}"
);
assert!(!out.contains("[0]"), "wildcard must not pin element 0, got: {out}");
}
#[test]
fn python_explicit_index_still_pins_element_zero() {
let out = render_field_contains(&resolver_with_array_field("links"), "links[0].link_type", "external");
assert!(out.contains("result.links[0].link_type"), "got: {out}");
assert!(
!out.contains("for _e in"),
"explicit index must not become a traversal, got: {out}"
);
}
#[test]
fn python_wildcard_match_in_second_element_is_not_missed() {
let out = render_field_contains(&resolver_with_array_field("links"), "links[].link_type", "canonical");
assert!(out.contains("for _e in"), "got: {out}");
assert!(!out.contains("links[0]"), "got: {out}");
assert!(!out.contains("links[1]"), "predicate must be index-free, got: {out}");
}
#[test]
fn nested_wildcard_should_emit_a_visible_skip_rather_than_an_index_zero_check() {
let out = render_field_contains(
&resolver_with_array_field("pages"),
"pages[].links[].url",
"example.test",
);
assert!(
out.contains("# skipped: nested array-wildcard field 'pages[].links[].url' not supported"),
"expected a visible skip, got: {out}"
);
assert!(!out.contains("links[0]"), "inner wildcard collapsed to index 0: {out}");
assert!(
!out.contains("any("),
"no quantifier may be emitted for a refused path: {out}"
);
}