Adds language entity changes and tests

This commit is contained in:
Shannon
2018-03-22 17:51:38 +11:00
parent d852c43559
commit b3fb23a67a
7 changed files with 79 additions and 2 deletions
@@ -0,0 +1,15 @@
namespace Umbraco.Core.Migrations.Upgrade.V_8_0_0
{
public class LanguageColumns : MigrationBase
{
protected LanguageColumns(IMigrationContext context) : base(context)
{
}
public override void Migrate()
{
Create.Column("isDefaultVariantLang").OnTable(Constants.DatabaseSchema.Tables.Language).AsBoolean().NotNullable();
Create.Column("mandatory").OnTable(Constants.DatabaseSchema.Tables.Language).AsBoolean().NotNullable();
}
}
}
@@ -1,5 +1,6 @@
namespace Umbraco.Core.Migrations.Upgrade.V_8_0_0
{
public class SuperZero : MigrationBase
{
public SuperZero(IMigrationContext context)
+10
View File
@@ -23,5 +23,15 @@ namespace Umbraco.Core.Models
/// </summary>
[IgnoreDataMember]
CultureInfo CultureInfo { get; }
/// <summary>
/// Defines if this language is the default variant language when language variants are in use
/// </summary>
bool IsDefaultVariantLanguage { get; set; }
/// <summary>
/// If true, a variant node cannot be published unless this language variant is created
/// </summary>
bool Mandatory { get; set; }
}
}
+16
View File
@@ -17,6 +17,8 @@ namespace Umbraco.Core.Models
private string _isoCode;
private string _cultureName;
private bool _isDefaultVariantLanguage;
private bool _mandatory;
public Language(string isoCode)
{
@@ -28,6 +30,8 @@ namespace Umbraco.Core.Models
{
public readonly PropertyInfo IsoCodeSelector = ExpressionHelper.GetPropertyInfo<Language, string>(x => x.IsoCode);
public readonly PropertyInfo CultureNameSelector = ExpressionHelper.GetPropertyInfo<Language, string>(x => x.CultureName);
public readonly PropertyInfo IsDefaultVariantLanguageSelector = ExpressionHelper.GetPropertyInfo<Language, bool>(x => x.IsDefaultVariantLanguage);
public readonly PropertyInfo MandatorySelector = ExpressionHelper.GetPropertyInfo<Language, bool>(x => x.Mandatory);
}
/// <summary>
@@ -55,5 +59,17 @@ namespace Umbraco.Core.Models
/// </summary>
[IgnoreDataMember]
public CultureInfo CultureInfo => CultureInfo.GetCultureInfo(IsoCode);
public bool IsDefaultVariantLanguage
{
get => _isDefaultVariantLanguage;
set => SetPropertyValueAndDetectChanges(value, ref _isDefaultVariantLanguage, Ps.Value.IsDefaultVariantLanguageSelector);
}
public bool Mandatory
{
get => _mandatory;
set => SetPropertyValueAndDetectChanges(value, ref _mandatory, Ps.Value.MandatorySelector);
}
}
}
@@ -22,5 +22,17 @@ namespace Umbraco.Core.Persistence.Dtos
[NullSetting(NullSetting = NullSettings.Null)]
[Length(100)]
public string CultureName { get; set; }
/// <summary>
/// Defines if this language is the default variant language when language variants are in use
/// </summary>
[Column("isDefaultVariantLang")]
public bool IsDefaultVariantLanguage { get; set; }
/// <summary>
/// If true, a variant node cannot be published unless this language variant is created
/// </summary>
[Column("mandatory")]
public bool Mandatory { get; set; }
}
}
@@ -8,7 +8,7 @@ namespace Umbraco.Core.Persistence.Factories
{
public ILanguage BuildEntity(LanguageDto dto)
{
var lang = new Language(dto.IsoCode) { CultureName = dto.CultureName, Id = dto.Id };
var lang = new Language(dto.IsoCode) { CultureName = dto.CultureName, Id = dto.Id, IsDefaultVariantLanguage = dto.IsDefaultVariantLanguage, Mandatory = dto.Mandatory };
// reset dirty initial properties (U4-1946)
lang.ResetDirtyProperties(false);
return lang;
@@ -16,7 +16,7 @@ namespace Umbraco.Core.Persistence.Factories
public LanguageDto BuildDto(ILanguage entity)
{
var dto = new LanguageDto { CultureName = entity.CultureName, IsoCode = entity.IsoCode };
var dto = new LanguageDto { CultureName = entity.CultureName, IsoCode = entity.IsoCode, IsDefaultVariantLanguage = entity.IsDefaultVariantLanguage, Mandatory = entity.Mandatory };
if (entity.HasIdentity)
dto.Id = short.Parse(entity.Id.ToString(CultureInfo.InvariantCulture));
@@ -219,6 +219,29 @@ namespace Umbraco.Tests.Persistence.Repositories
// Assert
Assert.That(languageBR.HasIdentity, Is.True);
Assert.That(languageBR.Id, Is.EqualTo(6)); //With 5 existing entries the Id should be 6
Assert.IsFalse(languageBR.IsDefaultVariantLanguage);
Assert.IsFalse(languageBR.Mandatory);
}
}
[Test]
public void Can_Perform_Add_On_LanguageRepository_With_Boolean_Properties()
{
// Arrange
var provider = TestObjects.GetScopeProvider(Logger);
using (var scope = provider.CreateScope())
{
var repository = CreateRepository(provider);
// Act
var languageBR = new Language("pt-BR") { CultureName = "pt-BR", IsDefaultVariantLanguage = true, Mandatory = true };
repository.Save(languageBR);
// Assert
Assert.That(languageBR.HasIdentity, Is.True);
Assert.That(languageBR.Id, Is.EqualTo(6)); //With 5 existing entries the Id should be 6
Assert.IsTrue(languageBR.IsDefaultVariantLanguage);
Assert.IsTrue(languageBR.Mandatory);
}
}