public async Task CreatePullRequestAsync_CreatesDestinationBranch()
        {
            var classroom  = GetClassroom();
            var project    = GetProject(classroom);
            var user       = GetUser(classroom);
            var checkpoint = GetCheckpoint(project);
            var commit     = GetCommit(user, project);

            var repoClient        = GetMockRepositoryClient();
            var submissionCreator = new SubmissionCreator(repoClient.Object);

            await submissionCreator.CreatePullRequestAsync(commit, checkpoint);

            repoClient.Verify(GetCreateBranchExpression("Checkpoint1", "Commit1"), Times.Once);
        }
        public async Task CreatePullRequestAsync_CreatesPullRequest()
        {
            var classroom  = GetClassroom();
            var project    = GetProject(classroom);
            var user       = GetUser(classroom);
            var checkpoint = GetCheckpoint(project);
            var commit     = GetCommit(user, project);

            var repoClient        = GetMockRepositoryClient(pullRequestId: 123);
            var submissionCreator = new SubmissionCreator(repoClient.Object);

            var result = await submissionCreator.CreatePullRequestAsync(commit, checkpoint);

            repoClient.Verify(GetCreatePullRequestExpression("Checkpoint1Source", "Checkpoint1"), Times.Once);

            Assert.Equal(123, result);
        }
        public async Task GetSubmissionCandidatesAsync_ReturnsCandidates()
        {
            var classroom = GetClassroom();
            var project   = GetProject(classroom);
            var user      = GetUser(classroom);

            var repoClient        = GetMockRepositoryClient();
            var submissionCreator = new SubmissionCreator(repoClient.Object);

            var results = await submissionCreator.GetSubmissionCandidatesAsync
                          (
                project,
                user
                          );

            Assert.Equal(2, results.Count);
            Assert.True(results.Contains("Commit2"));
            Assert.True(results.Contains("Commit3"));
        }