From fb817a5d118645afc87027852302eebb38bd21f7 Mon Sep 17 00:00:00 2001 From: Serhii_Nosko Date: Mon, 16 Feb 2026 13:40:58 +0200 Subject: [PATCH 1/2] MODORDERS-1401. Use GET /locale to get tenant language & locale setting selections --- descriptors/ModuleDescriptor-template.json | 38 ++++++------ .../orders/utils/ResourcePathResolver.java | 4 +- .../service/caches/CommonSettingsCache.java | 9 +-- .../settings/CommonSettingsRetriever.java | 40 ++++--------- .../java/org/folio/rest/impl/MockServer.java | 15 +---- .../settings/CommonSettingsRetrieverTest.java | 58 ++++++++----------- 6 files changed, 62 insertions(+), 102 deletions(-) diff --git a/descriptors/ModuleDescriptor-template.json b/descriptors/ModuleDescriptor-template.json index 33625ead9..36c06c3f4 100644 --- a/descriptors/ModuleDescriptor-template.json +++ b/descriptors/ModuleDescriptor-template.json @@ -57,7 +57,7 @@ "orders-storage.titles.collection.get", "orders-storage.order-invoice-relationships.collection.get", "orders-storage.settings.collection.get", - "mod-settings.global.read.stripes-core.prefs.manage", + "locale.item.get", "acquisitions-units-storage.units.collection.get", "acquisitions-units-storage.memberships.collection.get", "invoice.invoices.collection.get", @@ -192,7 +192,7 @@ "orders-storage.po-lines.collection.get", "orders-storage.po-lines.item.post", "orders-storage.settings.collection.get", - "mod-settings.global.read.stripes-core.prefs.manage", + "locale.item.get", "acquisitions-units-storage.units.collection.get", "acquisitions-units-storage.memberships.collection.get", "inventory.instances.item.get", @@ -219,7 +219,7 @@ "orders-storage.purchase-orders.item.get", "orders-storage.titles.collection.get", "orders-storage.settings.collection.get", - "mod-settings.global.read.stripes-core.prefs.manage", + "locale.item.get", "acquisitions-units-storage.units.collection.get", "acquisitions-units-storage.memberships.collection.get" ] @@ -264,7 +264,7 @@ "orders-storage.purchase-orders.item.put", "orders-storage.titles.collection.get", "orders-storage.settings.collection.get", - "mod-settings.global.read.stripes-core.prefs.manage", + "locale.item.get", "inventory-storage.identifier-types.collection.get", "inventory.items.item.put", "inventory.items.collection.get", @@ -329,7 +329,7 @@ "user-tenants.collection.get", "consortia.sharing-instances.item.post", "orders-storage.settings.collection.get", - "mod-settings.global.read.stripes-core.prefs.manage" + "locale.item.get" ] }, { @@ -418,7 +418,7 @@ "acquisitions-units-storage.units.collection.get", "acquisitions-units-storage.memberships.collection.get", "orders-storage.settings.collection.get", - "mod-settings.global.read.stripes-core.prefs.manage", + "locale.item.get", "inventory.instances.item.get", "inventory.instances.item.post", "inventory.instances.collection.get", @@ -514,7 +514,7 @@ "acquisitions-units-storage.units.collection.get", "acquisitions-units-storage.memberships.collection.get", "orders-storage.settings.collection.get", - "mod-settings.global.read.stripes-core.prefs.manage", + "locale.item.get", "inventory.items.item.put", "inventory.items.collection.get", "inventory-storage.holdings-sources.collection.get", @@ -562,7 +562,7 @@ "acquisitions-units-storage.units.collection.get", "acquisitions-units-storage.memberships.collection.get", "orders-storage.settings.collection.get", - "mod-settings.global.read.stripes-core.prefs.manage", + "locale.item.get", "inventory.instances.collection.get", "inventory.instances.item.get", "inventory.instances.item.post", @@ -637,7 +637,7 @@ "acquisitions-units-storage.units.collection.get", "acquisitions-units-storage.memberships.collection.get", "orders-storage.settings.collection.get", - "mod-settings.global.read.stripes-core.prefs.manage", + "locale.item.get", "inventory.items.item.put", "inventory.items.collection.get", "inventory-storage.holdings-sources.collection.get", @@ -920,7 +920,7 @@ "acquisitions-units-storage.units.collection.get", "acquisitions-units-storage.memberships.collection.get", "orders-storage.settings.collection.get", - "mod-settings.global.read.stripes-core.prefs.manage" + "locale.item.get" ] }, { @@ -945,7 +945,7 @@ "inventory-storage.contributor-name-types.collection.get", "user-tenants.collection.get", "orders-storage.settings.collection.get", - "mod-settings.global.read.stripes-core.prefs.manage", + "locale.item.get", "consortia.sharing-instances.item.post", "acquisitions-units-storage.units.collection.get", "acquisitions-units-storage.memberships.collection.get" @@ -966,7 +966,7 @@ "inventory-storage.items.collection.get", "inventory-storage.items.collection.delete", "orders-storage.settings.collection.get", - "mod-settings.global.read.stripes-core.prefs.manage", + "locale.item.get", "orders-storage.settings.collection.get", "user-tenants.collection.get", "acquisitions-units-storage.units.collection.get", @@ -1105,7 +1105,7 @@ ], "modulePermissions": [ "orders-storage.settings.collection.get", - "mod-settings.global.read.stripes-core.prefs.manage", + "locale.item.get", "finance-storage.funds.collection.get", "finance.exchange-rate.item.get", "finance.transactions.batch.execute", @@ -1293,7 +1293,7 @@ "pieces.send-claims.collection.post" ], "modulePermissions": [ - "mod-settings.global.read.stripes-core.prefs.manage", + "locale.item.get", "orders-storage.pieces.collection.get", "orders-storage.pieces.item.put", "orders-storage.po-lines.item.get", @@ -1350,8 +1350,8 @@ "version": "1.0" }, { - "id": "settings", - "version": "1.2" + "id": "locale", + "version": "1.0" }, { "id": "configuration", @@ -2260,7 +2260,7 @@ "orders-storage.titles.item.get", "orders-storage.order-invoice-relationships.collection.get", "orders-storage.settings.collection.get", - "mod-settings.global.read.stripes-core.prefs.manage", + "locale.item.get", "finance.funds.budget.item.get", "finance.funds.collection.get", "finance.funds.item.get", @@ -2330,7 +2330,7 @@ "orders-storage.po-lines.item.get", "orders-storage.purchase-orders.item.get", "orders-storage.settings.collection.get", - "mod-settings.global.read.stripes-core.prefs.manage", + "locale.item.get", "finance.funds.budget.item.get", "finance.funds.collection.get", "finance.budgets.collection.get", @@ -2394,7 +2394,7 @@ "permissions": [ "converter-storage.jobprofilesnapshots.get", "orders-storage.settings.collection.get", - "mod-settings.global.read.stripes-core.prefs.manage", + "locale.item.get", "finance-storage.fiscal-years.item.get", "acquisitions-units.memberships.collection.get", "acquisitions-units.units.collection.get", diff --git a/src/main/java/org/folio/orders/utils/ResourcePathResolver.java b/src/main/java/org/folio/orders/utils/ResourcePathResolver.java index e5e316754..7fd587248 100644 --- a/src/main/java/org/folio/orders/utils/ResourcePathResolver.java +++ b/src/main/java/org/folio/orders/utils/ResourcePathResolver.java @@ -47,7 +47,7 @@ public class ResourcePathResolver { public static final String FINANCE_EXCHANGE_RATE = "finance/exchange-rate"; public static final String EXPENSE_CLASSES_URL = "finance.expense-classes"; public static final String CONFIGURATION_ENTRIES = "configurations.entries"; - public static final String SETTINGS_ENTRIES = "settings.entries"; + public static final String LOCALE = "locale"; public static final String LEDGER_FY_ROLLOVERS = "finance.ledger-rollovers"; public static final String LEDGER_FY_ROLLOVER_ERRORS = "finance.ledger-rollovers-errors"; public static final String LEDGER_CURRENT_FISCAL_YEAR = "finance.ledger.current-fiscal-year"; @@ -103,7 +103,7 @@ public class ResourcePathResolver { apis.put(FINANCE_EXCHANGE_RATE, "/finance/exchange-rate"); apis.put(EXPENSE_CLASSES_URL, "/finance/expense-classes"); apis.put(CONFIGURATION_ENTRIES, "/configurations/entries"); - apis.put(SETTINGS_ENTRIES, "/settings/entries"); + apis.put(LOCALE, "/locale"); apis.put(LEDGER_FY_ROLLOVERS, "/finance/ledger-rollovers"); apis.put(LEDGER_FY_ROLLOVER_ERRORS, "/finance/ledger-rollovers-errors"); apis.put(LEDGER_CURRENT_FISCAL_YEAR, "/finance/ledgers/{id}/current-fiscal-year"); diff --git a/src/main/java/org/folio/service/caches/CommonSettingsCache.java b/src/main/java/org/folio/service/caches/CommonSettingsCache.java index 8e7844367..acba3291a 100644 --- a/src/main/java/org/folio/service/caches/CommonSettingsCache.java +++ b/src/main/java/org/folio/service/caches/CommonSettingsCache.java @@ -13,8 +13,8 @@ import org.springframework.stereotype.Component; import static org.folio.orders.utils.CacheUtils.buildAsyncCache; +import static org.folio.orders.utils.ResourcePathResolver.LOCALE; import static org.folio.orders.utils.ResourcePathResolver.ORDER_SETTINGS; -import static org.folio.orders.utils.ResourcePathResolver.SETTINGS_ENTRIES; import static org.folio.orders.utils.ResourcePathResolver.resourcesPath; @Log4j2 @@ -22,9 +22,6 @@ @RequiredArgsConstructor public class CommonSettingsCache extends AbstractConfigCache { - public static final String GLOBAL_SETTINGS_QUERY = "(scope==stripes-core.prefs.manage and key==tenantLocaleSettings)"; - public static final String TENANT_LOCALE_SETTINGS = "tenantLocaleSettings"; - private final CommonSettingsRetriever commonSettingsRetriever; private AsyncCache settingsCache; private AsyncCache systemCurrencyCache; @@ -49,12 +46,12 @@ public Future loadSettings(RequestContext requestContext) { } public Future getSystemCurrency(RequestContext requestContext) { - return cacheData(resourcesPath(SETTINGS_ENTRIES), GLOBAL_SETTINGS_QUERY, systemCurrencyCache, + return cacheData(resourcesPath(LOCALE), null, systemCurrencyCache, commonSettingsRetriever::getSystemCurrency, byPassCache, requestContext); } public Future getSystemTimeZone(RequestContext requestContext) { - return cacheData(resourcesPath(SETTINGS_ENTRIES), GLOBAL_SETTINGS_QUERY, systemTimezoneCache, + return cacheData(resourcesPath(LOCALE), null, systemTimezoneCache, commonSettingsRetriever::getSystemTimeZone, byPassCache, requestContext); } diff --git a/src/main/java/org/folio/service/settings/CommonSettingsRetriever.java b/src/main/java/org/folio/service/settings/CommonSettingsRetriever.java index 110ba5dbd..15985643a 100644 --- a/src/main/java/org/folio/service/settings/CommonSettingsRetriever.java +++ b/src/main/java/org/folio/service/settings/CommonSettingsRetriever.java @@ -2,21 +2,15 @@ import lombok.RequiredArgsConstructor; import lombok.extern.log4j.Log4j2; +import org.apache.commons.lang3.StringUtils; import org.folio.rest.acq.model.SettingCollection; -import org.folio.rest.acq.model.settings.CommonSetting; -import org.folio.rest.acq.model.settings.CommonSettingsCollection; -import org.folio.rest.acq.model.settings.Value; import org.folio.rest.core.RestClient; import org.folio.rest.core.models.RequestContext; import org.folio.rest.core.models.RequestEntry; -import org.folio.rest.jaxrs.model.Configs; import io.vertx.core.Future; import io.vertx.core.json.JsonObject; -import java.util.List; -import java.util.Optional; - /** * This service class is used to fetch settings from mod-settings. Unlike {@link SettingsRetriever}, this class does not fetch * settings from the mod-orders-storage database. It is intended to be used for common settings that are not specific to orders. @@ -33,33 +27,23 @@ public class CommonSettingsRetriever { private final RestClient restClient; - public Future loadConfigurations(RequestEntry requestEntry, RequestContext requestContext) { - return restClient.get(requestEntry, Configs.class, requestContext) - .map(configs -> { - var config = new JsonObject(); - configs.getConfigs().forEach(entry -> config.put(entry.getConfigName(), entry.getValue())); - return config; - }); - } - public Future getSystemCurrency(RequestEntry requestEntry, RequestContext requestContext) { - return getGlobalSetting(CURRENCY_KEY, CURRENCY_DEFAULT, requestEntry, requestContext); + return getLocaleSetting(CURRENCY_KEY, CURRENCY_DEFAULT, requestEntry, requestContext); } public Future getSystemTimeZone(RequestEntry requestEntry, RequestContext requestContext) { - return getGlobalSetting(TZ_KEY, TZ_DEFAULT, requestEntry, requestContext); + return getLocaleSetting(TZ_KEY, TZ_DEFAULT, requestEntry, requestContext); } - private Future getGlobalSetting(String key, String defaultValue, RequestEntry requestEntry, RequestContext requestContext) { - return restClient.get(requestEntry, CommonSettingsCollection.class, requestContext) - .map(settingsCollection -> Optional.ofNullable(settingsCollection.getItems()).orElse(List.of())) - .map(settings -> settings.stream() - .findFirst() - .map(CommonSetting::getValue) - .map(Value::getAdditionalProperties) - .map(properties -> properties.get(key)) - .map(Object::toString) - .orElse(defaultValue)); + private Future getLocaleSetting(String key, String defaultValue, RequestEntry requestEntry, RequestContext requestContext) { + return restClient.getAsJsonObject(requestEntry, requestContext) + .map(jsonObject -> { + if (jsonObject == null) { + return defaultValue; + } + var value = jsonObject.getString(key); + return StringUtils.isNotBlank(value) ? value : defaultValue; + }); } public Future getLocalSettings(RequestEntry requestEntry, RequestContext requestContext) { diff --git a/src/test/java/org/folio/rest/impl/MockServer.java b/src/test/java/org/folio/rest/impl/MockServer.java index 56508ed6f..01f0e6510 100644 --- a/src/test/java/org/folio/rest/impl/MockServer.java +++ b/src/test/java/org/folio/rest/impl/MockServer.java @@ -89,7 +89,7 @@ import static org.folio.orders.utils.ResourcePathResolver.REASONS_FOR_CLOSURE; import static org.folio.orders.utils.ResourcePathResolver.RECEIVING_HISTORY; import static org.folio.orders.utils.ResourcePathResolver.ROUTING_LISTS; -import static org.folio.orders.utils.ResourcePathResolver.SETTINGS_ENTRIES; +import static org.folio.orders.utils.ResourcePathResolver.LOCALE; import static org.folio.orders.utils.ResourcePathResolver.SUFFIXES; import static org.folio.orders.utils.ResourcePathResolver.TAGS; import static org.folio.orders.utils.ResourcePathResolver.TITLES; @@ -248,7 +248,7 @@ public class MockServer { public static final String BASE_MOCK_DATA_PATH = "mockdata/"; private static final String CONTRIBUTOR_NAME_TYPES_PATH = BASE_MOCK_DATA_PATH + "contributorNameTypes/contributorPersonalNameType.json"; public static final String CONFIG_MOCK_PATH = BASE_MOCK_DATA_PATH + "configurations.entries/%s.json"; - public static final String SETTINGS_MOCK_PATH = BASE_MOCK_DATA_PATH + "settings.entries/%s.json"; + public static final String LOCALE_MOCK_PATH = BASE_MOCK_DATA_PATH + "locale/locale.json"; public static final String ORDER_SETTINGS_MOCK_PATH = BASE_MOCK_DATA_PATH + "order-settings/%s.json"; public static final String EXPORT_CONFIG_MOCK_PATH = BASE_MOCK_DATA_PATH + "data-export-spring/export-config.json"; public static final String LOAN_TYPES_MOCK_DATA_PATH = BASE_MOCK_DATA_PATH + "loanTypes/"; @@ -699,7 +699,7 @@ private Router defineRoutes() { router.get(resourcesPath(WRAPPER_PIECES_STORAGE) + "/:id").handler(ctx -> handleGetJsonResource(ctx, MOCK_DATA_WRAPPER_PIECES_BY_ID_JSON)); router.get(resourcesPath(CONFIGURATION_ENTRIES)).handler(ctx -> handleConfigurationOrSettingResponse(CONFIG_MOCK_PATH, ctx)); router.get(resourcesPath(ORDER_SETTINGS)).handler(ctx -> handleConfigurationOrSettingResponse(ORDER_SETTINGS_MOCK_PATH, ctx)); - router.get(resourcesPath(SETTINGS_ENTRIES)).handler(this::handleSettingResponse); + router.get(resourcesPath(LOCALE)).handler(ctx -> handleGetJsonResource(ctx, LOCALE_MOCK_PATH)); router.get(resourcesPath(DATA_EXPORT_SPRING_CONFIGURATIONS)).handler(this::handleExportConfigsResponse); // PUT router.put(resourcePath(PURCHASE_ORDER_STORAGE)).handler(ctx -> handlePutGenericSubObj(ctx, PURCHASE_ORDER_STORAGE)); @@ -1667,15 +1667,6 @@ private void handleConfigurationOrSettingResponse(String mockPath, RoutingContex } } - private void handleSettingResponse(RoutingContext ctx) { - try { - var mockData = getMockData(SETTINGS_MOCK_PATH.formatted(EXIST_CONFIG_X_OKAPI_TENANT_LIMIT_10.getValue())); - serverResponse(ctx, 200, APPLICATION_JSON, mockData); - } catch (IOException e) { - serverResponse(ctx, 500, APPLICATION_JSON, INTERNAL_SERVER_ERROR.getReasonPhrase()); - } - } - private void handleExportConfigsResponse(RoutingContext ctx) { try { var config = new JsonObject(getMockData(EXPORT_CONFIG_MOCK_PATH)); diff --git a/src/test/java/org/folio/service/settings/CommonSettingsRetrieverTest.java b/src/test/java/org/folio/service/settings/CommonSettingsRetrieverTest.java index fd2eb9c34..fede8ea86 100644 --- a/src/test/java/org/folio/service/settings/CommonSettingsRetrieverTest.java +++ b/src/test/java/org/folio/service/settings/CommonSettingsRetrieverTest.java @@ -1,11 +1,9 @@ package org.folio.service.settings; import io.vertx.core.Future; +import io.vertx.core.json.JsonObject; import org.folio.CopilotGenerated; import org.folio.orders.utils.ResourcePathResolver; -import org.folio.rest.acq.model.settings.CommonSetting; -import org.folio.rest.acq.model.settings.CommonSettingsCollection; -import org.folio.rest.acq.model.settings.Value; import org.folio.rest.core.RestClient; import org.folio.rest.core.models.RequestContext; import org.folio.rest.core.models.RequestEntry; @@ -15,10 +13,7 @@ import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; -import java.util.List; - import static org.folio.orders.utils.ResourcePathResolver.resourcesPath; -import static org.folio.service.caches.CommonSettingsCache.TENANT_LOCALE_SETTINGS; import static org.folio.service.settings.CommonSettingsRetriever.CURRENCY_KEY; import static org.folio.service.settings.CommonSettingsRetriever.TZ_KEY; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -40,11 +35,10 @@ public class CommonSettingsRetrieverTest { @Test void shouldReturnDefaultCurrencyWhenLocaleSettingsNotPresent() { - RequestEntry requestEntry = new RequestEntry(resourcesPath(ResourcePathResolver.SETTINGS_ENTRIES)); - CommonSettingsCollection settingsCollection = getLocaleSettings(); + RequestEntry requestEntry = new RequestEntry(resourcesPath(ResourcePathResolver.LOCALE)); - when(restClientMock.get(eq(requestEntry), eq(CommonSettingsCollection.class), any(RequestContext.class))) - .thenReturn(Future.succeededFuture(settingsCollection)); + when(restClientMock.getAsJsonObject(eq(requestEntry), any(RequestContext.class))) + .thenReturn(Future.succeededFuture(new JsonObject())); Future result = commonSettingsRetriever.getSystemCurrency(requestEntry, requestContextMock); @@ -53,12 +47,13 @@ void shouldReturnDefaultCurrencyWhenLocaleSettingsNotPresent() { @Test void shouldReturnConfiguredCurrency() { - RequestEntry requestEntry = new RequestEntry(resourcesPath(ResourcePathResolver.SETTINGS_ENTRIES)); - CommonSettingsCollection settingsCollection = getLocaleSettings(); - settingsCollection.getItems().getFirst().getValue().withAdditionalProperty("currency", "EUR"); + RequestEntry requestEntry = new RequestEntry(resourcesPath(ResourcePathResolver.LOCALE)); + var localeSettings = new JsonObject() + .put(CURRENCY_KEY, "EUR") + .put(TZ_KEY, "UTC"); - when(restClientMock.get(eq(requestEntry), eq(CommonSettingsCollection.class), any(RequestContext.class))) - .thenReturn(Future.succeededFuture(settingsCollection)); + when(restClientMock.getAsJsonObject(eq(requestEntry), any(RequestContext.class))) + .thenReturn(Future.succeededFuture(localeSettings)); Future result = commonSettingsRetriever.getSystemCurrency(requestEntry, requestContextMock); @@ -67,11 +62,10 @@ void shouldReturnConfiguredCurrency() { @Test void shouldReturnDefaultTimeZoneWhenLocaleSettingsNotPresent() { - RequestEntry requestEntry = new RequestEntry(resourcesPath(ResourcePathResolver.SETTINGS_ENTRIES)); - CommonSettingsCollection settingsCollection = new CommonSettingsCollection(); + RequestEntry requestEntry = new RequestEntry(resourcesPath(ResourcePathResolver.LOCALE)); - when(restClientMock.get(eq(requestEntry), eq(CommonSettingsCollection.class), any(RequestContext.class))) - .thenReturn(Future.succeededFuture(settingsCollection)); + when(restClientMock.getAsJsonObject(eq(requestEntry), any(RequestContext.class))) + .thenReturn(Future.succeededFuture(new JsonObject())); Future result = commonSettingsRetriever.getSystemTimeZone(requestEntry, requestContextMock); @@ -80,12 +74,13 @@ void shouldReturnDefaultTimeZoneWhenLocaleSettingsNotPresent() { @Test void shouldReturnConfiguredTimeZone() { - RequestEntry requestEntry = new RequestEntry(resourcesPath(ResourcePathResolver.SETTINGS_ENTRIES)); - CommonSettingsCollection settingsCollection = getLocaleSettings(); - settingsCollection.getItems().getFirst().getValue().withAdditionalProperty("timezone", "PST"); + RequestEntry requestEntry = new RequestEntry(resourcesPath(ResourcePathResolver.LOCALE)); + var localeSettings = new JsonObject() + .put(CURRENCY_KEY, "USD") + .put(TZ_KEY, "PST"); - when(restClientMock.get(eq(requestEntry), eq(CommonSettingsCollection.class), any(RequestContext.class))) - .thenReturn(Future.succeededFuture(settingsCollection)); + when(restClientMock.getAsJsonObject(eq(requestEntry), any(RequestContext.class))) + .thenReturn(Future.succeededFuture(localeSettings)); Future result = commonSettingsRetriever.getSystemTimeZone(requestEntry, requestContextMock); @@ -94,9 +89,9 @@ void shouldReturnConfiguredTimeZone() { @Test void shouldFailToReturnSystemCurrencyWhenRestClientFails() { - RequestEntry requestEntry = new RequestEntry(resourcesPath(ResourcePathResolver.SETTINGS_ENTRIES)); + RequestEntry requestEntry = new RequestEntry(resourcesPath(ResourcePathResolver.LOCALE)); - when(restClientMock.get(eq(requestEntry), eq(CommonSettingsCollection.class), any(RequestContext.class))) + when(restClientMock.getAsJsonObject(eq(requestEntry), any(RequestContext.class))) .thenReturn(Future.failedFuture(new RuntimeException("Service failure"))); Future result = commonSettingsRetriever.getSystemCurrency(requestEntry, requestContextMock); @@ -107,9 +102,9 @@ void shouldFailToReturnSystemCurrencyWhenRestClientFails() { @Test void shouldFailToReturnSystemTimeZoneWhenRestClientFails() { - RequestEntry requestEntry = new RequestEntry(resourcesPath(ResourcePathResolver.SETTINGS_ENTRIES)); + RequestEntry requestEntry = new RequestEntry(resourcesPath(ResourcePathResolver.LOCALE)); - when(restClientMock.get(eq(requestEntry), eq(CommonSettingsCollection.class), any(RequestContext.class))) + when(restClientMock.getAsJsonObject(eq(requestEntry), any(RequestContext.class))) .thenReturn(Future.failedFuture(new RuntimeException("Service failure"))); Future result = commonSettingsRetriever.getSystemTimeZone(requestEntry, requestContextMock); @@ -117,11 +112,4 @@ void shouldFailToReturnSystemTimeZoneWhenRestClientFails() { assertTrue(result.failed()); assertEquals(RuntimeException.class, result.cause().getClass()); } - - private static CommonSettingsCollection getLocaleSettings() { - return new CommonSettingsCollection().withItems(List.of(new CommonSetting() - .withKey(TENANT_LOCALE_SETTINGS).withValue(new Value() - .withAdditionalProperty(CURRENCY_KEY, "USD") - .withAdditionalProperty(TZ_KEY, "UTC")))); - } } From 9031a96f56eafbe88ba2ff0b6ded4a1f55534169 Mon Sep 17 00:00:00 2001 From: Serhii_Nosko Date: Tue, 17 Feb 2026 16:04:08 +0300 Subject: [PATCH 2/2] MODORDERS-1386. Add locale.json --- src/test/resources/mockdata/locale/locale.json | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 src/test/resources/mockdata/locale/locale.json diff --git a/src/test/resources/mockdata/locale/locale.json b/src/test/resources/mockdata/locale/locale.json new file mode 100644 index 000000000..b5a52a321 --- /dev/null +++ b/src/test/resources/mockdata/locale/locale.json @@ -0,0 +1,5 @@ +{ + "locale": "en-US", + "timezone": "UTC", + "currency": "USD" +}