From 8e355e32381822a80c36793f10e48ebe176e8d24 Mon Sep 17 00:00:00 2001 From: Mikael Solstad Date: Tue, 29 Aug 2023 13:00:41 +0200 Subject: [PATCH] feat(AppLogo): extend settings for appowner logo in applactionMetadata (#297) * feat(AppLogo): extend settings for appowner logo in applactionMetadata * rename ShowAppOwnerInHeader to DisplayAppOwnerNameInHeader * Add test for logo config in application metadata --- .../Models/ApplicationMetadata.cs | 6 +- src/Altinn.App.Core/Models/Logo.cs | 25 +++++++ .../Internal/App/AppMedataTest.cs | 69 +++++++++++++++++++ .../logo-org-source.applicationmetadata.json | 40 +++++++++++ 4 files changed, 137 insertions(+), 3 deletions(-) create mode 100644 src/Altinn.App.Core/Models/Logo.cs create mode 100644 test/Altinn.App.Core.Tests/Internal/App/TestData/AppMetadata/logo-org-source.applicationmetadata.json diff --git a/src/Altinn.App.Core/Models/ApplicationMetadata.cs b/src/Altinn.App.Core/Models/ApplicationMetadata.cs index a00b8a337..edb20e29c 100644 --- a/src/Altinn.App.Core/Models/ApplicationMetadata.cs +++ b/src/Altinn.App.Core/Models/ApplicationMetadata.cs @@ -54,9 +54,9 @@ public ApplicationMetadata(string id) public AppIdentifier AppIdentifier { get; private set; } /// - /// A flag to specify that the form should use a custom logo + /// Configure options for setting organisation logo /// - [JsonProperty(PropertyName = "useCustomLogo")] - public bool UseCustomLogo { get; set; } + [JsonProperty(PropertyName = "logo")] + public Logo? Logo { get; set; } } } diff --git a/src/Altinn.App.Core/Models/Logo.cs b/src/Altinn.App.Core/Models/Logo.cs new file mode 100644 index 000000000..f10846d53 --- /dev/null +++ b/src/Altinn.App.Core/Models/Logo.cs @@ -0,0 +1,25 @@ +using Altinn.Platform.Storage.Interface.Models; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; + +namespace Altinn.App.Core.Models +{ + /// + /// The Logo configuration + /// + public class Logo + { + /// + /// A flag to specify that the form should display appOwner in header + /// + [JsonProperty(PropertyName = "displayAppOwnerNameInHeader")] + public bool DisplayAppOwnerNameInHeader { get; set; } + + /// + /// Specifies from where the logo url should be fetched + /// + [JsonProperty(PropertyName = "source")] + public string? Source { get; set; } + + } +} diff --git a/test/Altinn.App.Core.Tests/Internal/App/AppMedataTest.cs b/test/Altinn.App.Core.Tests/Internal/App/AppMedataTest.cs index a69e0afa0..e9f9b191c 100644 --- a/test/Altinn.App.Core.Tests/Internal/App/AppMedataTest.cs +++ b/test/Altinn.App.Core.Tests/Internal/App/AppMedataTest.cs @@ -391,6 +391,75 @@ public async Task GetApplicationMetadata_onEntry_prefer_new_option() actual.OnEntry?.InstanceSelection?.DefaultSelectedOption.Should().Be(3); } + [Fact] + public async Task GetApplicationMetadata_logo_can_intstantiate_with_source_and_DisplayAppOwnerNameInHeader() + { + var featureManagerMock = new Mock(); + IFrontendFeatures frontendFeatures = new FrontendFeatures(featureManagerMock.Object); + Dictionary enabledFrontendFeatures = await frontendFeatures.GetFrontendFeatures(); + + AppSettings appSettings = GetAppSettings("AppMetadata", "logo-org-source.applicationmetadata.json"); + IAppMetadata appMetadata = SetupAppMedata(Microsoft.Extensions.Options.Options.Create(appSettings)); + ApplicationMetadata expected = new ApplicationMetadata("tdd/bestilling") + { + Id = "tdd/bestilling", + Org = "tdd", + Created = DateTime.Parse("2019-09-16T22:22:22"), + CreatedBy = "username", + Title = new Dictionary() + { + { "nb", "Bestillingseksempelapp" } + }, + DataTypes = new List() + { + new() + { + Id = "vedlegg", + AllowedContentTypes = new List() { "application/pdf", "image/png", "image/jpeg" }, + MinCount = 0, + TaskId = "Task_1" + }, + new() + { + Id = "ref-data-as-pdf", + AllowedContentTypes = new List() { "application/pdf" }, + MinCount = 1, + TaskId = "Task_1" + } + }, + PartyTypesAllowed = new PartyTypesAllowed() + { + BankruptcyEstate = true, + Organisation = true, + Person = true, + SubUnit = true + }, + OnEntry = new OnEntry() + { + Show = "select-instance", + InstanceSelection = new() + { + SortDirection = "desc", + RowsPerPageOptions = new List() + { + 5, 3, 10, 25, 50, 100 + }, + DefaultRowsPerPage = 1, + DefaultSelectedOption = 3 + } + }, + Logo = new Logo + { + Source = "org", + DisplayAppOwnerNameInHeader = true + }, + Features = enabledFrontendFeatures + }; + var actual = await appMetadata.GetApplicationMetadata(); + actual.Should().NotBeNull(); + actual.Should().BeEquivalentTo(expected); + } + [Fact] public async void GetApplicationMetadata_throws_ApplicationConfigException_if_file_not_found() { diff --git a/test/Altinn.App.Core.Tests/Internal/App/TestData/AppMetadata/logo-org-source.applicationmetadata.json b/test/Altinn.App.Core.Tests/Internal/App/TestData/AppMetadata/logo-org-source.applicationmetadata.json new file mode 100644 index 000000000..8a6c34aff --- /dev/null +++ b/test/Altinn.App.Core.Tests/Internal/App/TestData/AppMetadata/logo-org-source.applicationmetadata.json @@ -0,0 +1,40 @@ +{ + "id": "tdd/bestilling", + "org": "tdd", + "created": "2019-09-16T22:22:22", + "createdBy": "username", + "title": { "nb": "Bestillingseksempelapp" }, + "dataTypes": [ + { + "id": "vedlegg", + "allowedContentTypes": [ "application/pdf", "image/png", "image/jpeg" ], + "minCount": 0, + "taskId": "Task_1", + }, + { + "id": "ref-data-as-pdf", + "allowedContentTypes": [ "application/pdf" ], + "minCount": 1, + "taskId": "Task_1", + } + ], + "partyTypesAllowed": { + "bankruptcyEstate": true, + "organisation": true, + "person": true, + "subUnit": true + }, + "onEntry": { + "show": "select-instance", + "instanceSelection": { + "sortDirection": "desc", + "rowsPerPageOptions": [5, 3, 10, 25, 50, 100], + "defaultRowsPerPage": 1, + "defaultSelectedOption": 3 + } + }, + "logo": { + "displayAppOwnerNameInHeader": true, + "source": "org" + } +}