예제 #1
0
        public async Task TestRetrieveRepositories_WhenRepoRetrievalStatusIsSucceeded_DoesNotCallConnection()
        {
            var systemUnderTest = new TfProject(new TeamProject(), _tfsConnection, _logger);

            _tfsConnection.GetRepositoriesInProject(systemUnderTest).Returns(Enumerable.Empty <ITfGitRepository>());
            await systemUnderTest.RetrieveRepositories();

            Assert.That(systemUnderTest.RepositoryRetrievalStatus, Is.EqualTo(RetrievalStatus.Suceeded));
            await _tfsConnection.Received(1).GetRepositoriesInProject(systemUnderTest);

            await systemUnderTest.RetrieveRepositories();

            await _tfsConnection.Received(1).GetRepositoriesInProject(systemUnderTest);
        }
예제 #2
0
        public async Task TestRetrieveRepositories_WhenGettingReposSucceeds_SetsRepoRetrievalStatusToSucceeded()
        {
            var systemUnderTest = new TfProject(new TeamProject(), _tfsConnection, _logger);

            _tfsConnection.GetRepositoriesInProject(systemUnderTest).Returns(Enumerable.Empty <ITfGitRepository>());

            await systemUnderTest.RetrieveRepositories();

            Assert.That(systemUnderTest.RepositoryRetrievalStatus, Is.EqualTo(RetrievalStatus.Suceeded));
        }
예제 #3
0
        public async Task TestRetrieveRepositories_WhenGettingRepositoriesFailsForUnknownReason_SetsStatusToFailedReasonUnknown(Exception exception)
        {
            var systemUnderTest = new TfProject(new TeamProject(), _tfsConnection, _logger);

            _tfsConnection.GetRepositoriesInProject(systemUnderTest).Throws(exception);

            await systemUnderTest.RetrieveRepositories();

            Assert.That(systemUnderTest.RepositoryRetrievalStatus, Is.EqualTo(RetrievalStatus.FailedReasonUnknown));
        }
예제 #4
0
        public async Task TestRetrieveRepositories_WhenRepositoryRetrievalStatusIsUnstarted_CallsConnection()
        {
            var systemUnderTest = new TfProject(new TeamProject(), _tfsConnection, _logger);

            _tfsConnection.GetRepositoriesInProject(systemUnderTest).Returns(Enumerable.Empty <ITfGitRepository>());

            await systemUnderTest.RetrieveRepositories();

            await _tfsConnection.Received(1).GetRepositoriesInProject(systemUnderTest);
        }
예제 #5
0
        public async Task TestUpdateRepositories_GetsProjectRepositoriesFromServer()
        {
            var projectId       = Guid.NewGuid();
            var systemUnderTest = new TfProject(new TeamProject {
                Id = projectId
            }, _tfsConnection, _logger);

            _tfsConnection.GetRepositoriesInProject(systemUnderTest).Returns(Enumerable.Empty <ITfGitRepository>());

            await systemUnderTest.RetrieveRepositories();

            await _tfsConnection.Received().GetRepositoriesInProject(systemUnderTest);
        }
예제 #6
0
        public async Task TestRepositories_AfterUpdatingRepositories_WhenRepoFilterIsNull_ReturnsReposReturnedByServer()
        {
            var projectId       = Guid.NewGuid();
            var systemUnderTest = new TfProject(new TeamProject {
                Id = projectId
            }, _tfsConnection, _logger);
            var reposFromServer = new List <ITfGitRepository>();

            reposFromServer.Add(Substitute.For <ITfGitRepository>());
            reposFromServer.Add(Substitute.For <ITfGitRepository>());
            reposFromServer.Add(Substitute.For <ITfGitRepository>());
            _tfsConnection.GetRepositoriesInProject(systemUnderTest).Returns(reposFromServer);
            systemUnderTest.RepositoryFilter = null; // For clarity of the test

            await systemUnderTest.RetrieveRepositories();

            foreach (var repo in reposFromServer)
            {
                Assert.That(systemUnderTest.Repositories, Does.Contain(repo));
            }
        }
예제 #7
0
        public async Task TestRepositories_AfterUpdatingRepositories_WhenRepoFilterIsNotNull_AppliesFilter()
        {
            var projectId       = Guid.NewGuid();
            var systemUnderTest = new TfProject(new TeamProject {
                Id = projectId
            }, _tfsConnection, _logger);
            var includedRepos = new HashSet <ITfGitRepository>();

            includedRepos.Add(Substitute.For <ITfGitRepository>());
            includedRepos.Add(Substitute.For <ITfGitRepository>());
            includedRepos.Add(Substitute.For <ITfGitRepository>());
            var excludedRepos = new HashSet <ITfGitRepository>();

            excludedRepos.Add(Substitute.For <ITfGitRepository>());
            excludedRepos.Add(Substitute.For <ITfGitRepository>());
            var reposFromServer = new List <ITfGitRepository>();

            reposFromServer.AddRange(includedRepos);
            reposFromServer.AddRange(excludedRepos);
            _tfsConnection.GetRepositoriesInProject(systemUnderTest).Returns(reposFromServer);
            var repoFilter = Substitute.For <IRepositoryFilter>();

            repoFilter.IncludesRepo(Arg.Any <ITfGitRepository>())
            .Returns(callInfo => includedRepos.Contains(callInfo.Arg <ITfGitRepository>()));
            systemUnderTest.RepositoryFilter = repoFilter;
            await systemUnderTest.RetrieveRepositories();

            foreach (var repo in includedRepos)
            {
                Assert.That(systemUnderTest.Repositories.Contains(repo), Is.True);
            }

            foreach (var repo in excludedRepos)
            {
                Assert.That(systemUnderTest.Repositories.Contains(repo), Is.False);
            }
        }