use super::test_case::{DartTestCaseContext, render_test_case};
use crate::core::config::ResolvedCrateConfig;
use crate::core::config::e2e::CallOverride;
use crate::e2e::config::E2eConfig;
use crate::e2e::fixture::Fixture;
fn render_client_factory_case() -> String {
let fixture: Fixture = serde_json::from_value(serde_json::json!({
"id": "edge_batch_empty_list", "description": "Empty batch list", "input": null
}))
.expect("fixture");
let mut e2e_config = E2eConfig::default();
e2e_config.call.function = "create_client".into();
e2e_config.call.overrides.insert(
"dart".into(),
CallOverride {
client_factory: Some("createClient".into()),
..Default::default()
},
);
let config = ResolvedCrateConfig::default();
let type_defs: Vec<crate::core::ir::TypeDef> = Vec::new();
let enums: Vec<crate::core::ir::EnumDef> = Vec::new();
let functions: Vec<crate::core::ir::FunctionDef> = Vec::new();
let first_class_map = super::values::build_dart_first_class_map(&type_defs, &enums, &e2e_config);
let mut out = String::new();
render_test_case(
&mut out,
&fixture,
DartTestCaseContext {
e2e_config: &e2e_config,
lang: "dart",
bridge_class: &config.dart_bridge_class_name(),
dart_first_class_map: &first_class_map,
adapters: &config.adapters,
config: &config,
type_defs: &type_defs,
enums: &enums,
functions: &functions,
errors: &[],
native_typed_dtos: true,
is_snippet: false,
},
);
out
}
#[test]
fn derived_mock_url_local_has_no_leading_underscore() {
let out = render_client_factory_case();
assert!(
out.contains("_fixtureUrl("),
"fixture no longer exercises the derived-mock-URL path; got:\n{out}"
);
assert!(
out.contains("baseUrl: mockUrl"),
"expected the derived local to be threaded into the factory call; got:\n{out}"
);
assert!(
out.contains("final mockUrl = "),
"expected an underscore-free mock-URL local; got:\n{out}"
);
assert!(
!out.contains("_mockUrl"),
"emitted a leading-underscore Dart local, which trips \
no_leading_underscores_for_local_identifiers; got:\n{out}"
);
}
#[test]
fn module_scope_fixture_url_helper_keeps_its_privacy_underscore() {
let out = render_client_factory_case();
assert!(
out.contains("_fixtureUrl("),
"module-scope `_fixtureUrl` must keep its library-privacy underscore; got:\n{out}"
);
}