diff --git a/NGitLab.Mock.Tests/BadgesMockTests.cs b/NGitLab.Mock.Tests/BadgesMockTests.cs new file mode 100644 index 00000000..ae6e35c1 --- /dev/null +++ b/NGitLab.Mock.Tests/BadgesMockTests.cs @@ -0,0 +1,72 @@ +using NGitLab.Mock.Config; +using NGitLab.Models; +using NUnit.Framework; + +namespace NGitLab.Mock.Tests; + +public class BadgesMockTests +{ + [Test] + public void Test_project_badge_name_is_set_on_create_and_update() + { + using var server = new GitLabConfig() + .WithUser("user1", isDefault: true) + .WithProject("Test", id: 1, addDefaultUserAsMaintainer: true) + .BuildServer(); + var badgeClient = server.CreateClient().GetProjectBadgeClient(1); + + var badge = badgeClient.Create( + new BadgeCreate + { + Name = "created", + LinkUrl = "http://dummy/a.html", + ImageUrl = "http://dummy/a.png", + } + ); + Assert.That(badge.Name, Is.EqualTo("created")); + + badge = badgeClient.Update( + badge.Id, + new BadgeUpdate + { + Name = "updated", + LinkUrl = "http://dummy/b.html", + ImageUrl = "http://dummy/b.png", + } + ); + Assert.That(badge.Name, Is.EqualTo("updated")); + Assert.That(badgeClient[badge.Id].Name, Is.EqualTo("updated")); + } + + [Test] + public void Test_group_badge_name_is_set_on_create_and_update() + { + using var server = new GitLabConfig() + .WithUser("user1", isDefault: true) + .WithGroup("group1", id: 1, addDefaultUserAsMaintainer: true) + .BuildServer(); + var badgeClient = server.CreateClient().GetGroupBadgeClient(1); + + var badge = badgeClient.Create( + new BadgeCreate + { + Name = "created", + LinkUrl = "http://dummy/a.html", + ImageUrl = "http://dummy/a.png", + } + ); + Assert.That(badge.Name, Is.EqualTo("created")); + + badge = badgeClient.Update( + badge.Id, + new BadgeUpdate + { + Name = "updated", + LinkUrl = "http://dummy/b.html", + ImageUrl = "http://dummy/b.png", + } + ); + Assert.That(badge.Name, Is.EqualTo("updated")); + Assert.That(badgeClient[badge.Id].Name, Is.EqualTo("updated")); + } +} diff --git a/NGitLab.Mock/Badge.cs b/NGitLab.Mock/Badge.cs index 232aa5fe..34195e94 100644 --- a/NGitLab.Mock/Badge.cs +++ b/NGitLab.Mock/Badge.cs @@ -6,6 +6,8 @@ public sealed class Badge : GitLabObject { public long Id { get; set; } + public string Name { get; set; } + public string LinkUrl { get; set; } public string ImageUrl { get; set; } @@ -21,6 +23,7 @@ public Models.Badge ToBadgeModel() return new Models.Badge { Id = Id, + Name = Name, ImageUrl = ImageUrl, Kind = Kind, LinkUrl = LinkUrl, diff --git a/NGitLab.Mock/BadgeCollection.cs b/NGitLab.Mock/BadgeCollection.cs index 1c5b6fc5..c7aa9f76 100644 --- a/NGitLab.Mock/BadgeCollection.cs +++ b/NGitLab.Mock/BadgeCollection.cs @@ -33,9 +33,15 @@ public override void Add(Badge item) } public Badge Add(string linkUrl, string imageUrl) + { + return Add(name: null, linkUrl, imageUrl); + } + + public Badge Add(string name, string linkUrl, string imageUrl) { var badge = new Badge { + Name = name, LinkUrl = linkUrl, ImageUrl = imageUrl, }; diff --git a/NGitLab.Mock/Clients/GroupBadgeClient.cs b/NGitLab.Mock/Clients/GroupBadgeClient.cs index 99e61635..c92d84ca 100644 --- a/NGitLab.Mock/Clients/GroupBadgeClient.cs +++ b/NGitLab.Mock/Clients/GroupBadgeClient.cs @@ -48,7 +48,7 @@ public Models.Badge Create(BadgeCreate badge) using (Context.BeginOperationScope()) { - var createdBadge = GetGroup(_groupId, GroupPermission.Edit).Badges.Add(badge.LinkUrl, badge.ImageUrl); + var createdBadge = GetGroup(_groupId, GroupPermission.Edit).Badges.Add(badge.Name, badge.LinkUrl, badge.ImageUrl); return createdBadge.ToBadgeModel(); } } @@ -79,6 +79,7 @@ public Models.Badge Update(long id, BadgeUpdate badge) throw GitLabException.NotFound($"Badge with id '{id}' does not exist in group with id '{_groupId}'"); } + badgeToUpdate.Name = badge.Name; badgeToUpdate.LinkUrl = badge.LinkUrl; badgeToUpdate.ImageUrl = badge.ImageUrl; return badgeToUpdate.ToBadgeModel(); diff --git a/NGitLab.Mock/Clients/ProjectBadgeClient.cs b/NGitLab.Mock/Clients/ProjectBadgeClient.cs index adedd6b9..ba4edcc1 100644 --- a/NGitLab.Mock/Clients/ProjectBadgeClient.cs +++ b/NGitLab.Mock/Clients/ProjectBadgeClient.cs @@ -61,7 +61,7 @@ public Models.Badge Create(BadgeCreate badge) using (Context.BeginOperationScope()) { - var createdBadge = GetProject(_projectId, ProjectPermission.Edit).Badges.Add(badge.LinkUrl, badge.ImageUrl); + var createdBadge = GetProject(_projectId, ProjectPermission.Edit).Badges.Add(badge.Name, badge.LinkUrl, badge.ImageUrl); return createdBadge.ToBadgeModel(); } } @@ -92,6 +92,7 @@ public Models.Badge Update(long id, BadgeUpdate badge) throw GitLabException.NotFound($"Badge with id '{id}' does not exist in project with id '{_projectId}'"); } + badgeToUpdate.Name = badge.Name; badgeToUpdate.LinkUrl = badge.LinkUrl; badgeToUpdate.ImageUrl = badge.ImageUrl; return badgeToUpdate.ToBadgeModel(); diff --git a/NGitLab.Mock/PublicAPI.Unshipped.txt b/NGitLab.Mock/PublicAPI.Unshipped.txt index 17a0a8ef..77630c8b 100644 --- a/NGitLab.Mock/PublicAPI.Unshipped.txt +++ b/NGitLab.Mock/PublicAPI.Unshipped.txt @@ -11,6 +11,8 @@ NGitLab.Mock.Badge.ImageUrl.set -> void NGitLab.Mock.Badge.Kind.get -> NGitLab.Models.BadgeKind NGitLab.Mock.Badge.LinkUrl.get -> string NGitLab.Mock.Badge.LinkUrl.set -> void +NGitLab.Mock.Badge.Name.get -> string +NGitLab.Mock.Badge.Name.set -> void NGitLab.Mock.Badge.RenderedImageUrl.get -> string NGitLab.Mock.Badge.RenderedImageUrl.set -> void NGitLab.Mock.Badge.RenderedLinkUrl.get -> string @@ -18,6 +20,7 @@ NGitLab.Mock.Badge.RenderedLinkUrl.set -> void NGitLab.Mock.Badge.ToBadgeModel() -> NGitLab.Models.Badge NGitLab.Mock.BadgeCollection NGitLab.Mock.BadgeCollection.Add(string linkUrl, string imageUrl) -> NGitLab.Mock.Badge +NGitLab.Mock.BadgeCollection.Add(string name, string linkUrl, string imageUrl) -> NGitLab.Mock.Badge NGitLab.Mock.BadgeCollection.BadgeCollection(NGitLab.Mock.GitLabObject parent) -> void NGitLab.Mock.BadgeCollection.GetById(long id) -> NGitLab.Mock.Badge NGitLab.Mock.Change diff --git a/NGitLab.Tests/GroupBadgeClientTests.cs b/NGitLab.Tests/GroupBadgeClientTests.cs index c86e6fc5..9bde1bfb 100644 --- a/NGitLab.Tests/GroupBadgeClientTests.cs +++ b/NGitLab.Tests/GroupBadgeClientTests.cs @@ -19,22 +19,26 @@ public async Task Test_group_badges() // Create var badge = groupBadgeClient.Create(new BadgeCreate { + Name = "CreatedName", ImageUrl = "http://dummy/image.png", LinkUrl = "http://dummy/image.html", }); Assert.That(badge.Kind, Is.EqualTo(BadgeKind.Group)); + Assert.That(badge.Name, Is.EqualTo("CreatedName")); Assert.That(badge.ImageUrl, Is.EqualTo("http://dummy/image.png")); Assert.That(badge.LinkUrl, Is.EqualTo("http://dummy/image.html")); // Update badge = groupBadgeClient.Update(badge.Id, new BadgeUpdate { + Name = "DummyName", ImageUrl = "http://dummy/image_edit.png", LinkUrl = "http://dummy/image_edit.html", }); Assert.That(badge.Kind, Is.EqualTo(BadgeKind.Group)); + Assert.That(badge.Name, Is.EqualTo("DummyName")); Assert.That(badge.ImageUrl, Is.EqualTo("http://dummy/image_edit.png")); Assert.That(badge.LinkUrl, Is.EqualTo("http://dummy/image_edit.html")); diff --git a/NGitLab.Tests/ProjectBadgeClientTests.cs b/NGitLab.Tests/ProjectBadgeClientTests.cs index fa4c15e1..a11cf7f7 100644 --- a/NGitLab.Tests/ProjectBadgeClientTests.cs +++ b/NGitLab.Tests/ProjectBadgeClientTests.cs @@ -26,22 +26,26 @@ public async Task Test_project_badges() // Create var badge = projectBadgeClient.Create(new BadgeCreate { + Name = "CreatedName", ImageUrl = "http://dummy/image.png", LinkUrl = "http://dummy/image.html", }); Assert.That(badge.Kind, Is.EqualTo(BadgeKind.Project)); + Assert.That(badge.Name, Is.EqualTo("CreatedName")); Assert.That(badge.ImageUrl, Is.EqualTo("http://dummy/image.png")); Assert.That(badge.LinkUrl, Is.EqualTo("http://dummy/image.html")); // Update badge = projectBadgeClient.Update(badge.Id, new BadgeUpdate { + Name = "DummyName", ImageUrl = "http://dummy/image_edit.png", LinkUrl = "http://dummy/image_edit.html", }); Assert.That(badge.Kind, Is.EqualTo(BadgeKind.Project)); + Assert.That(badge.Name, Is.EqualTo("DummyName")); Assert.That(badge.ImageUrl, Is.EqualTo("http://dummy/image_edit.png")); Assert.That(badge.LinkUrl, Is.EqualTo("http://dummy/image_edit.html")); diff --git a/NGitLab/Models/Badge.cs b/NGitLab/Models/Badge.cs index ab722da3..a294d029 100644 --- a/NGitLab/Models/Badge.cs +++ b/NGitLab/Models/Badge.cs @@ -7,6 +7,9 @@ public class Badge [JsonPropertyName("id")] public long Id { get; set; } + [JsonPropertyName("name")] + public string Name { get; set; } + [JsonPropertyName("link_url")] public string LinkUrl { get; set; } diff --git a/NGitLab/Models/BadgeCreate.cs b/NGitLab/Models/BadgeCreate.cs index 0696c527..ff88d4d2 100644 --- a/NGitLab/Models/BadgeCreate.cs +++ b/NGitLab/Models/BadgeCreate.cs @@ -4,6 +4,9 @@ namespace NGitLab.Models; public class BadgeCreate { + [JsonPropertyName("name")] + public string Name { get; set; } + [JsonPropertyName("link_url")] public string LinkUrl { get; set; } diff --git a/NGitLab/Models/BadgeUpdate.cs b/NGitLab/Models/BadgeUpdate.cs index beed3e4d..06d6789a 100644 --- a/NGitLab/Models/BadgeUpdate.cs +++ b/NGitLab/Models/BadgeUpdate.cs @@ -4,6 +4,9 @@ namespace NGitLab.Models; public class BadgeUpdate { + [JsonPropertyName("name")] + public string Name { get; set; } + [JsonPropertyName("link_url")] public string LinkUrl { get; set; } diff --git a/NGitLab/PublicAPI/net10.0/PublicAPI.Unshipped.txt b/NGitLab/PublicAPI/net10.0/PublicAPI.Unshipped.txt index 398a4b86..17cdfba0 100644 --- a/NGitLab/PublicAPI/net10.0/PublicAPI.Unshipped.txt +++ b/NGitLab/PublicAPI/net10.0/PublicAPI.Unshipped.txt @@ -1386,6 +1386,8 @@ NGitLab.Models.Badge.Kind.get -> NGitLab.Models.BadgeKind NGitLab.Models.Badge.Kind.set -> void NGitLab.Models.Badge.LinkUrl.get -> string NGitLab.Models.Badge.LinkUrl.set -> void +NGitLab.Models.Badge.Name.get -> string +NGitLab.Models.Badge.Name.set -> void NGitLab.Models.Badge.RenderedImageUrl.get -> string NGitLab.Models.Badge.RenderedImageUrl.set -> void NGitLab.Models.Badge.RenderedLinkUrl.get -> string @@ -1396,6 +1398,8 @@ NGitLab.Models.BadgeCreate.ImageUrl.get -> string NGitLab.Models.BadgeCreate.ImageUrl.set -> void NGitLab.Models.BadgeCreate.LinkUrl.get -> string NGitLab.Models.BadgeCreate.LinkUrl.set -> void +NGitLab.Models.BadgeCreate.Name.get -> string +NGitLab.Models.BadgeCreate.Name.set -> void NGitLab.Models.BadgeKind NGitLab.Models.BadgeKind.Group = 0 -> NGitLab.Models.BadgeKind NGitLab.Models.BadgeKind.Project = 1 -> NGitLab.Models.BadgeKind @@ -1405,6 +1409,8 @@ NGitLab.Models.BadgeUpdate.ImageUrl.get -> string NGitLab.Models.BadgeUpdate.ImageUrl.set -> void NGitLab.Models.BadgeUpdate.LinkUrl.get -> string NGitLab.Models.BadgeUpdate.LinkUrl.set -> void +NGitLab.Models.BadgeUpdate.Name.get -> string +NGitLab.Models.BadgeUpdate.Name.set -> void NGitLab.Models.Blame NGitLab.Models.Blame.Blame() -> void NGitLab.Models.Blame.Commit.get -> NGitLab.Models.BlameCommit diff --git a/NGitLab/PublicAPI/net472/PublicAPI.Unshipped.txt b/NGitLab/PublicAPI/net472/PublicAPI.Unshipped.txt index 371bc878..84431238 100644 --- a/NGitLab/PublicAPI/net472/PublicAPI.Unshipped.txt +++ b/NGitLab/PublicAPI/net472/PublicAPI.Unshipped.txt @@ -1387,6 +1387,8 @@ NGitLab.Models.Badge.Kind.get -> NGitLab.Models.BadgeKind NGitLab.Models.Badge.Kind.set -> void NGitLab.Models.Badge.LinkUrl.get -> string NGitLab.Models.Badge.LinkUrl.set -> void +NGitLab.Models.Badge.Name.get -> string +NGitLab.Models.Badge.Name.set -> void NGitLab.Models.Badge.RenderedImageUrl.get -> string NGitLab.Models.Badge.RenderedImageUrl.set -> void NGitLab.Models.Badge.RenderedLinkUrl.get -> string @@ -1397,6 +1399,8 @@ NGitLab.Models.BadgeCreate.ImageUrl.get -> string NGitLab.Models.BadgeCreate.ImageUrl.set -> void NGitLab.Models.BadgeCreate.LinkUrl.get -> string NGitLab.Models.BadgeCreate.LinkUrl.set -> void +NGitLab.Models.BadgeCreate.Name.get -> string +NGitLab.Models.BadgeCreate.Name.set -> void NGitLab.Models.BadgeKind NGitLab.Models.BadgeKind.Group = 0 -> NGitLab.Models.BadgeKind NGitLab.Models.BadgeKind.Project = 1 -> NGitLab.Models.BadgeKind @@ -1406,6 +1410,8 @@ NGitLab.Models.BadgeUpdate.ImageUrl.get -> string NGitLab.Models.BadgeUpdate.ImageUrl.set -> void NGitLab.Models.BadgeUpdate.LinkUrl.get -> string NGitLab.Models.BadgeUpdate.LinkUrl.set -> void +NGitLab.Models.BadgeUpdate.Name.get -> string +NGitLab.Models.BadgeUpdate.Name.set -> void NGitLab.Models.Blame NGitLab.Models.Blame.Blame() -> void NGitLab.Models.Blame.Commit.get -> NGitLab.Models.BlameCommit diff --git a/NGitLab/PublicAPI/net8.0/PublicAPI.Unshipped.txt b/NGitLab/PublicAPI/net8.0/PublicAPI.Unshipped.txt index 398a4b86..17cdfba0 100644 --- a/NGitLab/PublicAPI/net8.0/PublicAPI.Unshipped.txt +++ b/NGitLab/PublicAPI/net8.0/PublicAPI.Unshipped.txt @@ -1386,6 +1386,8 @@ NGitLab.Models.Badge.Kind.get -> NGitLab.Models.BadgeKind NGitLab.Models.Badge.Kind.set -> void NGitLab.Models.Badge.LinkUrl.get -> string NGitLab.Models.Badge.LinkUrl.set -> void +NGitLab.Models.Badge.Name.get -> string +NGitLab.Models.Badge.Name.set -> void NGitLab.Models.Badge.RenderedImageUrl.get -> string NGitLab.Models.Badge.RenderedImageUrl.set -> void NGitLab.Models.Badge.RenderedLinkUrl.get -> string @@ -1396,6 +1398,8 @@ NGitLab.Models.BadgeCreate.ImageUrl.get -> string NGitLab.Models.BadgeCreate.ImageUrl.set -> void NGitLab.Models.BadgeCreate.LinkUrl.get -> string NGitLab.Models.BadgeCreate.LinkUrl.set -> void +NGitLab.Models.BadgeCreate.Name.get -> string +NGitLab.Models.BadgeCreate.Name.set -> void NGitLab.Models.BadgeKind NGitLab.Models.BadgeKind.Group = 0 -> NGitLab.Models.BadgeKind NGitLab.Models.BadgeKind.Project = 1 -> NGitLab.Models.BadgeKind @@ -1405,6 +1409,8 @@ NGitLab.Models.BadgeUpdate.ImageUrl.get -> string NGitLab.Models.BadgeUpdate.ImageUrl.set -> void NGitLab.Models.BadgeUpdate.LinkUrl.get -> string NGitLab.Models.BadgeUpdate.LinkUrl.set -> void +NGitLab.Models.BadgeUpdate.Name.get -> string +NGitLab.Models.BadgeUpdate.Name.set -> void NGitLab.Models.Blame NGitLab.Models.Blame.Blame() -> void NGitLab.Models.Blame.Commit.get -> NGitLab.Models.BlameCommit diff --git a/NGitLab/PublicAPI/netstandard2.0/PublicAPI.Unshipped.txt b/NGitLab/PublicAPI/netstandard2.0/PublicAPI.Unshipped.txt index 371bc878..84431238 100644 --- a/NGitLab/PublicAPI/netstandard2.0/PublicAPI.Unshipped.txt +++ b/NGitLab/PublicAPI/netstandard2.0/PublicAPI.Unshipped.txt @@ -1387,6 +1387,8 @@ NGitLab.Models.Badge.Kind.get -> NGitLab.Models.BadgeKind NGitLab.Models.Badge.Kind.set -> void NGitLab.Models.Badge.LinkUrl.get -> string NGitLab.Models.Badge.LinkUrl.set -> void +NGitLab.Models.Badge.Name.get -> string +NGitLab.Models.Badge.Name.set -> void NGitLab.Models.Badge.RenderedImageUrl.get -> string NGitLab.Models.Badge.RenderedImageUrl.set -> void NGitLab.Models.Badge.RenderedLinkUrl.get -> string @@ -1397,6 +1399,8 @@ NGitLab.Models.BadgeCreate.ImageUrl.get -> string NGitLab.Models.BadgeCreate.ImageUrl.set -> void NGitLab.Models.BadgeCreate.LinkUrl.get -> string NGitLab.Models.BadgeCreate.LinkUrl.set -> void +NGitLab.Models.BadgeCreate.Name.get -> string +NGitLab.Models.BadgeCreate.Name.set -> void NGitLab.Models.BadgeKind NGitLab.Models.BadgeKind.Group = 0 -> NGitLab.Models.BadgeKind NGitLab.Models.BadgeKind.Project = 1 -> NGitLab.Models.BadgeKind @@ -1406,6 +1410,8 @@ NGitLab.Models.BadgeUpdate.ImageUrl.get -> string NGitLab.Models.BadgeUpdate.ImageUrl.set -> void NGitLab.Models.BadgeUpdate.LinkUrl.get -> string NGitLab.Models.BadgeUpdate.LinkUrl.set -> void +NGitLab.Models.BadgeUpdate.Name.get -> string +NGitLab.Models.BadgeUpdate.Name.set -> void NGitLab.Models.Blame NGitLab.Models.Blame.Blame() -> void NGitLab.Models.Blame.Commit.get -> NGitLab.Models.BlameCommit