use crate::{GithubMergePullRequestResponse, GithubPullRequest, GithubPullRequestFile};
use octocrate_api_builder::github_api;
github_api! {
GithubPullRequestAPI {
get_pull_request {
path "/repos/{}/{}/pulls/{}"
params {
owner String
repo String
pull_number u64
}
response GithubPullRequest
test {
params {
envs.repo_owner
envs.repo_name
envs.issue_number.clone()
}
assert assert_eq!(res.number, envs.issue_number)
}
}
list_pull_requests {
path "/repos/{}/{}/pulls"
params {
owner String
repo String
}
response Vec<GithubPullRequest>
test {
params {
envs.repo_owner
envs.repo_name
}
query {
state "closed"
}
assert assert!(res.len() > 0)
}
}
merge_pull_request {
path "/repos/{}/{}/pulls/{}/merge"
method PUT
params {
owner String
repo String
pull_number u64
}
response GithubMergePullRequestResponse
test {
ignore
params {
envs.repo_owner
envs.repo_name
envs.issue_number
}
assert assert_eq!(res.merged, true)
}
}
list_pull_request_files {
path "/repos/{}/{}/pulls/{}/files"
params {
owner String
repo String
pull_number u64
}
response Vec<GithubPullRequestFile>
test {
params {
envs.repo_owner
envs.repo_name
envs.issue_number
}
assert assert!(res.len() > 0)
}
}
check_if_pull_request_is_merged {
path "/repos/{}/{}/pulls/{}/merge"
method GET
params {
owner String
repo String
pull_number u64
}
response ()
}
}
}
#[cfg(test)]
mod tests {
use super::GithubPullRequestAPI;
use crate::utils::test_utils;
use octocrate_infra::GithubResult;
use std::sync::Arc;
#[tokio::test]
async fn check_if_pull_request_is_merged() -> GithubResult<()> {
let envs = test_utils::load_test_envs()?;
let api_client = test_utils::create_api_client()?;
let api = GithubPullRequestAPI::new(Arc::new(api_client));
api.check_if_pull_request_is_merged(envs.repo_owner, envs.repo_name, envs.issue_number)
.respond_text()
.await?;
Ok(())
}
}