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 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"));
		}
		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);
		}