use std::collections::HashSet;
use field_name::FieldNames;
#[derive(FieldNames)]
struct DbModel {
id: u64,
user_email: String,
created_at: String,
#[field_name(skip)] row_version: u32,
}
#[derive(FieldNames)]
struct JsonApiDto {
id: u64,
#[field_name(rename = "userEmail")]
user_email: String,
#[field_name(rename = "createdAt")]
created_at: String,
}
#[test]
fn ensure_db_and_api_models_are_aligned() {
assert_eq!(DbModel::FIELDS.len(), JsonApiDto::FIELDS.len());
let _ = DbModel::USER_EMAIL;
let _ = JsonApiDto::USER_EMAIL;
let _ = DbModel::CREATED_AT;
let _ = JsonApiDto::CREATED_AT; }
#[test]
fn ensure_raw_and_validated_structs_match_exact_wire_format() {
#[derive(FieldNames)]
struct ValidatedUser {
#[field_name(rename = "uuid")]
id: String,
username: String,
}
#[derive(FieldNames)]
struct RawUserImport {
#[field_name(rename = "uuid")] id: String,
username: String,
#[field_name(skip)]
extra_garbage: String, }
let valid_set: HashSet<_> = ValidatedUser::FIELDS.iter().collect();
let raw_set: HashSet<_> = RawUserImport::FIELDS.iter().collect();
assert_eq!(valid_set, raw_set, "Raw import struct definition does not match Validated struct wire format!");
}