oas3-gen 0.22.0

A rust type generator for OpenAPI v3.1.x specification.
use std::collections::HashSet;

use crate::generator::{codegen::Visibility, converter::FieldOptionalityPolicy, orchestrator::Orchestrator};

#[test]
fn test_implicit_dependency_via_union_fingerprint() {
  let spec_json = include_str!("../../../../fixtures/implicit_union.json");
  let spec: oas3::Spec = oas3::from_json(spec_json).unwrap();

  let mut only_ops = HashSet::new();
  only_ops.insert("test_operation".to_string());

  let orchestrator = Orchestrator::new(
    spec,
    Visibility::default(),
    false, // include_unused_schemas = false (IMPORTANT)
    Some(&only_ops),
    None,
    FieldOptionalityPolicy::standard(),
    false,
    false,
    false,
  );

  let (code, _) = orchestrator.generate_with_header("test.json").unwrap();

  // Verify that ImplicitlyRequiredUnion was generated
  assert!(
    code.contains("pub enum ImplicitlyRequiredUnion"),
    "ImplicitlyRequiredUnion was not generated!"
  );

  // Verify that ComponentA and ComponentB were generated
  assert!(code.contains("pub struct ComponentA"), "ComponentA was not generated!");
  assert!(code.contains("pub struct ComponentB"), "ComponentB was not generated!");
}