Move extension method to actual interface with default implementation

This commit is contained in:
Zeegaan
2022-07-06 12:47:58 +02:00
parent c94ee7c1ec
commit 49cc2bce79
4 changed files with 37 additions and 64 deletions

View File

@@ -1,22 +0,0 @@
using Umbraco.Cms.Core.Models.ContentEditing;
using Umbraco.Cms.Core.Models.Membership;
namespace Umbraco.Cms.Core.Extensions;
public static class ReadOnlyUserGroupExtensions
{
/// <summary>
/// Checks if a readonly user group has access to a given language
/// </summary>
/// <remarks> If allowed languages on the user group is empty, it means that we have access to all languages, and thus have access to the language</remarks>
public static bool HasAccessToLanguage(this IReadOnlyUserGroup readOnlyUserGroup, int languageId)
{
if (readOnlyUserGroup.AllowedLanguages.Any() is false || readOnlyUserGroup.AllowedLanguages.Contains(languageId))
{
return true;
}
return false;
}
}

View File

@@ -32,4 +32,6 @@ public interface IReadOnlyUserGroup
IEnumerable<string> AllowedSections { get; }
IEnumerable<int> AllowedLanguages => Enumerable.Empty<int>();
public bool HasAccessToLanguage( int languageId) => AllowedLanguages.Any() is false || AllowedLanguages.Contains(languageId);
}

View File

@@ -1,42 +0,0 @@
using NUnit.Framework;
using Umbraco.Cms.Core.Extensions;
using Umbraco.Cms.Core.Models.Membership;
using Umbraco.Cms.Tests.UnitTests.Umbraco.Core.ShortStringHelper;
namespace Umbraco.Cms.Tests.UnitTests.Umbraco.Core.Extensions;
[TestFixture]
public class ReadOnlyUserGroupExtensions
{
private static int _swedishLanguageId = 1;
private static int _danishLanguageId = 2;
private static int _germanLanguageId = 3 ;
[Test]
public void CanCheckIfUserHasAccessToLanguage()
{
var userGrp = new UserGroup(new MockShortStringHelper());
userGrp.AddAllowedLanguage(_swedishLanguageId);
userGrp.AddAllowedLanguage(_danishLanguageId);
Assert.Multiple(() =>
{
Assert.IsTrue(userGrp.HasAccessToLanguage(_swedishLanguageId));
Assert.IsTrue(userGrp.HasAccessToLanguage(_danishLanguageId));
Assert.IsFalse(userGrp.HasAccessToLanguage(_germanLanguageId));
});
}
[Test]
public void CheckIfAllowedLanugagesIsEmptyMeansAccessToAllLanguages()
{
var userGrp = new UserGroup(new MockShortStringHelper());
Assert.Multiple(() =>
{
Assert.IsTrue(userGrp.HasAccessToLanguage(_swedishLanguageId));
Assert.IsTrue(userGrp.HasAccessToLanguage(_danishLanguageId));
Assert.IsTrue(userGrp.HasAccessToLanguage(_germanLanguageId));
});
}
}

View File

@@ -9,12 +9,17 @@ using NUnit.Framework;
using Umbraco.Cms.Core.Models.Membership;
using Umbraco.Cms.Tests.Common.Builders;
using Umbraco.Cms.Tests.Common.Builders.Extensions;
using Umbraco.Cms.Tests.UnitTests.Umbraco.Core.ShortStringHelper;
namespace Umbraco.Cms.Tests.UnitTests.Umbraco.Core.Models;
[TestFixture]
public class UserGroupTests
{
private static int _swedishLanguageId = 1;
private static int _danishLanguageId = 2;
private static int _germanLanguageId = 3 ;
[SetUp]
public void SetUp() => _builder = new UserGroupBuilder();
@@ -51,6 +56,36 @@ public class UserGroupTests
Debug.Print(json);
}
[Test]
public void CanCheckIfUserHasAccessToLanguage()
{
var userGrp = new UserGroup(new MockShortStringHelper());
userGrp.AddAllowedLanguage(_swedishLanguageId);
userGrp.AddAllowedLanguage(_danishLanguageId);
IReadOnlyUserGroup grp = userGrp;
Assert.Multiple(() =>
{
Assert.IsTrue(grp.HasAccessToLanguage(_swedishLanguageId));
Assert.IsTrue(grp.HasAccessToLanguage(_danishLanguageId));
Assert.IsFalse(grp.HasAccessToLanguage(_germanLanguageId));
});
}
[Test]
public void CheckIfAllowedLanugagesIsEmptyMeansAccessToAllLanguages()
{
IReadOnlyUserGroup userGrp = new UserGroup(new MockShortStringHelper());
Assert.Multiple(() =>
{
Assert.IsTrue(userGrp.HasAccessToLanguage(_swedishLanguageId));
Assert.IsTrue(userGrp.HasAccessToLanguage(_danishLanguageId));
Assert.IsTrue(userGrp.HasAccessToLanguage(_germanLanguageId));
});
}
private IUserGroup Build() =>
_builder
.WithId(3)