diff --git a/crates/db/tests/fields.rs b/crates/db/tests/fields.rs index d8a787b..0597979 100644 --- a/crates/db/tests/fields.rs +++ b/crates/db/tests/fields.rs @@ -116,3 +116,56 @@ async fn term_and_authority_fields_round_trip_their_binding(pool: PgPool) { let all = fields::list_field_definitions(db.pool()).await.unwrap(); assert_eq!(all.len(), 2); } + +#[sqlx::test] +async fn any_authority_scalar_and_zero_labels_round_trip(pool: PgPool) { + let db = Db::from_pool(pool); + + let mut tx = db.pool().begin().await.unwrap(); + fields::create_field_definition( + &mut tx, + &NewFieldDefinition { + key: "donor".into(), + field_type: FieldType::Authority { kind: None }, + required: false, + group_key: None, + labels: vec![], + }, + ) + .await + .unwrap(); + fields::create_field_definition( + &mut tx, + &NewFieldDefinition { + key: "on_display".into(), + field_type: FieldType::Boolean, + required: false, + group_key: None, + labels: vec![LocalizedLabel { + lang: "en".into(), + label: "on display".into(), + }], + }, + ) + .await + .unwrap(); + tx.commit().await.unwrap(); + + let donor = fields::field_definition_by_key(db.pool(), "donor") + .await + .unwrap() + .unwrap(); + assert_eq!(donor.field_type, FieldType::Authority { kind: None }); + assert!(donor.labels.is_empty()); + + let on_display = fields::field_definition_by_key(db.pool(), "on_display") + .await + .unwrap() + .unwrap(); + assert_eq!(on_display.field_type, FieldType::Boolean); + + // list_field_definitions is ordered by key. + let all = fields::list_field_definitions(db.pool()).await.unwrap(); + let keys: Vec<&str> = all.iter().map(|d| d.key.as_str()).collect(); + assert_eq!(keys, vec!["donor", "on_display"]); +}