Skip to content

Commit 9337023

Browse files
committed
Update Tests to check for lazy loading and refresh
1 parent e088967 commit 9337023

27 files changed

Lines changed: 648 additions & 1720 deletions

File tree

src/test/java/org/kohsuke/github/GHPullRequestTest.java

Lines changed: 34 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -132,22 +132,47 @@ public void testPullRequestTeamReviewRequests() throws Exception {
132132
GHTeam testTeam = testOrg.getTeamBySlug("dummy-team");
133133

134134
p.requestTeamReviewers(Collections.singletonList(testTeam));
135+
136+
int baseRequestCount = mockGitHub.getRequestCount();
135137
p.refresh();
136-
assertFalse(p.getRequestedTeams().isEmpty());
138+
assertThat("We should not eagerly load organizations for teams",
139+
mockGitHub.getRequestCount() - baseRequestCount , equalTo(1));
140+
assertThat(p.getRequestedTeams().size(), equalTo(1));
141+
assertThat("We should not eagerly load organizations for teams",
142+
mockGitHub.getRequestCount() - baseRequestCount , equalTo(1));
143+
assertThat("Org should be queried for automatically if asked for",
144+
p.getRequestedTeams().get(0).getOrganization(), notNullValue());
145+
assertThat("Request count should show lazy load occurred",
146+
mockGitHub.getRequestCount() - baseRequestCount , equalTo(2));
137147
}
138148

149+
@Test
139150
public void mergeCommitSHA() throws Exception {
140151
String name = "mergeCommitSHA";
141-
GHPullRequest p = getRepository().createPullRequest(name, "test/mergeable_branch", "master", "## test");
142-
p.getMergeable();
143-
// mergeability computation takes time. give it more chance
144-
Thread.sleep(1000);
145-
for (int i = 0; i < 10; i++) {
146-
GHPullRequest updated = getRepository().getPullRequest(p.getNumber());
147-
if (updated.getMergeable() && updated.getMergeCommitSha() != null) {
152+
GHRepository repo = getRepository();
153+
GHPullRequest p = repo.createPullRequest(name, "test/mergeable_branch", "master", "## test");
154+
int baseRequestCount = mockGitHub.getRequestCount();
155+
assertThat(p.getMergeableNoRefresh(), nullValue());
156+
assertThat("Used existing value",
157+
mockGitHub.getRequestCount() - baseRequestCount , equalTo(0));
158+
159+
// mergeability computation takes time, this should still be null immediately after creation
160+
assertThat(p.getMergeable(), nullValue());
161+
assertThat("Asked for PR information",
162+
mockGitHub.getRequestCount() - baseRequestCount , equalTo(1));
163+
164+
for (int i = 2; i <= 10; i++) {
165+
if (Boolean.TRUE.equals(p.getMergeable()) && p.getMergeCommitSha() != null) {
166+
assertThat("Asked for PR information",
167+
mockGitHub.getRequestCount() - baseRequestCount , equalTo(i));
168+
148169
// make sure commit exists
149-
GHCommit commit = getRepository().getCommit(updated.getMergeCommitSha());
170+
GHCommit commit = repo.getCommit(p.getMergeCommitSha());
150171
assertNotNull(commit);
172+
173+
assertThat("Asked for PR information",
174+
mockGitHub.getRequestCount() - baseRequestCount , equalTo(i + 1));
175+
151176
return;
152177
}
153178

src/test/java/org/kohsuke/github/GHTeamTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,4 +30,6 @@ public void testSetDescription() throws IOException {
3030
team = gitHub.getOrganization(GITHUB_API_TEST_ORG).getTeamBySlug(teamSlug);
3131
assertEquals(description, team.getDescription());
3232
}
33+
34+
3335
}

src/test/java/org/kohsuke/github/extras/OkHttpConnectorTest.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,7 @@ public void OkHttpConnector_Cache_MaxAgeDefault_Zero() throws Exception {
215215
private void checkRequestAndLimit(int networkRequestCount, int rateLimitUsed) throws IOException {
216216
GHRateLimit rateLimitAfter = gitHub.rateLimit();
217217
assertThat("Request Count",
218-
getRequestCount(),
218+
mockGitHub.getRequestCount(),
219219
is(networkRequestCount + userRequestCount));
220220

221221
// Rate limit must be under this value, but if it wiggles we don't care
@@ -225,10 +225,6 @@ private void checkRequestAndLimit(int networkRequestCount, int rateLimitUsed) th
225225

226226
}
227227

228-
private int getRequestCount() {
229-
return mockGitHub.apiServer().countRequestsMatching(RequestPatternBuilder.allRequests().build()).getCount();
230-
}
231-
232228
private OkHttpClient createClient(boolean useCache) throws IOException {
233229
OkHttpClient client = new OkHttpClient();
234230

src/test/java/org/kohsuke/github/junit/GitHubWireMockRule.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import com.github.tomakehurst.wiremock.extension.Parameters;
1010
import com.github.tomakehurst.wiremock.extension.ResponseTransformer;
1111
import com.github.tomakehurst.wiremock.http.*;
12+
import com.github.tomakehurst.wiremock.matching.RequestPatternBuilder;
1213
import com.github.tomakehurst.wiremock.verification.*;
1314
import com.google.gson.*;
1415
import org.junit.rules.MethodRule;
@@ -118,6 +119,15 @@ protected void after() {
118119
}
119120
}
120121

122+
public int getRequestCount() {
123+
return getRequestCount(apiServer());
124+
}
125+
126+
public static int getRequestCount(WireMockServer server) {
127+
return server.countRequestsMatching(RequestPatternBuilder.allRequests().build()).getCount();
128+
}
129+
130+
121131
private void formatJsonFiles(Path path) {
122132
// The more consistent we can make the json output the more meaningful it will be.
123133
Gson g = new Gson().newBuilder().serializeNulls().disableHtmlEscaping().setPrettyPrinting()

src/test/resources/org/kohsuke/github/GHPullRequestTest/wiremock/mergeCommitSHA/__files/orgs_github-api-test-org-9a6723ee-af32-469d-a26a-5f8eca5da1fb.json renamed to src/test/resources/org/kohsuke/github/GHPullRequestTest/wiremock/mergeCommitSHA/__files/orgs_github-api-test-org-e3ff360d-d2e8-48a3-aaa4-38a5acd11580.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
"is_verified": false,
1515
"has_organization_projects": true,
1616
"has_repository_projects": true,
17-
"public_repos": 9,
17+
"public_repos": 10,
1818
"public_gists": 0,
1919
"followers": 0,
2020
"following": 0,
@@ -35,7 +35,7 @@
3535
"name": "free",
3636
"space": 976562499,
3737
"private_repos": 0,
38-
"filled_seats": 3,
38+
"filled_seats": 5,
3939
"seats": 0
4040
}
4141
}

0 commit comments

Comments
 (0)