From 00276fd8d19503706d826d8c93f9be6918e933b6 Mon Sep 17 00:00:00 2001 From: wzh425 Date: Wed, 25 Mar 2026 15:49:30 +0800 Subject: [PATCH] Add GetI18NConfigByClientIdAsync method to IGlobalNavService and implement in GlobalNavService - Introduced GetI18NConfigByClientIdAsync method in IGlobalNavService to fetch internationalization configuration based on client ID and culture. - Implemented the method in GlobalNavService with appropriate API call. - Added unit tests to validate the new functionality, including scenarios for valid and null responses. --- .../Service/IGlobalNavService.cs | 2 ++ .../Service/GlobalNavService.cs | 7 ++++ .../Service/GlobalNavService.cs | 7 ++++ .../GlobalNavServiceTest.cs | 34 +++++++++++++++++++ 4 files changed, 50 insertions(+) diff --git a/src/BuildingBlocks/Masa.BuildingBlocks.StackSdks.Sapp/Service/IGlobalNavService.cs b/src/BuildingBlocks/Masa.BuildingBlocks.StackSdks.Sapp/Service/IGlobalNavService.cs index 97ec4bf..0a31b41 100644 --- a/src/BuildingBlocks/Masa.BuildingBlocks.StackSdks.Sapp/Service/IGlobalNavService.cs +++ b/src/BuildingBlocks/Masa.BuildingBlocks.StackSdks.Sapp/Service/IGlobalNavService.cs @@ -10,4 +10,6 @@ public interface IGlobalNavService Task> GetMenusByPmIdentityAsync(string pmIdentity); Task> GetVisibleAppEntriesByClientIdAsync(string clientId); + + Task> GetI18NConfigByClientIdAsync(string clientId, string culture); } diff --git a/src/Contrib.Wasm/Masa.Contrib.StackSdks.Sapp.Wasm/Service/GlobalNavService.cs b/src/Contrib.Wasm/Masa.Contrib.StackSdks.Sapp.Wasm/Service/GlobalNavService.cs index 962c8c7..7bb9692 100644 --- a/src/Contrib.Wasm/Masa.Contrib.StackSdks.Sapp.Wasm/Service/GlobalNavService.cs +++ b/src/Contrib.Wasm/Masa.Contrib.StackSdks.Sapp.Wasm/Service/GlobalNavService.cs @@ -34,4 +34,11 @@ public async Task> GetVisibleAppEntriesByClientIdAsync(string var result = await _caller.GetAsync>(requestUri); return result ?? new(); } + + public async Task> GetI18NConfigByClientIdAsync(string clientId, string culture) + { + var requestUri = $"{GLOBAL_NAV_ROUTE_PREFIX}/i18n-config/by-client-id/{clientId}?culture={culture}"; + var result = await _caller.GetAsync>(requestUri); + return result ?? new(); + } } diff --git a/src/Contrib/Masa.Contrib.StackSdks.Sapp/Service/GlobalNavService.cs b/src/Contrib/Masa.Contrib.StackSdks.Sapp/Service/GlobalNavService.cs index 962c8c7..7bb9692 100644 --- a/src/Contrib/Masa.Contrib.StackSdks.Sapp/Service/GlobalNavService.cs +++ b/src/Contrib/Masa.Contrib.StackSdks.Sapp/Service/GlobalNavService.cs @@ -34,4 +34,11 @@ public async Task> GetVisibleAppEntriesByClientIdAsync(string var result = await _caller.GetAsync>(requestUri); return result ?? new(); } + + public async Task> GetI18NConfigByClientIdAsync(string clientId, string culture) + { + var requestUri = $"{GLOBAL_NAV_ROUTE_PREFIX}/i18n-config/by-client-id/{clientId}?culture={culture}"; + var result = await _caller.GetAsync>(requestUri); + return result ?? new(); + } } diff --git a/src/Contrib/Tests/Masa.Contrib.StackSdks.Sapp.Tests/GlobalNavServiceTest.cs b/src/Contrib/Tests/Masa.Contrib.StackSdks.Sapp.Tests/GlobalNavServiceTest.cs index f443fbb..1a96189 100644 --- a/src/Contrib/Tests/Masa.Contrib.StackSdks.Sapp.Tests/GlobalNavServiceTest.cs +++ b/src/Contrib/Tests/Masa.Contrib.StackSdks.Sapp.Tests/GlobalNavServiceTest.cs @@ -107,4 +107,38 @@ public async Task TestGetMenusByPmIdentityWhenNullAsync(string pmIdentity) Assert.AreEqual(0, result.Count); } + + [TestMethod] + [DataRow("MASA_STACK", "zh-CN")] + public async Task TestGetI18NConfigByClientIdAsync(string clientId, string culture) + { + var data = new Dictionary { { "key", "value" } }; + + var requestUri = $"api/global-nav/i18n-config/by-client-id/{clientId}?culture={culture}"; + var caller = new Mock(); + caller.Setup(provider => provider.GetAsync>(requestUri, default)).ReturnsAsync(data).Verifiable(); + var sappClient = new SappClient(caller.Object); + + var result = await sappClient.GlobalNavService.GetI18NConfigByClientIdAsync(clientId, culture); + caller.Verify(provider => provider.GetAsync>(requestUri, default), Times.Once); + + Assert.AreEqual(1, result.Count); + } + + [TestMethod] + [DataRow("MASA_STACK", "zh-CN")] + public async Task TestGetI18NConfigByClientIdWhenNullAsync(string clientId, string culture) + { + Dictionary? data = null; + + var requestUri = $"api/global-nav/i18n-config/by-client-id/{clientId}?culture={culture}"; + var caller = new Mock(); + caller.Setup(provider => provider.GetAsync>(It.IsAny(), default)).ReturnsAsync(data).Verifiable(); + var sappClient = new SappClient(caller.Object); + + var result = await sappClient.GlobalNavService.GetI18NConfigByClientIdAsync(clientId, culture); + caller.Verify(provider => provider.GetAsync>(requestUri, default), Times.Once); + + Assert.AreEqual(0, result.Count); + } }