From bd68d917f8ddde248e33110bbf3f3b8cfcd0d416 Mon Sep 17 00:00:00 2001 From: Hoang Tran Date: Thu, 28 Aug 2025 13:00:39 -0400 Subject: [PATCH 1/2] Add pagination --- .../main/java/com/github/hoangqt/GitHub.java | 6 +++ .../com/github/hoangqt/GitHubApiTest.java | 37 +++++++++++++++++++ 2 files changed, 43 insertions(+) diff --git a/app/src/main/java/com/github/hoangqt/GitHub.java b/app/src/main/java/com/github/hoangqt/GitHub.java index 50dd00b..c2169cf 100644 --- a/app/src/main/java/com/github/hoangqt/GitHub.java +++ b/app/src/main/java/com/github/hoangqt/GitHub.java @@ -47,11 +47,17 @@ public Response getRepository(String repo) { } public Response getRepositoryIssues(String repo) { + return getRepositoryIssues(repo, 1); + } + + public Response getRepositoryIssues(String repo, int page) { return given() .header("Authorization", "Bearer " + this.token) .header("Accept", "application/vnd.github.v3+json") .pathParam("owner", this.owner) .pathParam("repo", repo) + .queryParam("per_page", 30) + .queryParam("page", page) .when() .get("/repos/{owner}/{repo}/issues"); } diff --git a/app/src/test/java/com/github/hoangqt/GitHubApiTest.java b/app/src/test/java/com/github/hoangqt/GitHubApiTest.java index d8ba9ca..9634ff0 100644 --- a/app/src/test/java/com/github/hoangqt/GitHubApiTest.java +++ b/app/src/test/java/com/github/hoangqt/GitHubApiTest.java @@ -5,6 +5,7 @@ import io.restassured.http.ContentType; import java.util.List; import java.util.Map; +import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.MethodOrderer; import org.junit.jupiter.api.Order; @@ -151,4 +152,40 @@ public void testGetCommits() { .jsonPath(); assertThat(json.getList("committer.login", String.class)).contains(TEST_OWNER); } + + @AfterAll + public static void tearDown() { + int page = 1; + while (true) { + var json = + github + .getRepositoryIssues(TEST_REPO, page) + .then() + .statusCode(200) + .contentType(ContentType.JSON) + .extract() + .jsonPath(); + + List> issues = json.getList("$"); + if (issues == null || issues.isEmpty()) { + break; + } + + var body = + """ + { + "state": "closed", + "state_reason": "not_planned" + }"""; + + for (Map issue : issues) { + Object number = issue.get("number"); + if (number != null) { + var issueNum = String.valueOf(number); + github.updateIssue(TEST_REPO, body, issueNum).then().statusCode(200); + } + } + page++; + } + } } From e823062e5afcb4fd0bdfc114351c3fed84468569 Mon Sep 17 00:00:00 2001 From: Hoang Tran Date: Thu, 28 Aug 2025 13:10:05 -0400 Subject: [PATCH 2/2] Remove hard-coded --- app/src/main/java/com/github/hoangqt/GitHub.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/github/hoangqt/GitHub.java b/app/src/main/java/com/github/hoangqt/GitHub.java index c2169cf..de5a6e7 100644 --- a/app/src/main/java/com/github/hoangqt/GitHub.java +++ b/app/src/main/java/com/github/hoangqt/GitHub.java @@ -51,12 +51,14 @@ public Response getRepositoryIssues(String repo) { } public Response getRepositoryIssues(String repo, int page) { + int defaultPerPage = 30; + return given() .header("Authorization", "Bearer " + this.token) .header("Accept", "application/vnd.github.v3+json") .pathParam("owner", this.owner) .pathParam("repo", repo) - .queryParam("per_page", 30) + .queryParam("per_page", defaultPerPage) .queryParam("page", page) .when() .get("/repos/{owner}/{repo}/issues");