コード例 #1
0
        public async Task ThrowsWhenNoPushableForkCanBeFound()
        {
            var fallbackFork = DefaultFork();

            var forkFinder = new GitHubForkFinder(Substitute.For <ICollaborationPlatform>(), Substitute.For <INuKeeperLogger>(), ForkMode.PreferFork);

            var fork = await forkFinder.FindPushFork("testUser", fallbackFork);

            Assert.That(fork, Is.Null);
        }
コード例 #2
0
        public async Task FallbackForkIsNotUsedWhenItIsNotPushable()
        {
            var fallbackFork     = DefaultFork();
            var fallbackRepoData = RepositoryBuilder.MakeRepository(true, false);

            var collaborationPlatform = Substitute.For <ICollaborationPlatform>();

            collaborationPlatform.GetUserRepository(fallbackFork.Owner, fallbackFork.Name)
            .Returns(fallbackRepoData);

            var forkFinder = new GitHubForkFinder(collaborationPlatform, Substitute.For <INuKeeperLogger>(), ForkMode.PreferFork);

            var fork = await forkFinder.FindPushFork("testUser", fallbackFork);

            Assert.That(fork, Is.Null);
        }
コード例 #3
0
        public async Task SingleRepoOnlyModeWillNotPreferFork()
        {
            var fallbackFork = DefaultFork();

            var userRepo = RepositoryBuilder.MakeRepository();

            var collaborationPlatform = Substitute.For <ICollaborationPlatform>();

            collaborationPlatform.GetUserRepository(Arg.Any <string>(), Arg.Any <string>())
            .Returns(userRepo);

            var forkFinder = new GitHubForkFinder(collaborationPlatform, Substitute.For <INuKeeperLogger>(), ForkMode.SingleRepositoryOnly);

            var fork = await forkFinder.FindPushFork("testUser", fallbackFork);

            Assert.That(fork, Is.EqualTo(fallbackFork));
        }
コード例 #4
0
        public async Task WhenUnsuitableUserForkIsFoundItIsNotUsed()
        {
            var fallbackFork = NoMatchFork();

            var userRepo = RepositoryBuilder.MakeRepository();

            var collaborationPlatform = Substitute.For <ICollaborationPlatform>();

            collaborationPlatform.GetUserRepository(Arg.Any <string>(), Arg.Any <string>())
            .Returns(userRepo);

            var forkFinder = new GitHubForkFinder(collaborationPlatform, Substitute.For <INuKeeperLogger>(), ForkMode.PreferFork);

            var fork = await forkFinder.FindPushFork("testUser", fallbackFork);

            Assert.That(fork, Is.EqualTo(fallbackFork));
        }
コード例 #5
0
        public async Task WhenSuitableUserForkIsFound_ThatMatchesCloneHtmlUrl_ItIsUsedOverFallback()
        {
            var fallbackFork = new ForkData(new Uri(RepositoryBuilder.ParentCloneUrl), "testOrg", "someRepo");

            var userRepo = RepositoryBuilder.MakeRepository();

            var collaborationPlatform = Substitute.For <ICollaborationPlatform>();

            collaborationPlatform.GetUserRepository(Arg.Any <string>(), Arg.Any <string>())
            .Returns(userRepo);

            var forkFinder = new GitHubForkFinder(collaborationPlatform, Substitute.For <INuKeeperLogger>(), ForkMode.PreferFork);

            var fork = await forkFinder.FindPushFork("testUser", fallbackFork);

            Assert.That(fork, Is.Not.EqualTo(fallbackFork));
            AssertForkMatchesRepo(fork, userRepo);
        }
コード例 #6
0
        public async Task SingleRepoOnlyModeWillNotUseForkWhenUpstreamIsUnsuitable()
        {
            var fallbackFork = DefaultFork();

            var collaborationPlatform = Substitute.For <ICollaborationPlatform>();

            var defaultRepo = RepositoryBuilder.MakeRepository(true, false);

            collaborationPlatform.GetUserRepository(fallbackFork.Owner, fallbackFork.Name)
            .Returns(defaultRepo);

            var userRepo = RepositoryBuilder.MakeRepository();

            collaborationPlatform.GetUserRepository("testUser", fallbackFork.Name)
            .Returns(userRepo);

            var forkFinder = new GitHubForkFinder(collaborationPlatform, Substitute.For <INuKeeperLogger>(), ForkMode.SingleRepositoryOnly);

            var fork = await forkFinder.FindPushFork("testUser", fallbackFork);

            Assert.That(fork, Is.Null);
        }
コード例 #7
0
        public async Task WhenUserForkIsNotFoundItIsCreated()
        {
            var fallbackFork = DefaultFork();

            var userRepo = RepositoryBuilder.MakeRepository();

            var collaborationPlatform = Substitute.For <ICollaborationPlatform>();

            collaborationPlatform.GetUserRepository(Arg.Any <string>(), Arg.Any <string>())
            .Returns((Repository)null);
            collaborationPlatform.MakeUserFork(Arg.Any <string>(), Arg.Any <string>())
            .Returns(userRepo);

            var forkFinder = new GitHubForkFinder(collaborationPlatform, Substitute.For <INuKeeperLogger>(), ForkMode.PreferFork);

            var actualFork = await forkFinder.FindPushFork("testUser", fallbackFork);

            await collaborationPlatform.Received(1).MakeUserFork(Arg.Any <string>(), Arg.Any <string>());

            Assert.That(actualFork, Is.Not.Null);
            Assert.That(actualFork, Is.Not.EqualTo(fallbackFork));
        }