feat(server): 'seed' subcommand wiring the Spectrum cataloguing seed (#14)
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
use db::{Db, fields, seed, vocab};
|
||||
use sqlx::PgPool;
|
||||
|
||||
// Note: `server::seed` opens its own DB connection by URL, but `#[sqlx::test]`
|
||||
// provisions a temporary database whose URL is not directly exposed. This test
|
||||
// exercises the building block the command composes — `db::seed::seed_spectrum_cataloguing`
|
||||
// — against the test pool, run twice to prove the idempotency the command relies on.
|
||||
#[sqlx::test(migrations = "../db/migrations")]
|
||||
async fn seed_is_idempotent_via_building_block(pool: PgPool) {
|
||||
let db = Db::from_pool(pool);
|
||||
|
||||
for _ in 0..2 {
|
||||
let mut tx = db.pool().begin().await.unwrap();
|
||||
seed::seed_spectrum_cataloguing(&mut tx).await.unwrap();
|
||||
tx.commit().await.unwrap();
|
||||
}
|
||||
|
||||
// A representative seeded vocabulary and field definition are present after two runs.
|
||||
assert!(
|
||||
vocab::vocabulary_by_key(db.pool(), "material")
|
||||
.await
|
||||
.unwrap()
|
||||
.is_some(),
|
||||
"vocabulary 'material' should be seeded"
|
||||
);
|
||||
assert!(
|
||||
fields::field_definition_by_key(db.pool(), "title")
|
||||
.await
|
||||
.unwrap()
|
||||
.is_some(),
|
||||
"field definition 'title' should be seeded"
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user