Skip to main content

radicle_cli/commands/block/
args.rs

1use clap::Parser;
2
3use crate::terminal::args::BlockTarget;
4
5const ABOUT: &str = "Block repositories or nodes from being seeded or followed";
6
7#[derive(Parser, Debug)]
8#[command(about = ABOUT, disable_version_flag = true)]
9pub struct Args {
10    /// A Repository ID or Node ID to block from seeding or following (respectively)
11    ///
12    /// [example values: rad:z3Tr6bC7ctEg2EHmLvknUr29mEDLH, z6MkiswaKJ85vafhffCGBu2gdBsYoDAyHVBWRxL3j297fwS9]
13    #[arg(value_name = "RID|NID")]
14    pub(super) target: BlockTarget,
15}
16
17#[cfg(test)]
18mod test {
19    use clap::error::ErrorKind;
20    use clap::Parser;
21
22    use super::Args;
23
24    #[test]
25    fn should_parse_nid() {
26        let args =
27            Args::try_parse_from(["block", "z6MkiswaKJ85vafhffCGBu2gdBsYoDAyHVBWRxL3j297fwS9"]);
28        assert!(args.is_ok())
29    }
30
31    #[test]
32    fn should_parse_rid() {
33        let args = Args::try_parse_from(["block", "rad:z3Tr6bC7ctEg2EHmLvknUr29mEDLH"]);
34        assert!(args.is_ok())
35    }
36
37    #[test]
38    fn should_not_parse() {
39        let err = Args::try_parse_from(["block", "bee"]).unwrap_err();
40        assert_eq!(err.kind(), ErrorKind::ValueValidation);
41    }
42}