private static GitHubAppModelService CreateTarget(
            IGitHubAppClientFactory gitHubAppClientFactory = null,
            IGitHubClient gitHubClient = null,
            IChecksClient checkClient  = null,
            IRepositoryContentsClient repositoryContentsClient = null,
            IRepositoriesClient repositoriesClient             = null,
            ICheckRunsClient checkRunsClient = null,
            ITokenGenerator tokenGenerator   = null)
        {
            if (checkRunsClient == null)
            {
                checkRunsClient = Substitute.For <ICheckRunsClient>();
            }

            if (checkClient == null)
            {
                checkClient = Substitute.For <IChecksClient>();
                checkClient.Run.Returns(checkRunsClient);
            }

            if (repositoryContentsClient == null)
            {
                repositoryContentsClient = Substitute.For <IRepositoryContentsClient>();
            }

            if (repositoriesClient == null)
            {
                repositoriesClient = Substitute.For <IRepositoriesClient>();
                repositoriesClient.Content.Returns(repositoryContentsClient);
            }

            if (gitHubClient == null)
            {
                gitHubClient = Substitute.For <IGitHubClient>();
                gitHubClient.Check.Returns(checkClient);
                gitHubClient.Repository.Returns(repositoriesClient);
            }

            if (gitHubAppClientFactory == null)
            {
                gitHubAppClientFactory = Substitute.For <IGitHubAppClientFactory>();
                gitHubAppClientFactory.CreateAppClient(Arg.Any <ITokenGenerator>()).Returns(gitHubClient);
                gitHubAppClientFactory.CreateAppClientForLoginAsync(Arg.Any <ITokenGenerator>(), Arg.Any <string>())
                .Returns(gitHubClient);
            }


            tokenGenerator = tokenGenerator ?? Substitute.For <ITokenGenerator>();

            return(new GitHubAppModelService(gitHubAppClientFactory, tokenGenerator));
        }
 public GitHubAppModelService(IGitHubAppClientFactory gitHubAppClientFactory, ITokenGenerator tokenGenerator)
 {
     _gitHubAppClientFactory = gitHubAppClientFactory;
     _tokenGenerator         = tokenGenerator;
 }