Beispiel #1
0
        public IRemoteWebUrlProvider CreateUrlProvider(string remoteUrl, bool forceGitHub = false)
        {
            Regex r = new Regex(RemoteRegex);
            Match m = r.Match(remoteUrl);

            if (!m.Success)
            {
                return(null);
            }

            string server = m.Groups["server"].Value;

            bool isGitHub = string.Equals(server, GitHubFqdn, StringComparison.OrdinalIgnoreCase) || forceGitHub;

            if (!isGitHub)
            {
                return(null);
            }

            string user       = m.Groups["user"].Value;
            string repository = m.Groups["repository"].Value;

            GitHubRemoteParameters      parameters     = new GitHubRemoteParameters(server, user, repository);
            IGitHubRemoteWebUrlProvider gitHubProvider = _gitHubProviderMaker(parameters);

            return(gitHubProvider);
        }
        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);
            }
        }