use doku::{Document, Fields, TypeKind};
#[test]
fn serde_aliases_are_collected_by_document() {
#[derive(serde::Deserialize, Document)]
#[allow(dead_code)]
struct Thing {
#[serde(alias = "foos")]
foo: String,
#[serde(alias = "bat")]
#[serde(alias = "baz")]
bar: i32,
}
if let doku::Type {
kind:
TypeKind::Struct {
fields: Fields::Named { fields },
..
},
..
} = Thing::ty()
{
let foo_aliases = fields
.iter()
.find(|(name, _)| *name == "foo")
.unwrap()
.1
.aliases;
let bar_aliases = fields
.iter()
.find(|(name, _)| *name == "bar")
.unwrap()
.1
.aliases;
assert_eq!(foo_aliases, ["foos"]);
assert_eq!(bar_aliases, ["bat", "baz"]);
} else {
unreachable!();
}
}