diff --git a/packages/fortifier-macros/src/validate/enum.rs b/packages/fortifier-macros/src/validate/enum.rs index 18490df..8f05794 100644 --- a/packages/fortifier-macros/src/validate/enum.rs +++ b/packages/fortifier-macros/src/validate/enum.rs @@ -51,7 +51,7 @@ impl<'a> ValidateEnum<'a> { let error_variant_idents = self .variants .iter() - .map(|variant| &variant.ident) + .flat_map(|variant| variant.error_type().map(|_| &variant.ident)) .collect::>(); let (error_variant_types, variant_error_types): (Vec<_>, Vec<_>) = self .variants diff --git a/packages/fortifier-macros/tests/validate/enum_mixed_pass.rs b/packages/fortifier-macros/tests/validate/enum_mixed_pass.rs new file mode 100644 index 0000000..ff2c938 --- /dev/null +++ b/packages/fortifier-macros/tests/validate/enum_mixed_pass.rs @@ -0,0 +1,32 @@ +use fortifier::{Validate, ValidationErrors}; + +#[derive(Validate)] +enum FieldType { + Boolean, + Integer, + Decimal { + #[validate(range(max = 10))] + scale: u32, + }, + String(#[validate(range(min = 1))] usize), +} + +fn main() -> Result<(), ValidationErrors> { + let data = FieldType::Boolean; + + data.validate_sync()?; + + let data = FieldType::Integer; + + data.validate_sync()?; + + let data = FieldType::Decimal { scale: 3 }; + + data.validate_sync()?; + + let data = FieldType::String(256); + + data.validate_sync()?; + + Ok(()) +}