From c4c3a2133cc2f0afcf06d39b4d3a5569eb65acd0 Mon Sep 17 00:00:00 2001 From: Mike Stemle Date: Wed, 24 Jan 2024 09:29:35 -0500 Subject: [PATCH] Resolving issue with deleting reactions from issues. (#555) * Resolving issue with deleting reactions from issues. Issue: https://github.com/manchicken/octocrab/issues/182 * Reverting changes to CHANGELOG.md since that's automated. --- src/api/issues.rs | 4 +- tests/issues_reactions_delete_test.rs | 60 +++++++++++++++++++++++++++ 2 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 tests/issues_reactions_delete_test.rs diff --git a/src/api/issues.rs b/src/api/issues.rs index fb0b592e..c4a40505 100644 --- a/src/api/issues.rs +++ b/src/api/issues.rs @@ -1061,7 +1061,9 @@ impl<'octo> IssueHandler<'octo> { reaction_id = reaction_id.into(), ); - self.crab.delete(route, None::<&()>).await + self.crab._delete(route, None::<&()>).await?; + + Ok(()) } /// Deletes a reaction for an issue comment. diff --git a/tests/issues_reactions_delete_test.rs b/tests/issues_reactions_delete_test.rs new file mode 100644 index 00000000..0dd3e36f --- /dev/null +++ b/tests/issues_reactions_delete_test.rs @@ -0,0 +1,60 @@ +mod mock_error; + +use mock_error::setup_error_handler; +use octocrab::Octocrab; +use wiremock::{ + matchers::{method, path}, + Mock, MockServer, ResponseTemplate, +}; + +async fn setup_remove_reaction_api(template: ResponseTemplate) -> MockServer { + let owner: &str = "org"; + let repo: &str = "some-repo"; + let issue_number: u64 = 123; + let reaction_id: u64 = 456; + + let mock_server = MockServer::start().await; + + Mock::given(method("DELETE")) + .and(path(format!( + "/repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}" + ))) + .respond_with(template.clone()) + .mount(&mock_server) + .await; + + setup_error_handler( + &mock_server, + &format!("DELETE on /repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id} was not received"), + ) + .await; + mock_server +} + +fn setup_octocrab(uri: &str) -> Octocrab { + Octocrab::builder().base_uri(uri).unwrap().build().unwrap() +} + +const OWNER: &str = "org"; +const REPO: &str = "some-repo"; +const ISSUE_NUMBER: u64 = 123; +const REACTION_ID: u64 = 456; + +#[tokio::test] +async fn should_delete_reaction() { + let template = ResponseTemplate::new(204); + let mock_server = setup_remove_reaction_api(template).await; + let client = setup_octocrab(&mock_server.uri()); + + let issues = client.issues(OWNER.to_owned(), REPO.to_owned()); + + let result = issues + .delete_reaction(ISSUE_NUMBER.to_owned(), REACTION_ID.to_owned()) + .await; + + assert!( + result.is_ok(), + "expected successful result, got error: {:#?}", + result + ); +}