From 0d9322fbaeac163f9bd10f34f41650ede56667f6 Mon Sep 17 00:00:00 2001 From: Vootele Rotov Date: Thu, 22 Feb 2024 07:16:23 +0200 Subject: [PATCH] BUG SearchIssue id can be bigger than Integer.MAX Represent it as Long instead of Integer. For schema (where id is specified as 'int64') see: https://docs.github.com/en/rest/search/search?apiVersion=2022-11-28#search-issues-and-pull-requests --- .../java/com/spotify/github/v3/issues/Issue.java | 2 +- .../github/v3/clients/SearchClientTest.java | 2 +- .../com/spotify/github/v3/search/SearchTest.java | 15 ++++++++++++--- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/spotify/github/v3/issues/Issue.java b/src/main/java/com/spotify/github/v3/issues/Issue.java index c1d77819..25ac60cf 100644 --- a/src/main/java/com/spotify/github/v3/issues/Issue.java +++ b/src/main/java/com/spotify/github/v3/issues/Issue.java @@ -41,7 +41,7 @@ public interface Issue extends CloseTracking { /** ID. */ @Nullable - Integer id(); + Long id(); /** URL. */ @Nullable diff --git a/src/test/java/com/spotify/github/v3/clients/SearchClientTest.java b/src/test/java/com/spotify/github/v3/clients/SearchClientTest.java index 40e6c571..6f2c9966 100644 --- a/src/test/java/com/spotify/github/v3/clients/SearchClientTest.java +++ b/src/test/java/com/spotify/github/v3/clients/SearchClientTest.java @@ -63,6 +63,6 @@ public void testSearchIssue() throws Exception { when(github.request(ISSUES_URI + "?q=bogus-q", SearchIssues.class)).thenReturn(fixture); final SearchIssues search = searchClient.issues(ImmutableSearchParameters.builder().q("bogus-q").build()).get(); - assertSearchIssues(search); + assertSearchIssues(search, 35802); } } diff --git a/src/test/java/com/spotify/github/v3/search/SearchTest.java b/src/test/java/com/spotify/github/v3/search/SearchTest.java index ab04989c..15f38715 100644 --- a/src/test/java/com/spotify/github/v3/search/SearchTest.java +++ b/src/test/java/com/spotify/github/v3/search/SearchTest.java @@ -34,7 +34,7 @@ public class SearchTest { - public static final void assertSearchIssues(final SearchIssues search) { + public static final void assertSearchIssues(final SearchIssues search, long id) { final Issue issues = search.items().get(0); assertThat(search.totalCount(), is(280)); assertThat(search.incompleteResults(), is(false)); @@ -42,7 +42,7 @@ public static final void assertSearchIssues(final SearchIssues search) { issues.url(), is(URI.create("https://api.github.com/repos/batterseapower/pinyin-toolkit/issues/132"))); assertThat(issues.number(), is(132)); - assertThat(issues.id(), is(35802)); + assertThat(issues.id(), is(id)); assertThat(issues.title(), is("Line Number Indexes Beyond 20 Not Displayed")); } @@ -52,6 +52,15 @@ public void testDeserialization() throws IOException { Resources.toString(getResource(this.getClass(), "issues.json"), defaultCharset()); final SearchIssues search = Json.create().fromJson(fixture, SearchIssues.class); - assertSearchIssues(search); + assertSearchIssues(search, 35802); + } + + @Test + public void testDeserializationWithLargeIssueId() throws IOException { + final String fixture = + Resources.toString(getResource(this.getClass(), "issues-with-large-id.json"), defaultCharset()); + + final SearchIssues search = Json.create().fromJson(fixture, SearchIssues.class); + assertSearchIssues(search, 2147534768L); } }