|
1 | | -using NGitLab.Models; |
| 1 | +using System.Linq; |
| 2 | +using System.Threading.Tasks; |
| 3 | +using NGitLab.Models; |
2 | 4 | using NUnit.Framework; |
3 | 5 |
|
4 | 6 | namespace NGitLab.Mock.Tests; |
@@ -219,4 +221,51 @@ public void Test_create_a_new_commit_on_existing_branch() |
219 | 221 | }); |
220 | 222 | Assert.That(newCommit.Message.Trim(), Is.EqualTo(commitMessage)); |
221 | 223 | } |
| 224 | + |
| 225 | + [Test] |
| 226 | + public async Task Test_commit_diff_returns_diff_information() |
| 227 | + { |
| 228 | + // Arrange |
| 229 | + using var server = new GitLabServer(); |
| 230 | + var user = server.Users.AddNew(); |
| 231 | + var project = user.Namespace.Projects.AddNew(project => project.Visibility = VisibilityLevel.Internal); |
| 232 | + var initCommit = project.Repository.Commit(user, "Initial commit"); |
| 233 | + |
| 234 | + var mainCommit = project.Repository.Commit(user, "Main commit"); |
| 235 | + |
| 236 | + project.Repository.CreateAndCheckoutBranch("to-be-merged"); |
| 237 | + project.Repository.Commit(user, "branch commit"); |
| 238 | + var mr = project.CreateMergeRequest(user, "Merge request commit", "mr description", project.DefaultBranch, "to-be-merged"); |
| 239 | + mr.Accept(user); |
| 240 | + |
| 241 | + // Act |
| 242 | + var client = server.CreateClient(user); |
| 243 | + var diff = await client.GetRepository(project.Id).CompareAsync(new(initCommit.Sha, mr.MergeCommitSha!.ToString())); |
| 244 | + |
| 245 | + using (Assert.EnterMultipleScope()) |
| 246 | + { |
| 247 | + // Assert |
| 248 | + Assert.That(diff.Diff, Is.Not.Empty); |
| 249 | + Assert.That(diff.Commits.Select(c => c.Id), Is.EqualTo([new Sha1(mainCommit.Sha), mr.MergeCommitSha])); |
| 250 | + Assert.That(diff.Commit?.Id, Is.EqualTo(mr.MergeCommitSha)); |
| 251 | + } |
| 252 | + } |
| 253 | + |
| 254 | + [Test] |
| 255 | + public async Task Test_commit_diff_same_commit_returns_empty_diff() |
| 256 | + { |
| 257 | + // Arrange |
| 258 | + using var server = new GitLabServer(); |
| 259 | + var user = server.Users.AddNew(); |
| 260 | + var project = user.Namespace.Projects.AddNew(project => project.Visibility = VisibilityLevel.Internal); |
| 261 | + var initCommit = project.Repository.Commit(user, "Initial commit"); |
| 262 | + |
| 263 | + // Act & assert |
| 264 | + var client = server.CreateClient(user); |
| 265 | + var diff = await client.GetRepository(project.Id).CompareAsync(new(initCommit.Sha, initCommit.Sha)); |
| 266 | + |
| 267 | + Assert.That(diff.Diff, Is.Empty); |
| 268 | + Assert.That(diff.Commits, Is.Empty); |
| 269 | + Assert.That(diff.Commit, Is.Null); |
| 270 | + } |
222 | 271 | } |
0 commit comments