use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum MigrationResourceType {
ConnectedAccount,
AuthConfig,
TriggerInstance,
}
#[derive(Debug, Clone, Serialize, PartialEq, Eq)]
pub struct MigrationGetNanoIdParams {
#[serde(rename = "type")]
pub resource_type: MigrationResourceType,
pub uuid: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct MigrationGetNanoIdResponse {
pub nanoid: String,
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_migration_get_nanoid_params_serialization() {
let params = MigrationGetNanoIdParams {
resource_type: MigrationResourceType::ConnectedAccount,
uuid: "550e8400-e29b-41d4-a716-446655440000".to_string(),
};
let value = serde_json::to_value(¶ms).unwrap();
assert_eq!(value["type"], "CONNECTED_ACCOUNT");
assert_eq!(value["uuid"], "550e8400-e29b-41d4-a716-446655440000");
}
#[test]
fn test_migration_get_nanoid_response_deserialization() {
let payload = r#"{"nanoid":"ca_abc123xyz"}"#;
let response: MigrationGetNanoIdResponse = serde_json::from_str(payload).unwrap();
assert_eq!(response.nanoid, "ca_abc123xyz");
}
}