worktree-io 0.17.6

A CLI tool to open GitHub issues as git worktree workspaces
Documentation
use super::*;

#[test]
fn test_parse_azure_devops_url() {
    let r = IssueRef::parse("https://dev.azure.com/myorg/myproject/_workitems/edit/42").unwrap();
    assert_eq!(
        r,
        IssueRef::AzureDevOps {
            org: "myorg".into(),
            project: "myproject".into(),
            repo: "myproject".into(),
            id: 42,
        }
    );
}

#[test]
fn test_parse_azure_devops_url_invalid_id() {
    let err =
        IssueRef::parse("https://dev.azure.com/myorg/myproject/_workitems/edit/abc").unwrap_err();
    assert!(err.to_string().contains("Invalid work item ID"));
}

#[test]
fn test_parse_azure_devops_url_wrong_format() {
    let err = IssueRef::parse("https://dev.azure.com/myorg/myproject/_boards/board").unwrap_err();
    assert!(err
        .to_string()
        .contains("Expected Azure DevOps work item URL"));
}

#[test]
fn test_parse_azure_devops_shorthand() {
    let r = IssueRef::parse("myorg/myproject/myrepo!42").unwrap();
    assert_eq!(
        r,
        IssueRef::AzureDevOps {
            org: "myorg".into(),
            project: "myproject".into(),
            repo: "myrepo".into(),
            id: 42,
        }
    );
}

#[test]
fn test_parse_azure_devops_shorthand_invalid_id() {
    let err = IssueRef::parse("myorg/myproject/myrepo!abc").unwrap_err();
    assert!(err.to_string().contains("Invalid work item ID"));
}

#[test]
fn test_parse_azure_devops_shorthand_missing_parts() {
    let err = IssueRef::parse("myorg/myproject!42").unwrap_err();
    assert!(err.to_string().contains("Invalid Azure DevOps shorthand"));
}

#[test]
fn test_parse_azure_devops_worktree_url() {
    let r = IssueRef::parse(
        "worktree://open?org=myorg&project=myproject&ado_repo=myrepo&work_item_id=42",
    )
    .unwrap();
    assert_eq!(
        r,
        IssueRef::AzureDevOps {
            org: "myorg".into(),
            project: "myproject".into(),
            repo: "myrepo".into(),
            id: 42,
        }
    );
}

#[test]
fn test_parse_azure_devops_worktree_url_defaults_repo_to_project() {
    let r = IssueRef::parse("worktree://open?org=myorg&project=myproject&work_item_id=42").unwrap();
    assert_eq!(
        r,
        IssueRef::AzureDevOps {
            org: "myorg".into(),
            project: "myproject".into(),
            repo: "myproject".into(),
            id: 42,
        }
    );
}