sea-orm/sea-orm-macros/tests/derive_active_enum_test.rs
Anshul Sanghi 33230ab3ad
Auto Generated ActiveEnum String Values And Model Column Names (#2170)
* 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>
2024-05-28 20:02:41 +01:00

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)
);
}