diff options
-rw-r--r-- | rust/tests/test_extid.rs | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/rust/tests/test_extid.rs b/rust/tests/test_extid.rs new file mode 100644 index 00000000..f0dc11d1 --- /dev/null +++ b/rust/tests/test_extid.rs @@ -0,0 +1,37 @@ + +use diesel::prelude::*; +use fatcat::database_models::*; +use fatcat::database_schema::*; +use fatcat::server; +use diesel::insert_into; +use std::str::FromStr; +use uuid::Uuid; + +mod helpers; + +#[test] +fn test_extid_uniq() { + // This test ensures that the SQL UNIQ constraint is working + let server = server::create_test_server().unwrap(); + let conn = server.db_pool.get().expect("db_pool error"); + + let resp = insert_into(release_rev_extid::table) + .values(ReleaseExtidRow { + release_rev: Uuid::from_str("00000000-0000-0000-4444-FFF000000002").unwrap(), + extid_type: "arxiv".to_string(), + value: "1905.03769v1".to_string(), + }) + .execute(&conn); + + assert!(resp.is_err()); + + let resp = insert_into(release_rev_extid::table) + .values(ReleaseExtidRow { + release_rev: Uuid::from_str("00000000-0000-0000-4444-FFF000000002").unwrap(), + extid_type: "arxiv_blah".to_string(), + value: "1905.03769v1".to_string(), + }) + .execute(&conn); + + assert!(resp.is_ok()); +} |