mirror of
https://github.com/storytold/artcraft.git
synced 2026-11-06 02:00:46 +00:00
needed tests
This commit is contained in:
1 parent
21ff07ef89
commit
bb4d642a30
2 files changed
+97
No files matched your search
+80
@@ -26,3 +26,83 @@ pub enum FrontendFailureCategoryForApiClients {
|
||||
#[serde(untagged)]
|
||||
Unknown(String),
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::FrontendFailureCategoryForApiClients;
|
||||
use enums_shared::test_helpers::{assert_deserialization, assert_serialization};
|
||||
|
||||
mod manual_checks {
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn test_serialization() {
|
||||
assert_serialization(FrontendFailureCategoryForApiClients::FaceNotDetected, "face_not_detected");
|
||||
assert_serialization(FrontendFailureCategoryForApiClients::KeepAliveElapsed, "keep_alive_elapsed");
|
||||
assert_serialization(FrontendFailureCategoryForApiClients::NotYetImplemented, "not_yet_implemented");
|
||||
assert_serialization(FrontendFailureCategoryForApiClients::RetryableWorkerError, "retryable_worker_error");
|
||||
assert_serialization(FrontendFailureCategoryForApiClients::ModelRulesViolation, "model_rules_violation");
|
||||
assert_serialization(FrontendFailureCategoryForApiClients::RuleBansUserImage, "rule_bans_user_image");
|
||||
assert_serialization(FrontendFailureCategoryForApiClients::RuleBansUserImageWithFaces, "rule_bans_user_image_with_faces");
|
||||
assert_serialization(FrontendFailureCategoryForApiClients::RuleBansUserTextPrompt, "rule_bans_user_text_prompt");
|
||||
assert_serialization(FrontendFailureCategoryForApiClients::RuleBansUserContent, "rule_bans_user_content");
|
||||
assert_serialization(FrontendFailureCategoryForApiClients::RuleBansGeneratedVideo, "rule_bans_generated_video");
|
||||
assert_serialization(FrontendFailureCategoryForApiClients::RuleBansGeneratedAudio, "rule_bans_generated_audio");
|
||||
assert_serialization(FrontendFailureCategoryForApiClients::RuleBansGeneratedContent, "rule_bans_generated_content");
|
||||
assert_serialization(FrontendFailureCategoryForApiClients::GenerationFailed, "generation_failed");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_deserialization() {
|
||||
assert_deserialization("face_not_detected", FrontendFailureCategoryForApiClients::FaceNotDetected);
|
||||
assert_deserialization("keep_alive_elapsed", FrontendFailureCategoryForApiClients::KeepAliveElapsed);
|
||||
assert_deserialization("not_yet_implemented", FrontendFailureCategoryForApiClients::NotYetImplemented);
|
||||
assert_deserialization("retryable_worker_error", FrontendFailureCategoryForApiClients::RetryableWorkerError);
|
||||
assert_deserialization("model_rules_violation", FrontendFailureCategoryForApiClients::ModelRulesViolation);
|
||||
assert_deserialization("rule_bans_user_image", FrontendFailureCategoryForApiClients::RuleBansUserImage);
|
||||
assert_deserialization("rule_bans_user_image_with_faces", FrontendFailureCategoryForApiClients::RuleBansUserImageWithFaces);
|
||||
assert_deserialization("rule_bans_user_text_prompt", FrontendFailureCategoryForApiClients::RuleBansUserTextPrompt);
|
||||
assert_deserialization("rule_bans_user_content", FrontendFailureCategoryForApiClients::RuleBansUserContent);
|
||||
assert_deserialization("rule_bans_generated_video", FrontendFailureCategoryForApiClients::RuleBansGeneratedVideo);
|
||||
assert_deserialization("rule_bans_generated_audio", FrontendFailureCategoryForApiClients::RuleBansGeneratedAudio);
|
||||
assert_deserialization("rule_bans_generated_content", FrontendFailureCategoryForApiClients::RuleBansGeneratedContent);
|
||||
assert_deserialization("generation_failed", FrontendFailureCategoryForApiClients::GenerationFailed);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn unknown_variant_deserializes() {
|
||||
let json = "\"some_future_category\"";
|
||||
let value: FrontendFailureCategoryForApiClients = serde_json::from_str(json).unwrap();
|
||||
assert_eq!(value, FrontendFailureCategoryForApiClients::Unknown("some_future_category".to_string()));
|
||||
}
|
||||
}
|
||||
|
||||
mod mechanical_checks {
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn round_trip_json() {
|
||||
let known_variants = vec![
|
||||
FrontendFailureCategoryForApiClients::FaceNotDetected,
|
||||
FrontendFailureCategoryForApiClients::KeepAliveElapsed,
|
||||
FrontendFailureCategoryForApiClients::NotYetImplemented,
|
||||
FrontendFailureCategoryForApiClients::RetryableWorkerError,
|
||||
FrontendFailureCategoryForApiClients::ModelRulesViolation,
|
||||
FrontendFailureCategoryForApiClients::RuleBansUserImage,
|
||||
FrontendFailureCategoryForApiClients::RuleBansUserImageWithFaces,
|
||||
FrontendFailureCategoryForApiClients::RuleBansUserTextPrompt,
|
||||
FrontendFailureCategoryForApiClients::RuleBansUserContent,
|
||||
FrontendFailureCategoryForApiClients::RuleBansGeneratedVideo,
|
||||
FrontendFailureCategoryForApiClients::RuleBansGeneratedAudio,
|
||||
FrontendFailureCategoryForApiClients::RuleBansGeneratedContent,
|
||||
FrontendFailureCategoryForApiClients::GenerationFailed,
|
||||
];
|
||||
assert_eq!(known_variants.len(), 13);
|
||||
for variant in known_variants {
|
||||
let json = serde_json::to_string(&variant).unwrap();
|
||||
let back: FrontendFailureCategoryForApiClients = serde_json::from_str(&json).unwrap();
|
||||
assert_eq!(variant, back);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+17
@@ -22,11 +22,28 @@ pub enum FrontendFailureCategoryForOldClients {
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::FrontendFailureCategoryForOldClients;
|
||||
use enums_shared::test_helpers::{assert_deserialization, assert_serialization};
|
||||
use strum::IntoEnumIterator;
|
||||
|
||||
mod manual_checks {
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn test_serialization() {
|
||||
assert_serialization(FrontendFailureCategoryForOldClients::FaceNotDetected, "face_not_detected");
|
||||
assert_serialization(FrontendFailureCategoryForOldClients::KeepAliveElapsed, "keep_alive_elapsed");
|
||||
assert_serialization(FrontendFailureCategoryForOldClients::NotYetImplemented, "not_yet_implemented");
|
||||
assert_serialization(FrontendFailureCategoryForOldClients::RetryableWorkerError, "retryable_worker_error");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_deserialization() {
|
||||
assert_deserialization("face_not_detected", FrontendFailureCategoryForOldClients::FaceNotDetected);
|
||||
assert_deserialization("keep_alive_elapsed", FrontendFailureCategoryForOldClients::KeepAliveElapsed);
|
||||
assert_deserialization("not_yet_implemented", FrontendFailureCategoryForOldClients::NotYetImplemented);
|
||||
assert_deserialization("retryable_worker_error", FrontendFailureCategoryForOldClients::RetryableWorkerError);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn variants_count_check() {
|
||||
assert_eq!(FrontendFailureCategoryForOldClients::iter().count(), 4);
|
||||
|
||||
Reference in new issue
Block a user