public void GivenAGitHubUrl_ThenReturnsGitHubProvider(
            string remoteUrl,
            bool forceGitHub,
            bool expectGitHub,
            string host       = null,
            string user       = null,
            string repository = null)
        {
            IGitHubRemoteParameters     makerCalledWith = null;
            IGitHubRemoteWebUrlProvider providerMock    = Mock.Of <IGitHubRemoteWebUrlProvider>();
            int makerCalledTimes = 0;

            IGitHubRemoteWebUrlProvider GitHubProviderMaker(IGitHubRemoteParameters gitHubRemoteParameters)
            {
                makerCalledWith = gitHubRemoteParameters;
                makerCalledTimes++;
                return(providerMock);
            }

            IRemoteWebUrlProviderFactory f = new RemoteWebUrlProviderFactory(GitHubProviderMaker);

            // Act.
            IGitHubRemoteWebUrlProvider providerReturned =
                f.CreateUrlProvider(remoteUrl, forceGitHub) as IGitHubRemoteWebUrlProvider;

            // Verify.
            if (expectGitHub)
            {
                Assert.NotNull(providerReturned);
                Assert.Same(providerMock, providerReturned);
                Assert.Equal(1, makerCalledTimes);
                Assert.Equal(host, makerCalledWith.Server);
                Assert.Equal(user, makerCalledWith.User);
                Assert.Equal(repository, makerCalledWith.Repository);
            }
            else
            {
                Assert.Null(providerReturned);
                Assert.Equal(0, makerCalledTimes);
            }
        }
예제 #2
0
 public GitHubRemoteWebUrlProvider(IGitHubRemoteParameters parameters, ILogger <GitHubRemoteWebUrlProvider> log)
 {
     _baseUrl = string.Format(@"https://{0}/{1}/{2}", parameters.Server, parameters.User, parameters.Repository);
     _log     = log;
 }