From 5d30aecf408034f8607ad2498aaf368c435508bb Mon Sep 17 00:00:00 2001 From: Sebastian Stehle Date: Sun, 22 Oct 2017 18:34:11 +0200 Subject: [PATCH] Serialization of Languages config fixed. --- .../Apps/LanguagesConfig.cs | 9 +++------ .../Apps/MongoAppEntity.cs | 6 +++--- .../Apps/MongoAppRepository_EventHandling.cs | 7 +++++++ .../settings/pages/clients/clients-page.component.ts | 2 +- .../Model/Apps/LanguagesConfigTests.cs | 8 -------- 5 files changed, 14 insertions(+), 18 deletions(-) diff --git a/src/Squidex.Domain.Apps.Core.Model/Apps/LanguagesConfig.cs b/src/Squidex.Domain.Apps.Core.Model/Apps/LanguagesConfig.cs index 8f0c6f1f9..55d9101f7 100644 --- a/src/Squidex.Domain.Apps.Core.Model/Apps/LanguagesConfig.cs +++ b/src/Squidex.Domain.Apps.Core.Model/Apps/LanguagesConfig.cs @@ -13,6 +13,8 @@ using System.Collections.Immutable; using System.Linq; using Squidex.Infrastructure; +#pragma warning disable IDE0016 // Use 'throw' expression + namespace Squidex.Domain.Apps.Core.Apps { public sealed class LanguagesConfig : IFieldPartitioning @@ -102,7 +104,7 @@ namespace Squidex.Domain.Apps.Core.Apps var newMaster = state.Master.Language != language ? state.Master : - null; + state.Languages.Values.FirstOrDefault(); state = new State(newLanguages, newMaster); } @@ -161,11 +163,6 @@ namespace Squidex.Domain.Apps.Core.Apps throw new InvalidOperationException("Config has no master language."); } - if (master.IsOptional) - { - throw new InvalidOperationException("Config has an optional master language."); - } - this.Master = master; } } diff --git a/src/Squidex.Domain.Apps.Read.MongoDb/Apps/MongoAppEntity.cs b/src/Squidex.Domain.Apps.Read.MongoDb/Apps/MongoAppEntity.cs index b7799d63a..b86fd0f75 100644 --- a/src/Squidex.Domain.Apps.Read.MongoDb/Apps/MongoAppEntity.cs +++ b/src/Squidex.Domain.Apps.Read.MongoDb/Apps/MongoAppEntity.cs @@ -40,17 +40,17 @@ namespace Squidex.Domain.Apps.Read.MongoDb.Apps [BsonRequired] [BsonElement] [BsonJson] - public AppClients Clients { get; set; } = new AppClients(); + public AppClients Clients { get; set; } [BsonRequired] [BsonElement] [BsonJson] - public AppContributors Contributors { get; set; } = new AppContributors(); + public AppContributors Contributors { get; set; } [BsonRequired] [BsonElement] [BsonJson] - public LanguagesConfig LanguagesConfig { get; } = LanguagesConfig.Build(Language.EN); + public LanguagesConfig LanguagesConfig { get; set; } public PartitionResolver PartitionResolver { diff --git a/src/Squidex.Domain.Apps.Read.MongoDb/Apps/MongoAppRepository_EventHandling.cs b/src/Squidex.Domain.Apps.Read.MongoDb/Apps/MongoAppRepository_EventHandling.cs index d70f8aebf..0fdab29f8 100644 --- a/src/Squidex.Domain.Apps.Read.MongoDb/Apps/MongoAppRepository_EventHandling.cs +++ b/src/Squidex.Domain.Apps.Read.MongoDb/Apps/MongoAppRepository_EventHandling.cs @@ -9,10 +9,12 @@ using System; using System.Linq; using System.Threading.Tasks; +using Squidex.Domain.Apps.Core.Apps; using Squidex.Domain.Apps.Events; using Squidex.Domain.Apps.Events.Apps; using Squidex.Domain.Apps.Events.Apps.Utils; using Squidex.Domain.Apps.Read.MongoDb.Utils; +using Squidex.Infrastructure; using Squidex.Infrastructure.CQRS.Events; using Squidex.Infrastructure.Dispatching; using Squidex.Infrastructure.Reflection; @@ -41,6 +43,11 @@ namespace Squidex.Domain.Apps.Read.MongoDb.Apps return Collection.CreateAsync(@event, headers, a => { SimpleMapper.Map(@event, a); + + a.Clients = new AppClients(); + a.Contributors = new AppContributors(); + + a.LanguagesConfig = LanguagesConfig.Build(Language.EN); }); } diff --git a/src/Squidex/app/features/settings/pages/clients/clients-page.component.ts b/src/Squidex/app/features/settings/pages/clients/clients-page.component.ts index 1c89ec2a1..ed7d13015 100644 --- a/src/Squidex/app/features/settings/pages/clients/clients-page.component.ts +++ b/src/Squidex/app/features/settings/pages/clients/clients-page.component.ts @@ -113,9 +113,9 @@ export class ClientsPageComponent extends AppComponentBase implements OnInit { .switchMap(app => this.appClientsService.postClient(app, requestDto, this.appClients.version)) .subscribe(dto => { this.updateClients(this.appClients.addClient(dto.payload, dto.version)); + this.resetClientForm(); }, error => { this.notifyError(error); - }, () => { this.resetClientForm(); }); } diff --git a/tests/Squidex.Domain.Apps.Core.Tests/Model/Apps/LanguagesConfigTests.cs b/tests/Squidex.Domain.Apps.Core.Tests/Model/Apps/LanguagesConfigTests.cs index b0830d366..1614dc8ef 100644 --- a/tests/Squidex.Domain.Apps.Core.Tests/Model/Apps/LanguagesConfigTests.cs +++ b/tests/Squidex.Domain.Apps.Core.Tests/Model/Apps/LanguagesConfigTests.cs @@ -204,14 +204,6 @@ namespace Squidex.Domain.Apps.Core.Model.Apps Assert.Throws(() => config.Set(new LanguageConfig(Language.DE, false, Language.EN))); } - [Fact] - public void Should_throw_exception_if_language_to_make_optional_is_master_language() - { - var config = LanguagesConfig.Build(Language.DE); - - Assert.Throws(() => config.Set(new LanguageConfig(Language.DE, true))); - } - [Fact] public void Should_provide_enumerators() {