* WIP: Add Basic Support For Providing String Value For ActiveEnum Variants Based On Renaming Rules #2160 * WIP: Use Existing Case Style Handlers For Enum Rename Rules, Add Unit Tests For DeriveActiveEnum rename rules #2160 * WIP: Improve Implementation Of Name Case Parameters In ActiveEnum Macros #2160 * WIP: Implement Case Styles Based Name Generation For Columns In A Model #2160 * Fix Formatting #2160 * Rename Column Name And Enum Variant Renaming Macro Attributes #2160 * Revert Adding `Rename` Attribute For Column Names #2160 * Revert Unintended Formatting Changes #2160 * Fix formatting --------- Co-authored-by: Billy Chan <ccw.billy.123@gmail.com>
110 lines
3.6 KiB
Rust
110 lines
3.6 KiB
Rust
use sea_orm::ActiveEnum;
|
|
use sea_orm_macros::{DeriveActiveEnum, EnumIter};
|
|
|
|
#[derive(Debug, EnumIter, DeriveActiveEnum, Eq, PartialEq)]
|
|
#[sea_orm(
|
|
rs_type = "String",
|
|
db_type = "Enum",
|
|
enum_name = "test_enum",
|
|
rename_all = "camelCase"
|
|
)]
|
|
enum TestEnum {
|
|
DefaultVariant,
|
|
#[sea_orm(rename = "camelCase")]
|
|
VariantCamelCase,
|
|
#[sea_orm(rename = "kebab-case")]
|
|
VariantKebabCase,
|
|
#[sea_orm(rename = "mixed_case")]
|
|
VariantMixedCase,
|
|
#[sea_orm(rename = "SCREAMING_SNAKE_CASE")]
|
|
VariantShoutySnakeCase,
|
|
#[sea_orm(rename = "snake_case")]
|
|
VariantSnakeCase,
|
|
#[sea_orm(rename = "title_case")]
|
|
VariantTitleCase,
|
|
#[sea_orm(rename = "UPPERCASE")]
|
|
VariantUpperCase,
|
|
#[sea_orm(rename = "lowercase")]
|
|
VariantLowerCase,
|
|
#[sea_orm(rename = "SCREAMING-KEBAB-CASE")]
|
|
VariantScreamingKebabCase,
|
|
#[sea_orm(rename = "PascalCase")]
|
|
VariantPascalCase,
|
|
#[sea_orm(string_value = "CuStOmStRiNgVaLuE")]
|
|
CustomStringValue,
|
|
}
|
|
|
|
#[test]
|
|
fn derive_active_enum_value() {
|
|
assert_eq!(TestEnum::DefaultVariant.to_value(), "defaultVariant");
|
|
assert_eq!(TestEnum::VariantCamelCase.to_value(), "variantCamelCase");
|
|
assert_eq!(TestEnum::VariantKebabCase.to_value(), "variant-kebab-case");
|
|
assert_eq!(TestEnum::VariantMixedCase.to_value(), "variantMixedCase");
|
|
assert_eq!(
|
|
TestEnum::VariantShoutySnakeCase.to_value(),
|
|
"VARIANT_SHOUTY_SNAKE_CASE"
|
|
);
|
|
assert_eq!(TestEnum::VariantSnakeCase.to_value(), "variant_snake_case");
|
|
assert_eq!(TestEnum::VariantTitleCase.to_value(), "Variant Title Case");
|
|
assert_eq!(TestEnum::VariantUpperCase.to_value(), "VARIANTUPPERCASE");
|
|
assert_eq!(TestEnum::VariantLowerCase.to_value(), "variantlowercase");
|
|
assert_eq!(
|
|
TestEnum::VariantScreamingKebabCase.to_value(),
|
|
"VARIANT-SCREAMING-KEBAB-CASE"
|
|
);
|
|
assert_eq!(TestEnum::VariantPascalCase.to_value(), "VariantPascalCase");
|
|
assert_eq!(TestEnum::CustomStringValue.to_value(), "CuStOmStRiNgVaLuE");
|
|
}
|
|
|
|
#[test]
|
|
fn derive_active_enum_from_value() {
|
|
assert_eq!(
|
|
TestEnum::try_from_value(&"defaultVariant".to_string()),
|
|
Ok(TestEnum::DefaultVariant)
|
|
);
|
|
assert_eq!(
|
|
TestEnum::try_from_value(&"variantCamelCase".to_string()),
|
|
Ok(TestEnum::VariantCamelCase)
|
|
);
|
|
assert_eq!(
|
|
TestEnum::try_from_value(&"variant-kebab-case".to_string()),
|
|
Ok(TestEnum::VariantKebabCase)
|
|
);
|
|
assert_eq!(
|
|
TestEnum::try_from_value(&"variantMixedCase".to_string()),
|
|
Ok(TestEnum::VariantMixedCase)
|
|
);
|
|
assert_eq!(
|
|
TestEnum::try_from_value(&"VARIANT_SHOUTY_SNAKE_CASE".to_string()),
|
|
Ok(TestEnum::VariantShoutySnakeCase),
|
|
);
|
|
assert_eq!(
|
|
TestEnum::try_from_value(&"variant_snake_case".to_string()),
|
|
Ok(TestEnum::VariantSnakeCase)
|
|
);
|
|
assert_eq!(
|
|
TestEnum::try_from_value(&"Variant Title Case".to_string()),
|
|
Ok(TestEnum::VariantTitleCase)
|
|
);
|
|
assert_eq!(
|
|
TestEnum::try_from_value(&"VARIANTUPPERCASE".to_string()),
|
|
Ok(TestEnum::VariantUpperCase)
|
|
);
|
|
assert_eq!(
|
|
TestEnum::try_from_value(&"variantlowercase".to_string()),
|
|
Ok(TestEnum::VariantLowerCase)
|
|
);
|
|
assert_eq!(
|
|
TestEnum::try_from_value(&"VARIANT-SCREAMING-KEBAB-CASE".to_string()),
|
|
Ok(TestEnum::VariantScreamingKebabCase),
|
|
);
|
|
assert_eq!(
|
|
TestEnum::try_from_value(&"VariantPascalCase".to_string()),
|
|
Ok(TestEnum::VariantPascalCase)
|
|
);
|
|
assert_eq!(
|
|
TestEnum::try_from_value(&"CuStOmStRiNgVaLuE".to_string()),
|
|
Ok(TestEnum::CustomStringValue)
|
|
);
|
|
}
|