diff options
author | Bryan Newbold <bnewbold@robocracy.org> | 2019-02-14 16:24:16 -0800 |
---|---|---|
committer | Bryan Newbold <bnewbold@robocracy.org> | 2019-02-14 16:24:16 -0800 |
commit | b9699e27936573271506dbf6a3af744f7b454c03 (patch) | |
tree | a5ec41bf27f844fad32ca7f6aa1c254bd5c424ae /rust/src/identifiers.rs | |
parent | 70b4bc18b13f59c9d42c8e44ef872dfd2e1abef3 (diff) | |
download | fatcat-b9699e27936573271506dbf6a3af744f7b454c03.tar.gz fatcat-b9699e27936573271506dbf6a3af744f7b454c03.zip |
verify release_status field
Diffstat (limited to 'rust/src/identifiers.rs')
-rw-r--r-- | rust/src/identifiers.rs | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/rust/src/identifiers.rs b/rust/src/identifiers.rs index 1c859269..ed88939d 100644 --- a/rust/src/identifiers.rs +++ b/rust/src/identifiers.rs @@ -342,6 +342,38 @@ fn test_check_release_type() { assert!(check_release_type("book ").is_err()); } +pub fn check_release_status(raw: &str) -> Result<()> { + let valid_types = vec![ + // DRIVER types (minus "version" suffix) + "draft", + "submitted", + "accepted", + "published", + "updated", + // fatcat-specific extensions + "retraction", + ]; + for good in valid_types { + if raw == good { + return Ok(()); + } + } + Err(FatcatError::NotInControlledVocabulary( + "release_status".to_string(), + raw.to_string(), + ))? +} + +#[test] +fn test_check_release_status() { + assert!(check_release_status("draft").is_ok()); + assert!(check_release_status("retraction").is_ok()); + assert!(check_release_status("published").is_ok()); + assert!(check_release_status("pre-print").is_err()); + assert!(check_release_status("DRAFT").is_err()); + assert!(check_release_status("draft ").is_err()); +} + pub fn check_contrib_role(raw: &str) -> Result<()> { let valid_types = vec![ // Citation Style Language official role types |