in avro_derive/src/lib.rs [467:525]
fn avro_3687_basic_enum_with_default() {
let basic_enum = quote! {
enum Basic {
#[default]
A,
B,
C,
D
}
};
match syn::parse2::<DeriveInput>(basic_enum) {
Ok(mut input) => {
let derived = derive_avro_schema(&mut input);
assert!(derived.is_ok());
assert_eq!(derived.unwrap().to_string(), quote! {
impl apache_avro::schema::derive::AvroSchemaComponent for Basic {
fn get_schema_in_ctxt(
named_schemas: &mut std::collections::HashMap<
apache_avro::schema::Name,
apache_avro::schema::Schema
>,
enclosing_namespace: &Option<String>
) -> apache_avro::schema::Schema {
let name = apache_avro::schema::Name::new("Basic")
.expect(&format!("Unable to parse schema name {}", "Basic")[..])
.fully_qualified_name(enclosing_namespace);
let enclosing_namespace = &name.namespace;
if named_schemas.contains_key(&name) {
apache_avro::schema::Schema::Ref { name: name.clone() }
} else {
named_schemas.insert(
name.clone(),
apache_avro::schema::Schema::Ref { name: name.clone() }
);
apache_avro::schema::Schema::Enum(apache_avro::schema::EnumSchema {
name: apache_avro::schema::Name::new("Basic").expect(
&format!("Unable to parse enum name for schema {}", "Basic")[..]
),
aliases: None,
doc: None,
symbols: vec![
"A".to_owned(),
"B".to_owned(),
"C".to_owned(),
"D".to_owned()
],
default: Some("A".into()),
attributes: Default::default(),
})
}
}
}
}.to_string());
}
Err(error) => panic!(
"Failed to parse as derive input when it should be able to. Error: {error:?}"
),
};
}