Skip to content

Commit

Permalink
Support tests of classes which have DynamicGraphQLClient in their con…
Browse files Browse the repository at this point in the history
…structor.
  • Loading branch information
holly-cummins committed Aug 11, 2022
1 parent e326390 commit 090272c
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 0 deletions.
@@ -1,5 +1,6 @@
package io.quarkiverse.githubapp.testing.dsl;

import io.smallrye.graphql.client.dynamic.api.DynamicGraphQLClient;
import org.kohsuke.github.GHIssue;
import org.kohsuke.github.GHIssueComment;
import org.kohsuke.github.GHObject;
Expand All @@ -12,6 +13,8 @@ public interface GitHubMockContext {

GitHub client(long id);

DynamicGraphQLClient graphQLClient(long id);

GHRepository repository(String id);

GHIssue issue(long id);
Expand Down
Expand Up @@ -38,6 +38,7 @@
import io.quarkiverse.githubapp.testing.mockito.internal.DefaultableMocking;
import io.quarkiverse.githubapp.testing.mockito.internal.GHEventPayloadSpyDefaultAnswer;
import io.quarkiverse.githubapp.testing.mockito.internal.GitHubMockDefaultAnswer;
import io.smallrye.graphql.client.dynamic.api.DynamicGraphQLClient;

public final class GitHubMockContextImpl implements GitHubMockContext, GitHubMockSetupContext, GitHubMockVerificationContext {

Expand All @@ -46,6 +47,7 @@ public final class GitHubMockContextImpl implements GitHubMockContext, GitHubMoc

private final List<MockMap<?, ?>> allMockMaps = new ArrayList<>();
private final MockMap<Long, GitHub> clients;
private final MockMap<Object, DynamicGraphQLClient> graphQLClients;
private final MockMap<String, GHRepository> repositories;
private final Map<Class<?>, MockMap<Long, ? extends GHObject>> nonRepositoryGHObjectMockMaps = new LinkedHashMap<>();
private final Answers defaultAnswers;
Expand All @@ -61,6 +63,7 @@ public final class GitHubMockContextImpl implements GitHubMockContext, GitHubMoc
new GitHubConnectorHttpConnectorAdapter(HttpConnector.OFFLINE), RateLimitHandler.WAIT,
AbuseLimitHandler.WAIT, null, AuthorizationProvider.ANONYMOUS)
.defaultAnswer(new GitHubMockDefaultAnswer(defaultAnswers)));
graphQLClients = new MockMap<>(DynamicGraphQLClient.class);
}

@Override
Expand All @@ -83,6 +86,12 @@ public GitHub client(long id) {
.mock();
}

@Override
public DynamicGraphQLClient graphQLClient(long id) {
return graphQLClients.getOrCreate(id)
.mock();
}

@Override
public void configFileFromClasspath(String pathInRepository, String pathInClassPath) throws IOException {
configFileFromString(pathInRepository, GitHubAppTestingContext.get().getFromClasspath(pathInClassPath));
Expand Down Expand Up @@ -143,6 +152,9 @@ void init() {

when(service.getInstallationClient(any()))
.thenAnswer(invocation -> client(invocation.getArgument(0, Long.class)));

when(service.getInstallationGraphQLClient(any()))
.thenAnswer(invocation -> graphQLClient(invocation.getArgument(0, Long.class)));
}

void reset() {
Expand Down

0 comments on commit 090272c

Please sign in to comment.