From c283cc498f2c2a54c3a0f83872a9ce907cf2b82a Mon Sep 17 00:00:00 2001
From: Nikolaj Geisle <70372949+Zeegaan@users.noreply.github.com>
Date: Tue, 21 Jun 2022 08:45:33 +0200
Subject: [PATCH] Start work on integration tests
---
.../Extensions/ReadOnlyUserGroupExtensions.cs | 4 +--
.../Models/Mapping/ContentVariantMapper.cs | 2 +-
.../ReadOnlyUserGroupExtensionsTests.cs | 30 +++++++++++++++++++
3 files changed, 33 insertions(+), 3 deletions(-)
create mode 100644 tests/Umbraco.Tests.Integration/Umbraco.Core/Extensions/ReadOnlyUserGroupExtensionsTests.cs
diff --git a/src/Umbraco.Core/Extensions/ReadOnlyUserGroupExtensions.cs b/src/Umbraco.Core/Extensions/ReadOnlyUserGroupExtensions.cs
index 10d2317c57..fc5aa51195 100644
--- a/src/Umbraco.Core/Extensions/ReadOnlyUserGroupExtensions.cs
+++ b/src/Umbraco.Core/Extensions/ReadOnlyUserGroupExtensions.cs
@@ -9,10 +9,10 @@ public static class ReadOnlyUserGroupExtensions
/// Checks if a readonly user group has access to a given language
///
/// 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
- public static bool HasAccessToLanguage(this IReadOnlyUserGroup readOnlyUserGroup, Language? language)
+ public static bool HasAccessToLanguage(this IReadOnlyUserGroup readOnlyUserGroup, int languageId)
{
- if (readOnlyUserGroup.AllowedLanguages.Any() is false || (language is not null && readOnlyUserGroup.AllowedLanguages.Contains(language.Id)))
+ if (readOnlyUserGroup.AllowedLanguages.Any() is false || readOnlyUserGroup.AllowedLanguages.Contains(languageId))
{
return true;
}
diff --git a/src/Umbraco.Core/Models/Mapping/ContentVariantMapper.cs b/src/Umbraco.Core/Models/Mapping/ContentVariantMapper.cs
index dc10549e9c..4bab057cbe 100644
--- a/src/Umbraco.Core/Models/Mapping/ContentVariantMapper.cs
+++ b/src/Umbraco.Core/Models/Mapping/ContentVariantMapper.cs
@@ -235,7 +235,7 @@ public class ContentVariantMapper
}
}
- if (group.HasAccessToLanguage(variantDisplay.Language))
+ if (variantDisplay.Language is not null && group.HasAccessToLanguage(variantDisplay.Language.Id))
{
hasAccess = true;
break;
diff --git a/tests/Umbraco.Tests.Integration/Umbraco.Core/Extensions/ReadOnlyUserGroupExtensionsTests.cs b/tests/Umbraco.Tests.Integration/Umbraco.Core/Extensions/ReadOnlyUserGroupExtensionsTests.cs
new file mode 100644
index 0000000000..f2463ce409
--- /dev/null
+++ b/tests/Umbraco.Tests.Integration/Umbraco.Core/Extensions/ReadOnlyUserGroupExtensionsTests.cs
@@ -0,0 +1,30 @@
+using NUnit.Framework;
+using Umbraco.Cms.Core.Extensions;
+using Umbraco.Cms.Core.Models;
+using Umbraco.Cms.Core.Models.Membership;
+using Umbraco.Cms.Core.Services;
+using Umbraco.Cms.Core.Strings;
+using Umbraco.Cms.Tests.Common.Testing;
+using Umbraco.Cms.Tests.Integration.Testing;
+
+namespace Umbraco.Cms.Tests.Integration.Umbraco.Core.Extensions;
+
+[TestFixture]
+[UmbracoTest(Database = UmbracoTestOptions.Database.NewSchemaPerFixture)]
+public class ReadOnlyUserGroupExtensionsTests : UmbracoIntegrationTest
+{
+ private ILocalizationService LocalizationService => GetRequiredService();
+
+ private IShortStringHelper ShortStringHelper => GetRequiredService();
+
+ [Test]
+ public void CanIfUserHasAccessToLanguage()
+ {
+ var swe = new Language("sv-SE", "Swedish");
+ LocalizationService.Save(swe);
+ var userGrp = new UserGroup(ShortStringHelper);
+ userGrp.AddAllowedLanguage(swe.Id);
+
+ Assert.IsTrue(userGrp.HasAccessToLanguage(swe.Id));
+ }
+}