This commit is contained in:
Brandon Thomas committed 2026-04-24 00:30:06 -04:00
1 parent 6ed7c26f9a
commit e2901ba070
1 file changed
+89 -1
@@ -2,7 +2,7 @@ use utoipa::ToSchema;
/// Video models available for generation.
/// Mirrors artcraft_router::api::common_video_model::CommonVideoModel.
#[derive(Copy, Clone, Debug, Serialize, Deserialize, ToSchema)]
#[derive(Copy, Clone, Debug, Eq, PartialEq, Serialize, Deserialize, ToSchema)]
#[serde(rename_all = "snake_case")]
pub enum CommonVideoModel {
#[serde(rename = "grok_video")]
@@ -98,6 +98,94 @@ impl CommonVideoModel {
mod tests {
use super::*;
use crate::common::generation::common_model_type::CommonModelType;
use crate::test_helpers::assert_serialization;
#[test]
fn test_serialization() {
assert_serialization(CommonVideoModel::GrokVideo, "grok_video");
assert_serialization(CommonVideoModel::Kling16Pro, "kling_1p6_pro");
assert_serialization(CommonVideoModel::Kling21Pro, "kling_2p1_pro");
assert_serialization(CommonVideoModel::Kling21Master, "kling_2p1_master");
assert_serialization(CommonVideoModel::Kling2p5TurboPro, "kling_2p5_turbo_pro");
assert_serialization(CommonVideoModel::Kling2p6Pro, "kling_2p6_pro");
assert_serialization(CommonVideoModel::Kling3p0Standard, "kling_3p0_standard");
assert_serialization(CommonVideoModel::Kling3p0Pro, "kling_3p0_pro");
assert_serialization(CommonVideoModel::HappyHorse1p0, "happy_horse_1p0");
assert_serialization(CommonVideoModel::Seedance10Lite, "seedance_1p0_lite");
assert_serialization(CommonVideoModel::Seedance1p5Pro, "seedance_1p5_pro");
assert_serialization(CommonVideoModel::Seedance2p0, "seedance_2p0");
assert_serialization(CommonVideoModel::Seedance2p0Fast, "seedance_2p0_fast");
assert_serialization(CommonVideoModel::Sora2, "sora_2");
assert_serialization(CommonVideoModel::Sora2Pro, "sora_2_pro");
assert_serialization(CommonVideoModel::Veo2, "veo_2");
assert_serialization(CommonVideoModel::Veo3, "veo_3");
assert_serialization(CommonVideoModel::Veo3Fast, "veo_3_fast");
assert_serialization(CommonVideoModel::Veo3p1, "veo_3p1");
assert_serialization(CommonVideoModel::Veo3p1Fast, "veo_3p1_fast");
}
#[test]
fn test_deserialization() {
let cases = [
("grok_video", CommonVideoModel::GrokVideo),
("kling_1p6_pro", CommonVideoModel::Kling16Pro),
("kling_2p1_pro", CommonVideoModel::Kling21Pro),
("kling_2p1_master", CommonVideoModel::Kling21Master),
("kling_2p5_turbo_pro", CommonVideoModel::Kling2p5TurboPro),
("kling_2p6_pro", CommonVideoModel::Kling2p6Pro),
("kling_3p0_standard", CommonVideoModel::Kling3p0Standard),
("kling_3p0_pro", CommonVideoModel::Kling3p0Pro),
("happy_horse_1p0", CommonVideoModel::HappyHorse1p0),
("seedance_1p0_lite", CommonVideoModel::Seedance10Lite),
("seedance_1p5_pro", CommonVideoModel::Seedance1p5Pro),
("seedance_2p0", CommonVideoModel::Seedance2p0),
("seedance_2p0_fast", CommonVideoModel::Seedance2p0Fast),
("sora_2", CommonVideoModel::Sora2),
("sora_2_pro", CommonVideoModel::Sora2Pro),
("veo_2", CommonVideoModel::Veo2),
("veo_3", CommonVideoModel::Veo3),
("veo_3_fast", CommonVideoModel::Veo3Fast),
("veo_3p1", CommonVideoModel::Veo3p1),
("veo_3p1_fast", CommonVideoModel::Veo3p1Fast),
];
for (json_str, expected) in cases {
let json = format!("\"{}\"", json_str);
let deserialized: CommonVideoModel = serde_json::from_str(&json)
.unwrap_or_else(|e| panic!("Failed to deserialize {:?}: {}", json_str, e));
assert_eq!(deserialized, expected, "Failed for {:?}", json_str);
}
}
#[test]
fn test_round_trip() {
let all = [
CommonVideoModel::GrokVideo,
CommonVideoModel::Kling16Pro,
CommonVideoModel::Kling21Pro,
CommonVideoModel::Kling21Master,
CommonVideoModel::Kling2p5TurboPro,
CommonVideoModel::Kling2p6Pro,
CommonVideoModel::Kling3p0Standard,
CommonVideoModel::Kling3p0Pro,
CommonVideoModel::HappyHorse1p0,
CommonVideoModel::Seedance10Lite,
CommonVideoModel::Seedance1p5Pro,
CommonVideoModel::Seedance2p0,
CommonVideoModel::Seedance2p0Fast,
CommonVideoModel::Sora2,
CommonVideoModel::Sora2Pro,
CommonVideoModel::Veo2,
CommonVideoModel::Veo3,
CommonVideoModel::Veo3Fast,
CommonVideoModel::Veo3p1,
CommonVideoModel::Veo3p1Fast,
];
for variant in all {
let json = serde_json::to_string(&variant).unwrap();
let deserialized: CommonVideoModel = serde_json::from_str(&json).unwrap();
assert_eq!(variant, deserialized, "Round-trip failed for {:?}", variant);
}
}
#[test]
fn all_video_models_convert_to_common_model_type() {