new tests

This commit is contained in:
Brandon Thomas committed 2026-03-20 09:22:30 -04:00
1 parent 09b4c4b166
commit 080a33c398
2 files changed
+21 -2

No files matched your search

@@ -24,7 +24,7 @@ pub enum GenerationProvider {
#[cfg(test)]
mod tests {
use super::GenerationProvider;
use enums_shared::test_helpers::assert_serialization;
use enums_shared::test_helpers::{assert_serialization, assert_deserialization};
use strum::IntoEnumIterator;
mod manual_checks {
use super::*;
@@ -38,6 +38,16 @@ mod tests {
assert_serialization(GenerationProvider::Sora, "sora");
assert_serialization(GenerationProvider::WorldLabs, "world_labs");
}
#[test]
fn test_deserialization() {
assert_deserialization("artcraft", GenerationProvider::Artcraft);
assert_deserialization("fal", GenerationProvider::Fal);
assert_deserialization("grok", GenerationProvider::Grok);
assert_deserialization("midjourney", GenerationProvider::Midjourney);
assert_deserialization("sora", GenerationProvider::Sora);
assert_deserialization("world_labs", GenerationProvider::WorldLabs);
}
#[test]
fn variants_count_check() {
assert_eq!(GenerationProvider::iter().count(), 6);
@@ -1,6 +1,6 @@
//! Only imported in tests
use serde::Serialize;
use serde::{Serialize, de::DeserializeOwned};
pub fn to_json<T: Serialize>(t: &T) -> String {
serde_json::to_string(t)
@@ -13,3 +13,12 @@ pub fn to_json<T: Serialize>(t: &T) -> String {
pub fn assert_serialization<T: Serialize>(t: T, expected: &str) {
assert_eq!(&to_json(&t), expected);
}
/// Assert that a JSON string deserializes to the expected value.
/// This is useful for ensuring stability of deserialization.
pub fn assert_deserialization<T: DeserializeOwned + PartialEq + std::fmt::Debug>(json_str: &str, expected: T) {
let quoted = format!("\"{}\"", json_str);
let actual: T = serde_json::from_str(&quoted)
.unwrap_or_else(|e| panic!("failed to deserialize {:?}: {}", json_str, e));
assert_eq!(actual, expected);
}