fn avro_3687_basic_enum_with_default()

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:?}"
            ),
        };
    }