use tokio;
use jira_query::*;
fn rh_jira() -> JiraInstance {
JiraInstance::at("https://issues.redhat.com".to_string()).unwrap()
}
fn atlassian_jira() -> JiraInstance {
JiraInstance::at("https://jira.atlassian.com/".to_string()).unwrap()
}
fn apache_jira() -> JiraInstance {
JiraInstance::at("https://issues.apache.org/jira/".to_string()).unwrap()
}
fn whamcloud_jira() -> JiraInstance {
JiraInstance::at("https://jira.whamcloud.com".to_string()).unwrap()
}
#[tokio::test]
async fn access_issue() {
let instance = rh_jira();
let _issue1 = instance.issue("CS-1113").await.unwrap();
let _issue2 = instance.issue("CS-1111").await.unwrap();
}
#[tokio::test]
async fn access_issues() {
let instance = rh_jira();
let issues = instance.issues(&["CS-1086", "CS-1084"]).await.unwrap();
assert_eq!(issues.len(), 2);
}
#[tokio::test]
async fn access_missing_issue() {
let instance = rh_jira();
let issues = instance.issues(&["CS-11111111111111111111"]).await;
assert!(issues.is_err());
assert!(matches!(issues.unwrap_err(), JiraQueryError::Request(_)));
}
#[tokio::test]
async fn check_standard_fields() {
let instance = rh_jira();
let issue = instance.issue("CS-1113").await.unwrap();
assert_eq!(issue.id, "14658916");
assert_eq!(issue.key, "CS-1113");
assert_eq!(
issue.fields.summary,
"Set gitlab.com/redhat/centos-stream/tests to public"
);
assert_eq!(issue.fields.assignee.unwrap().display_name, "aoife moloney");
assert_eq!(issue.fields.reporter.display_name, "Donald Zickus");
assert_eq!(issue.fields.issuetype.name, "Task");
assert_eq!(issue.fields.project.key, "CS");
assert_eq!(issue.fields.project.name, "CentOS Stream Pipeline");
assert_eq!(issue.fields.priority.unwrap().name, "Normal");
}
#[tokio::test]
async fn check_time() {
let instance = rh_jira();
let issue = instance.issue("CS-1113").await.unwrap();
let date_created = chrono::NaiveDate::from_ymd_opt(2022, 5, 24).unwrap();
assert_eq!(issue.fields.created.date_naive(), date_created);
}
#[tokio::test]
async fn search_for_issues() {
let instance = rh_jira();
let query = r#"project="CentOS Stream Pipeline" AND priority=Blocker"#;
let issues = instance.search(query).await.unwrap();
assert!(issues.len() > 1);
}
#[tokio::test]
async fn check_no_issues() {
let instance = rh_jira();
let issues = instance.issues(&[]).await;
assert_eq!(issues.ok(), Some(vec![]));
}
#[tokio::test]
async fn search_for_issues_start_at() {
let instance = rh_jira().paginate(Pagination::ChunkSize(30));
let query = r#"project="CentOS Stream Pipeline""#;
let issues = instance.search(query).await.unwrap();
assert!(issues.len() > 1000);
}
#[tokio::test]
async fn access_atlassian_issues() {
let instance = atlassian_jira();
let _issues = instance
.issues(&["ACCESS-1427", "ACCESS-1364", "CLOUD-11546", "CLOUD-11236"])
.await
.unwrap();
}
#[tokio::test]
async fn search_for_atlassian_issues() {
let instance = atlassian_jira();
let query = r#"project = CONFCLOUD AND status = Closed AND created >= 2022-11-12 AND created <= 2023-02-12"#;
let issues = instance.search(query).await.unwrap();
assert!(issues.len() >= 39);
}
#[tokio::test]
async fn access_apache_issues() {
let instance = apache_jira();
let _issues = instance
.issues(&["SVN-748", "SVN-750", "SPARK-41075", "SLING-10585"])
.await
.unwrap();
}
#[tokio::test]
async fn access_whamcloud_issues() {
let instance = whamcloud_jira();
let _issues = instance
.issues(&["LU-10647", "LU-13009", "LU-8002", "LU-8874"])
.await
.unwrap();
}