mirror of
https://github.com/storytold/artcraft.git
synced 2026-11-10 03:51:25 +00:00
tests
This commit is contained in:
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() {
|
||||
|
||||
Reference in new issue
Block a user