Files
Umbraco-CMS/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Models/CultureImpactTests.cs
Mole 3846c75cc6 Hotfix: Move allow edit invariant from non default setting to content settings (#12960)
* Use ContentSettings instead of SecuritySettings for AllowEditInvariantFromNonDefault

* Make it backwards compatible
2022-09-07 14:38:54 +02:00

198 lines
6.8 KiB
C#

// Copyright (c) Umbraco.
// See LICENSE for more details.
using Moq;
using NUnit.Framework;
using Umbraco.Cms.Core.Configuration.Models;
using Umbraco.Cms.Core.Models;
using Umbraco.Cms.Core.Services;
using Umbraco.Cms.Tests.Common;
namespace Umbraco.Cms.Tests.UnitTests.Umbraco.Core.Models;
[TestFixture]
public class CultureImpactTests
{
private CultureImpactFactory BasicImpactFactory => createCultureImpactService();
[Test]
public void Get_Culture_For_Invariant_Errors()
{
var result = BasicImpactFactory.GetCultureForInvariantErrors(
Mock.Of<IContent>(x => x.Published == true),
new[] { "en-US", "fr-FR" },
"en-US");
Assert.AreEqual("en-US", result); // default culture is being saved so use it
result = BasicImpactFactory.GetCultureForInvariantErrors(
Mock.Of<IContent>(x => x.Published == false),
new[] { "fr-FR" },
"en-US");
Assert.AreEqual("fr-FR",
result); // default culture not being saved with not published version, use the first culture being saved
result = BasicImpactFactory.GetCultureForInvariantErrors(
Mock.Of<IContent>(x => x.Published == true),
new[] { "fr-FR" },
"en-US");
Assert.AreEqual(null, result); // default culture not being saved with published version, use null
}
[Test]
public void All_Cultures()
{
var impact = BasicImpactFactory.ImpactAll();
Assert.AreEqual(impact.Culture, "*");
Assert.IsTrue(impact.ImpactsInvariantProperties);
Assert.IsFalse(impact.ImpactsAlsoInvariantProperties);
Assert.IsFalse(impact.ImpactsOnlyInvariantCulture);
Assert.IsFalse(impact.ImpactsExplicitCulture);
Assert.IsTrue(impact.ImpactsAllCultures);
Assert.IsFalse(impact.ImpactsOnlyDefaultCulture);
}
[Test]
public void Invariant_Culture()
{
var impact = BasicImpactFactory.ImpactInvariant();
Assert.AreEqual(impact.Culture, null);
Assert.IsTrue(impact.ImpactsInvariantProperties);
Assert.IsFalse(impact.ImpactsAlsoInvariantProperties);
Assert.IsTrue(impact.ImpactsOnlyInvariantCulture);
Assert.IsFalse(impact.ImpactsExplicitCulture);
Assert.IsFalse(impact.ImpactsAllCultures);
Assert.IsFalse(impact.ImpactsOnlyDefaultCulture);
}
[Test]
public void Explicit_Default_Culture()
{
var impact = BasicImpactFactory.ImpactExplicit("en-US", true);
Assert.AreEqual(impact.Culture, "en-US");
Assert.IsTrue(impact.ImpactsInvariantProperties);
Assert.IsTrue(impact.ImpactsAlsoInvariantProperties);
Assert.IsFalse(impact.ImpactsOnlyInvariantCulture);
Assert.IsTrue(impact.ImpactsExplicitCulture);
Assert.IsFalse(impact.ImpactsAllCultures);
Assert.IsTrue(impact.ImpactsOnlyDefaultCulture);
}
[Test]
public void Explicit_NonDefault_Culture()
{
var impact = BasicImpactFactory.ImpactExplicit("en-US", false);
Assert.AreEqual(impact.Culture, "en-US");
Assert.IsFalse(impact.ImpactsInvariantProperties);
Assert.IsFalse(impact.ImpactsAlsoInvariantProperties);
Assert.IsFalse(impact.ImpactsOnlyInvariantCulture);
Assert.IsTrue(impact.ImpactsExplicitCulture);
Assert.IsFalse(impact.ImpactsAllCultures);
Assert.IsFalse(impact.ImpactsOnlyDefaultCulture);
}
[Test]
public void TryCreate_Explicit_Default_Culture()
{
var success =
BasicImpactFactory.TryCreate("en-US", true, ContentVariation.Culture, false, false, out var impact);
Assert.IsTrue(success);
Assert.IsNotNull(impact);
Assert.AreEqual(impact.Culture, "en-US");
Assert.IsTrue(impact.ImpactsInvariantProperties);
Assert.IsTrue(impact.ImpactsAlsoInvariantProperties);
Assert.IsFalse(impact.ImpactsOnlyInvariantCulture);
Assert.IsTrue(impact.ImpactsExplicitCulture);
Assert.IsFalse(impact.ImpactsAllCultures);
Assert.IsTrue(impact.ImpactsOnlyDefaultCulture);
}
[Test]
public void TryCreate_Explicit_NonDefault_Culture()
{
var success =
BasicImpactFactory.TryCreate("en-US", false, ContentVariation.Culture, false, false, out var impact);
Assert.IsTrue(success);
Assert.IsNotNull(impact);
Assert.AreEqual(impact.Culture, "en-US");
Assert.IsFalse(impact.ImpactsInvariantProperties);
Assert.IsFalse(impact.ImpactsAlsoInvariantProperties);
Assert.IsFalse(impact.ImpactsOnlyInvariantCulture);
Assert.IsTrue(impact.ImpactsExplicitCulture);
Assert.IsFalse(impact.ImpactsAllCultures);
Assert.IsFalse(impact.ImpactsOnlyDefaultCulture);
}
[Test]
public void TryCreate_AllCultures_For_Invariant()
{
var success = BasicImpactFactory.TryCreate("*", false, ContentVariation.Nothing, false, false, out var impact);
Assert.IsTrue(success);
Assert.IsNotNull(impact);
Assert.AreEqual(impact.Culture, null);
Assert.AreSame(BasicImpactFactory.ImpactInvariant(), impact);
}
[Test]
public void TryCreate_AllCultures_For_Variant()
{
var success = BasicImpactFactory.TryCreate("*", false, ContentVariation.Culture, false, false, out var impact);
Assert.IsTrue(success);
Assert.IsNotNull(impact);
Assert.AreEqual(impact.Culture, "*");
Assert.AreSame(BasicImpactFactory.ImpactAll(), impact);
}
[Test]
public void TryCreate_Invariant_For_Variant()
{
var success = BasicImpactFactory.TryCreate(null, false, ContentVariation.Culture, false, false, out var impact);
Assert.IsFalse(success);
}
[Test]
public void TryCreate_Invariant_For_Invariant()
{
var success = BasicImpactFactory.TryCreate(null, false, ContentVariation.Nothing, false, false, out var impact);
Assert.IsTrue(success);
Assert.AreSame(BasicImpactFactory.ImpactInvariant(), impact);
}
[Test]
[TestCase(true)]
[TestCase(false)]
public void Edit_Invariant_From_Non_Default_Impacts_Invariant_Properties(bool allowEditInvariantFromNonDefault)
{
var sut = createCultureImpactService(new ContentSettings
{
AllowEditInvariantFromNonDefault = allowEditInvariantFromNonDefault
});
var impact = sut.ImpactExplicit("da", false);
Assert.AreEqual(allowEditInvariantFromNonDefault, impact.ImpactsAlsoInvariantProperties);
}
private CultureImpactFactory createCultureImpactService(ContentSettings contentSettings = null)
{
contentSettings ??= new ContentSettings { AllowEditInvariantFromNonDefault = false, };
return new CultureImpactFactory(new TestOptionsMonitor<ContentSettings>(contentSettings));
}
}