Radish alpha
h
Radicle Heartwood Protocol & Stack
Radicle
Git (anonymous pull)
Log in to clone via SSH
REVIEW: Add unit tests
✗ CI failure Erik Kundt committed 6 months ago
commit d3f8eced41cd81b833a8a101f8004113002aba58
parent 42525c40a85f603f1577ef9f00d1a26446b604d2
2 failed (2 total) View logs
1 file changed +72 -0
modified crates/radicle-cli/src/commands/id/args.rs
@@ -234,3 +234,75 @@ pub(super) enum Command {
        revision: Rev,
    },
}
+

+
#[cfg(test)]
+
mod test {
+
    use super::{Args, Payload};
+
    use clap::error::ErrorKind;
+
    use clap::Parser;
+

+
    #[test]
+
    fn should_parse_single_payload() {
+
        let args = Args::try_parse_from(["id", "update", "--payload", "key", "name", "value"]);
+
        assert!(args.is_ok())
+
    }
+

+
    #[test]
+
    fn should_not_parse_single_payload() {
+
        let err = Args::try_parse_from(["id", "update", "--payload", "key", "name"]).unwrap_err();
+
        assert_eq!(err.kind(), ErrorKind::WrongNumberOfValues);
+
    }
+

+
    #[test]
+
    fn should_parse_multiple_payloads() {
+
        let args = Args::try_parse_from([
+
            "id",
+
            "update",
+
            "--payload",
+
            "key_1",
+
            "name_1",
+
            "value_1",
+
            "--payload",
+
            "key_2",
+
            "name_2",
+
            "value_2",
+
        ]);
+
        assert!(args.is_ok())
+
    }
+

+
    #[test]
+
    fn should_not_parse_single_payloads() {
+
        let err = Args::try_parse_from([
+
            "id",
+
            "update",
+
            "--payload",
+
            "key_1",
+
            "name_1",
+
            "value_1",
+
            "--payload",
+
            "key_2",
+
            "name_2",
+
        ])
+
        .unwrap_err();
+
        assert_eq!(err.kind(), ErrorKind::WrongNumberOfValues);
+
    }
+

+
    #[test]
+
    fn should_parse_into_payload() {
+
        let payload: Result<Vec<_>, _> = Payload::try_parse_many(&[
+
            "xyz.radicle.project".to_string(),
+
            "name".to_string(),
+
            "{}".to_string(),
+
        ])
+
        .collect();
+
        assert!(payload.is_ok())
+
    }
+

+
    #[test]
+
    #[should_panic(expected = "number of values should be divsible by 3")]
+
    fn should_not_parse_into_payload() {
+
        let _: Result<Vec<_>, _> =
+
            Payload::try_parse_many(&["xyz.radicle.project".to_string(), "name".to_string()])
+
                .collect();
+
    }
+
}