diff --git a/CHANGELOG.md b/CHANGELOG.md
index 5ccdd98..19984ae 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,10 @@
# Change history for ui-tenant-settings
## 9.1.0 (IN PROGRESS)
+* [UITEN-281](https://folio-org.atlassian.net/browse/UITEN-281) Add Routing service point option to Service point page(ECS only).
+* [UITEN-285](https://folio-org.atlassian.net/browse/UITEN-285) Disable edit of Routing service point field (ECS only).
+* [UITEN-294](https://folio-org.atlassian.net/browse/UITEN-294) Show routing service points on settings -> tenant -> servicePoints.
+* [UITEN-292](https://folio-org.atlassian.net/browse/UITEN-292) Change visibility rules for routing service points.
## [9.0.0](https://github.com/folio-org/ui-tenant-settings/tree/v9.0.0)(2024-10-30)
@@ -19,6 +23,7 @@
* [UITEN-212](https://folio-org.atlassian.net/browse/UITEN-212) Permission changes for service point management.
* [UITEN-299](https://folio-org.atlassian.net/browse/UITEN-299) Rewrite class components to functional ones (ui-tenant-settings module).
* [UITEN-304](https://folio-org.atlassian.net/browse/UITEN-304) Provide case insensitive sorted data to edit record, field components.
+* [UITEN-306](https://folio-org.atlassian.net/browse/UITEN-306) Fix saving problem for routing service point(ECS only).
* [UITEN-302](https://folio-org.atlassian.net/browse/UITEN-302) Address existing UI issues on Settings > Tenant > Locations
* [UITEN-305](https://folio-org.atlassian.net/browse/UITEN-305) Permission changes for service point management (ECS environment)
diff --git a/package.json b/package.json
index d98776c..4374c9e 100644
--- a/package.json
+++ b/package.json
@@ -194,7 +194,8 @@
"inventory-storage.location-units.libraries.collection.get",
"inventory-storage.service-points.collection.get",
"inventory-storage.service-points.item.get",
- "circulation-storage.staff-slips.collection.get"
+ "circulation-storage.staff-slips.collection.get",
+ "circulation.settings.collection.get"
],
"visible": false
},
@@ -260,6 +261,7 @@
"@testing-library/dom": "^7.26.3",
"@testing-library/jest-dom": "^5.11.1",
"@testing-library/react": "^11.0.2",
+ "@testing-library/react-hooks": "^7.0.1",
"@testing-library/user-event": "^12.1.10",
"babel-eslint": "^9.0.0",
"babel-jest": "^26.3.0",
@@ -284,6 +286,7 @@
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-intl": "^6.4.4",
+ "react-query": "^3.6.0",
"react-redux": "^7.2.0",
"react-router-dom": "^5.2.0",
"redux": "^4.0.0",
diff --git a/src/hooks/index.js b/src/hooks/index.js
new file mode 100644
index 0000000..86ec60a
--- /dev/null
+++ b/src/hooks/index.js
@@ -0,0 +1 @@
+export { default as useCirculationSettingsEcsTlrFeature } from './useCirculationSettingsEcsTlrFeature';
diff --git a/src/hooks/useCirculationSettingsEcsTlrFeature/index.js b/src/hooks/useCirculationSettingsEcsTlrFeature/index.js
new file mode 100644
index 0000000..e02e3cc
--- /dev/null
+++ b/src/hooks/useCirculationSettingsEcsTlrFeature/index.js
@@ -0,0 +1 @@
+export { default } from './useCirculationSettingsEcsTlrFeature';
diff --git a/src/hooks/useCirculationSettingsEcsTlrFeature/useCirculationSettingsEcsTlrFeature.js b/src/hooks/useCirculationSettingsEcsTlrFeature/useCirculationSettingsEcsTlrFeature.js
new file mode 100644
index 0000000..0266cbe
--- /dev/null
+++ b/src/hooks/useCirculationSettingsEcsTlrFeature/useCirculationSettingsEcsTlrFeature.js
@@ -0,0 +1,27 @@
+import { useQuery } from 'react-query';
+
+import { useNamespace, useOkapiKy } from '@folio/stripes/core';
+
+import { getEcsTlrFeature } from '../../settings/ServicePoints/utils';
+
+const useCirculationSettingsEcsTlrFeature = (enabled) => {
+ const ky = useOkapiKy();
+ const [namespace] = useNamespace({ key: 'circulationSettingsEcsTlrFeature' });
+ const searchParams = {
+ query: 'name==ecsTlrFeature',
+ };
+ const { isLoading, data, refetch, isFetching } = useQuery(
+ [namespace],
+ () => ky.get('circulation/settings', { searchParams }).json(),
+ { enabled },
+ );
+
+ return ({
+ titleLevelRequestsFeatureEnabled: getEcsTlrFeature(data?.circulationSettings),
+ isLoading,
+ isFetching,
+ refetch,
+ });
+};
+
+export default useCirculationSettingsEcsTlrFeature;
diff --git a/src/hooks/useCirculationSettingsEcsTlrFeature/useCirculationSettingsEcsTlrFeature.test.js b/src/hooks/useCirculationSettingsEcsTlrFeature/useCirculationSettingsEcsTlrFeature.test.js
new file mode 100644
index 0000000..3068bf8
--- /dev/null
+++ b/src/hooks/useCirculationSettingsEcsTlrFeature/useCirculationSettingsEcsTlrFeature.test.js
@@ -0,0 +1,43 @@
+import {
+ QueryClient,
+ QueryClientProvider,
+} from 'react-query';
+import {
+ renderHook,
+ act,
+} from '@testing-library/react-hooks';
+
+import { useOkapiKy } from '@folio/stripes/core';
+
+import useCirculationSettingsEcsTlrFeature from './useCirculationSettingsEcsTlrFeature';
+
+const queryClient = new QueryClient();
+
+// eslint-disable-next-line react/prop-types
+const wrapper = ({ children }) => (
+
+ {children}
+
+);
+
+const data = 'data';
+
+describe('useCirculationSettingsEcsTlrFeature', () => {
+ it('should fetch data', async () => {
+ useOkapiKy.mockClear().mockReturnValue({
+ get: () => ({
+ json: () => ({
+ data,
+ }),
+ }),
+ });
+
+ const { result } = renderHook(() => useCirculationSettingsEcsTlrFeature(true), { wrapper });
+
+ await act(() => {
+ return !result.current.isLoading;
+ });
+
+ expect(result.current.titleLevelRequestsFeatureEnabled).toBeFalsy();
+ });
+});
diff --git a/src/settings/ServicePoints/ConfirmPickupLocationChangeModal.js b/src/settings/ServicePoints/ConfirmPickupLocationChangeModal.js
index 258e869..6c32e96 100644
--- a/src/settings/ServicePoints/ConfirmPickupLocationChangeModal.js
+++ b/src/settings/ServicePoints/ConfirmPickupLocationChangeModal.js
@@ -20,13 +20,13 @@ const ConfirmPickupLocationChangeModal = ({
autoFocus
onClick={onConfirm}
>
-
+
);
diff --git a/src/settings/ServicePoints/ConfirmPickupLocationChangeModal.test.js b/src/settings/ServicePoints/ConfirmPickupLocationChangeModal.test.js
index 9386515..5e696d3 100644
--- a/src/settings/ServicePoints/ConfirmPickupLocationChangeModal.test.js
+++ b/src/settings/ServicePoints/ConfirmPickupLocationChangeModal.test.js
@@ -22,8 +22,8 @@ const testIds = {
const messageIds = {
title: 'ui-tenant-settings.settings.confirmPickupLocationChangeModal.title',
message: 'ui-tenant-settings.settings.confirmPickupLocationChangeModal.message',
- buttonConfirm: 'ui-tenant-settings.settings.confirmPickupLocationChangeModal.button.confirm',
- buttonCancel: 'ui-tenant-settings.settings.confirmPickupLocationChangeModal.button.cancel',
+ buttonConfirm: 'ui-tenant-settings.settings.modal.button.confirm',
+ buttonCancel: 'ui-tenant-settings.settings.modal.button.cancel',
};
describe('ConfirmPickupLocationChangeModal', () => {
diff --git a/src/settings/ServicePoints/ServicePointDetail.js b/src/settings/ServicePoints/ServicePointDetail.js
index 0443d6d..fa21919 100644
--- a/src/settings/ServicePoints/ServicePointDetail.js
+++ b/src/settings/ServicePoints/ServicePointDetail.js
@@ -1,16 +1,18 @@
-import { cloneDeep, keyBy, orderBy } from 'lodash';
import React from 'react';
import PropTypes from 'prop-types';
import {
injectIntl,
FormattedMessage,
} from 'react-intl';
+import { cloneDeep, keyBy, orderBy } from 'lodash';
+
import { Accordion, Col, ExpandAllButton, KeyValue, Row } from '@folio/stripes/components';
import { ViewMetaData } from '@folio/stripes/smart-components';
-
import { TitleManager } from '@folio/stripes/core';
+
import LocationList from './LocationList';
import StaffSlipList from './StaffSlipList';
+import { isEcsRequestRoutingVisible, isEcsRequestRoutingAssociatedFieldsVisible } from './utils';
import { intervalPeriods } from '../../constants';
import { closedLibraryDateManagementMapping } from './constants';
@@ -22,7 +24,8 @@ class ServicePointDetail extends React.Component {
}).isRequired,
initialValues: PropTypes.object,
parentResources: PropTypes.object,
- parentMutator: PropTypes.object
+ parentMutator: PropTypes.object,
+ titleLevelRequestsFeatureEnabled: PropTypes.bool,
};
constructor(props) {
@@ -80,7 +83,7 @@ class ServicePointDetail extends React.Component {
}
render() {
- const { initialValues, parentResources } = this.props;
+ const { initialValues, parentResources, titleLevelRequestsFeatureEnabled } = this.props;
const locations = (parentResources.locations || {}).records || [];
const staffSlips = orderBy((parentResources.staffSlips || {}).records || [], 'name');
const servicePoint = initialValues;
@@ -133,56 +136,74 @@ class ServicePointDetail extends React.Component {
/>
-
-
- }
- value={servicePoint.shelvingLagTime}
- />
-
-
-
-
- }>
- { servicePoint.pickupLocation
- ?
- :
- }
-
-
-
- { servicePoint.pickupLocation && (
+ {isEcsRequestRoutingVisible(titleLevelRequestsFeatureEnabled) && (
+
+
+ }>
+ { servicePoint.ecsRequestRouting
+ ?
+ :
+ }
+
+
+
+ )}
+ {isEcsRequestRoutingAssociatedFieldsVisible(titleLevelRequestsFeatureEnabled, servicePoint.ecsRequestRouting) && (
<>
-
+
}
- value={`${duration} ${this.intervalPeriodMap[intervalId].label}`}
+ label={}
+ value={servicePoint.shelvingLagTime}
/>
-
- }>
-
+
+ }>
+ { servicePoint.pickupLocation
+ ?
+ :
+ }
+ { servicePoint.pickupLocation && (
+ <>
+
+
+ }
+ value={`${duration} ${this.intervalPeriodMap[intervalId].label}`}
+ />
+
+
+
+
+ }>
+
+
+
+
+ >
+ )
+ }
+
>
- )
- }
-
+ )}
-
+ {isEcsRequestRoutingAssociatedFieldsVisible(titleLevelRequestsFeatureEnabled, servicePoint.ecsRequestRouting) && (
+
+ )}
);
diff --git a/src/settings/ServicePoints/ServicePointForm.js b/src/settings/ServicePoints/ServicePointForm.js
index 1e0c0e3..7e32fcc 100644
--- a/src/settings/ServicePoints/ServicePointForm.js
+++ b/src/settings/ServicePoints/ServicePointForm.js
@@ -39,8 +39,14 @@ import { intervalPeriods } from '../../constants';
import {
validateServicePointForm,
getUniquenessValidation,
+ isEcsRequestRoutingVisible,
+ isEcsRequestRoutingAssociatedFieldsVisible,
} from './utils';
+import {
+ useCirculationSettingsEcsTlrFeature,
+} from '../../hooks';
+
import {
shortTermExpiryPeriod,
shortTermClosedDateManagementMenu,
@@ -49,11 +55,15 @@ import {
import styles from './ServicePoints.css';
+export const SELECTED_ROUTING_SERVICE_POINT_VALUE = 'true';
export const SELECTED_PICKUP_LOCATION_VALUE = 'true';
export const UNSELECTED_PICKUP_LOCATION_VALUE = 'false';
export const LAYER_EDIT = 'layer=edit';
+export const isLayerEdit = (search) => (
+ search.includes(LAYER_EDIT)
+);
export const isConfirmPickupLocationChangeModalShouldBeVisible = (search, value) => (
- search.includes(LAYER_EDIT) && value === UNSELECTED_PICKUP_LOCATION_VALUE
+ isLayerEdit(search) && value === UNSELECTED_PICKUP_LOCATION_VALUE
);
const ServicePointForm = ({
@@ -69,6 +79,7 @@ const ServicePointForm = ({
handleSubmit,
onCancel,
}) => {
+ const { titleLevelRequestsFeatureEnabled } = useCirculationSettingsEcsTlrFeature(true);
const [sections, setSections] = useState({
generalSection: true,
locationSection: true
@@ -88,11 +99,11 @@ const ServicePointForm = ({
const selectOptions = [
{
- label: intl.formatMessage({ id: 'ui-tenant-settings.settings.servicePoints.pickupLocation.no' }),
+ label: intl.formatMessage({ id: 'ui-tenant-settings.settings.servicePoints.value.no' }),
value: false
},
{
- label: intl.formatMessage({ id: 'ui-tenant-settings.settings.servicePoints.pickupLocation.yes' }),
+ label: intl.formatMessage({ id: 'ui-tenant-settings.settings.servicePoints.value.yes' }),
value: true
}
];
@@ -200,6 +211,12 @@ const ServicePointForm = ({
)));
};
+ const handleEcsRequestRoutingChange = (e) => {
+ const value = e.target.value;
+
+ form.change('ecsRequestRouting', value === SELECTED_ROUTING_SERVICE_POINT_VALUE);
+ };
+
const handleChange = (e) => {
const value = e.target.value;
@@ -290,67 +307,88 @@ const ServicePointForm = ({
/>
-
-
- }
- name="shelvingLagTime"
- id="input-service-shelvingLagTime"
- component={TextField}
- fullWidth
- disabled={disabled}
- />
-
-
-
-
- }
- name="pickupLocation"
- id="input-service-pickupLocation"
- component={Select}
- dataOptions={selectOptions}
- onChange={handleChange}
- disabled={disabled}
- />
-
-
- {
- formValues.pickupLocation && (
- <>
-
-
+
+ }
+ name="ecsRequestRouting"
+ id="input-service-ecsRequestRouting"
+ component={Select}
+ dataOptions={selectOptions}
+ onChange={handleEcsRequestRoutingChange}
+ disabled={disabled || isLayerEdit(search)}
+ />
+
+
+ )}
+ {isEcsRequestRoutingAssociatedFieldsVisible(titleLevelRequestsFeatureEnabled, formValues.ecsRequestRouting) && (
+ <>
+
+
+ }
+ name="shelvingLagTime"
+ id="input-service-shelvingLagTime"
+ component={TextField}
+ fullWidth
+ disabled={disabled}
/>
-
-
+
+
+
+
}
- name="holdShelfClosedLibraryDateManagement"
+ data-test-pickup-location
+ label={}
+ name="pickupLocation"
+ id="input-service-pickupLocation"
component={Select}
- dataOptions={getClosedLibraryDateManagementOptions()}
+ dataOptions={selectOptions}
+ onChange={handleChange}
+ disabled={disabled}
/>
-
- >
- )
- }
-
+
+
+ {
+ formValues.pickupLocation && (
+ <>
+
+
+ }
+ name="holdShelfClosedLibraryDateManagement"
+ component={Select}
+ dataOptions={getClosedLibraryDateManagementOptions()}
+ />
+
+ >
+ )
+ }
+
+ >
+ )}
-
+ {isEcsRequestRoutingAssociatedFieldsVisible(titleLevelRequestsFeatureEnabled, formValues.ecsRequestRouting) && (
+
+ )}
{
- describe('isConfirmPickupLocationChangeModalShouldBeVisible', () => {
- const OTHER_LAYER = 'other';
+ const OTHER_LAYER = 'other';
+
+ describe('isLayerEdit', () => {
+ it(`should return true for layer equal "${LAYER_EDIT}"`, () => {
+ expect(isLayerEdit(LAYER_EDIT)).toBe(true);
+ });
+ it(`should return false for layer not equal "${LAYER_EDIT}"(${OTHER_LAYER})`, () => {
+ expect(isLayerEdit(OTHER_LAYER)).toBe(false);
+ });
+ });
+
+ describe('isConfirmPickupLocationChangeModalShouldBeVisible', () => {
it(`should return true for layer equal "${LAYER_EDIT}" and value "${UNSELECTED_PICKUP_LOCATION_VALUE}"`, () => {
expect(isConfirmPickupLocationChangeModalShouldBeVisible(LAYER_EDIT, UNSELECTED_PICKUP_LOCATION_VALUE)).toBe(true);
});
diff --git a/src/settings/ServicePoints/ServicePointFormContainer.js b/src/settings/ServicePoints/ServicePointFormContainer.js
index 7b4d61b..ec66497 100644
--- a/src/settings/ServicePoints/ServicePointFormContainer.js
+++ b/src/settings/ServicePoints/ServicePointFormContainer.js
@@ -62,12 +62,19 @@ const ServicePointFormContainer = ({
unset(data, 'holdShelfClosedLibraryDateManagement');
}
+ if (data.ecsRequestRouting) {
+ unset(data, 'shelvingLagTime');
+ unset(data, 'pickupLocation');
+ unset(data, 'holdShelfExpiryPeriod');
+ unset(data, 'holdShelfClosedLibraryDateManagement');
+ unset(data, 'staffSlips');
+ } else {
+ data.staffSlips = transformStaffSlipsData(staffSlips);
+ }
+
unset(data, 'location');
- onSave({
- ...data,
- staffSlips: transformStaffSlipsData(staffSlips)
- });
+ onSave(data);
}, [onSave, transformStaffSlipsData]);
const titleManagerLabel = initialValues.name ? intl.formatMessage({ id:'ui-tenant-settings.settings.items.edit.title' }, { item: initialValues?.name })
@@ -76,7 +83,6 @@ const ServicePointFormContainer = ({
return (
-
({
+ useCirculationSettingsEcsTlrFeature: jest.fn().mockReturnValue({ titleLevelRequestsFeatureEnabled: true }),
+}));
+
const onSave = jest.fn();
const staffSlips = [true, true, true, true];
@@ -86,7 +90,25 @@ describe('ServicePointFormContainer', () => {
userEvent.selectOptions(screen.getByRole('combobox', { name: /settings.servicePoints.pickupLocation/ }), 'true');
- expect(screen.getByRole('option', { name: /settings.servicePoints.pickupLocation.yes/ }).selected).toBe(true);
+ expect(screen.getAllByRole('option', { name: /settings.servicePoints.value.yes/ })[1].selected).toBe(true);
+ });
+
+ describe('ecs request routing', () => {
+ beforeEach(() => {
+ renderServicePointFormContainer();
+ });
+
+ it('should not render pick location', () => {
+ userEvent.selectOptions(screen.getByRole('combobox', { name: /settings.servicePoints.ecsRequestRouting/ }), 'true');
+
+ expect(screen.queryByText(/settings.servicePoints.pickupLocation/)).not.toBeInTheDocument();
+ });
+
+ it('should not render pick location', () => {
+ userEvent.selectOptions(screen.getByRole('combobox', { name: /settings.servicePoints.ecsRequestRouting/ }), 'false');
+
+ expect(screen.queryByText(/settings.servicePoints.pickupLocation/)).toBeInTheDocument();
+ });
});
describe('when pick location is yes', () => {
@@ -97,7 +119,7 @@ describe('ServicePointFormContainer', () => {
describe('when hold shelf expiry interval id is short term period Days', () => {
beforeEach(() => {
- userEvent.selectOptions(screen.getAllByRole('combobox')[1], 'Days');
+ userEvent.selectOptions(screen.getAllByRole('combobox')[2], 'Days');
});
it('should render ServicePointFormContainer closed library date management select with changed options ', () => {
diff --git a/src/settings/ServicePoints/ServicePointManager.js b/src/settings/ServicePoints/ServicePointManager.js
index 8d50b1d..090b7b6 100644
--- a/src/settings/ServicePoints/ServicePointManager.js
+++ b/src/settings/ServicePoints/ServicePointManager.js
@@ -7,13 +7,14 @@ import { TitleManager } from '@folio/stripes/core';
import { injectIntl } from 'react-intl';
import ServicePointDetail from './ServicePointDetail';
import ServicePointFormContainer from './ServicePointFormContainer';
+import { getEcsTlrFeature } from './utils';
class ServicePointManager extends React.Component {
static manifest = Object.freeze({
entries: {
type: 'okapi',
records: 'servicepoints',
- path: 'service-points?query=cql.allRecords=1 sortby name&limit=1000',
+ path: 'service-points?query=cql.allRecords=1 sortby name&limit=1000&includeRoutingServicePoints=true',
resourceShouldRefresh: true,
throwErrors: false,
POST: {
@@ -49,6 +50,11 @@ class ServicePointManager extends React.Component {
limit: '1000',
},
},
+ settings: {
+ type: 'okapi',
+ path: 'circulation/settings?query=(name==ecsTlrFeature)',
+ records: 'circulationSettings',
+ },
});
static propTypes = {
@@ -57,6 +63,9 @@ class ServicePointManager extends React.Component {
entries: PropTypes.shape({
records: PropTypes.arrayOf(PropTypes.object),
}),
+ settings: PropTypes.shape({
+ records: PropTypes.arrayOf(PropTypes.object),
+ }),
staffSlips: PropTypes.object,
}).isRequired,
mutator: PropTypes.shape({
@@ -87,6 +96,8 @@ class ServicePointManager extends React.Component {
}
render() {
+ const { resources } = this.props;
+ const titleLevelRequestsFeatureEnabled = getEcsTlrFeature(resources?.settings?.records);
let entryList = sortBy((this.props.resources.entries || {}).records || [], ['name']);
entryList = entryList.map(item => {
item.pickupLocation = item.pickupLocation || false;
@@ -117,6 +128,7 @@ class ServicePointManager extends React.Component {
nameKey="name"
editable={isEditable}
permissions={permissions}
+ titleLevelRequestsFeatureEnabled={titleLevelRequestsFeatureEnabled}
/>
);
diff --git a/src/settings/ServicePoints/utils.js b/src/settings/ServicePoints/utils.js
index 9df8108..0ac4b4c 100644
--- a/src/settings/ServicePoints/utils.js
+++ b/src/settings/ServicePoints/utils.js
@@ -1,5 +1,6 @@
import React from 'react';
import { FormattedMessage } from 'react-intl';
+import { get } from 'lodash';
export const validateServicePointForm = (values) => {
const errors = {};
@@ -53,3 +54,15 @@ export const getUniquenessValidation = (field, mutator) => {
});
};
};
+
+export const isEcsRequestRoutingVisible = (titleLevelRequestsFeatureEnabled) => (
+ !!titleLevelRequestsFeatureEnabled
+);
+
+export const isEcsRequestRoutingAssociatedFieldsVisible = (titleLevelRequestsFeatureEnabled, ecsRequestRouting) => (
+ (isEcsRequestRoutingVisible(titleLevelRequestsFeatureEnabled) && !ecsRequestRouting) || !isEcsRequestRoutingVisible(titleLevelRequestsFeatureEnabled)
+);
+
+export const getEcsTlrFeature = (data = []) => (
+ get(data, '[0].value.enabled', false)
+);
diff --git a/src/settings/ServicePoints/utils.test.js b/src/settings/ServicePoints/utils.test.js
new file mode 100644
index 0000000..0bdd987
--- /dev/null
+++ b/src/settings/ServicePoints/utils.test.js
@@ -0,0 +1,63 @@
+import {
+ isEcsRequestRoutingVisible,
+ isEcsRequestRoutingAssociatedFieldsVisible,
+ getEcsTlrFeature,
+} from './utils';
+
+describe('isEcsRequestRoutingVisible', () => {
+ it('should return true when titleLevelRequestsFeatureEnabled true', () => {
+ expect(isEcsRequestRoutingVisible(true)).toBe(true);
+ });
+
+ it('should return false when titleLevelRequestsFeatureEnabled false', () => {
+ expect(isEcsRequestRoutingVisible(false)).toBe(false);
+ });
+
+ it('should return false when titleLevelRequestsFeatureEnabled absent', () => {
+ expect(isEcsRequestRoutingVisible(undefined)).toBe(false);
+ });
+});
+
+describe('isEcsRequestRoutingAssociatedFieldsVisible', () => {
+ it('should return false when both condition true', () => {
+ expect(isEcsRequestRoutingAssociatedFieldsVisible(true, true)).toBe(false);
+ });
+
+ it('should return true when first condition false', () => {
+ expect(isEcsRequestRoutingAssociatedFieldsVisible(false, true)).toBe(true);
+ });
+
+ it('should return true when second condition false', () => {
+ expect(isEcsRequestRoutingAssociatedFieldsVisible(true, false)).toBe(true);
+ });
+
+ it('should return true when both condition false', () => {
+ expect(isEcsRequestRoutingAssociatedFieldsVisible(false, false)).toBe(true);
+ });
+});
+
+describe('getEcsTlrFeature', () => {
+ it('should return true when ecsTlrFeature true', () => {
+ const data = [{
+ value: {
+ enabled: true,
+ },
+ }];
+
+ expect(getEcsTlrFeature(data)).toBe(true);
+ });
+
+ it('should return false when ecsTlrFeature false', () => {
+ const data = [{
+ value: {
+ enabled: false,
+ },
+ }];
+
+ expect(getEcsTlrFeature(data)).toBe(false);
+ });
+
+ it('should return false when ecsTlrFeature absent', () => {
+ expect(getEcsTlrFeature(undefined)).toBe(false);
+ });
+});
diff --git a/translations/ui-tenant-settings/en.json b/translations/ui-tenant-settings/en.json
index 3e45643..98e7aa9 100644
--- a/translations/ui-tenant-settings/en.json
+++ b/translations/ui-tenant-settings/en.json
@@ -139,6 +139,7 @@
"settings.servicePoints.code": "Code",
"settings.servicePoints.discoveryDisplayName": "Discovery display name",
"settings.servicePoints.description": "Description",
+ "settings.servicePoints.ecsRequestRouting": "Routing service point",
"settings.servicePoints.shelvingLagTime": "Shelving lag time (minutes)",
"settings.servicePoints.pickupLocation": "Pickup location",
"settings.servicePoints.feeFineOwner": "Fee fine owner",
@@ -165,8 +166,8 @@
"settings.servicePoints.validation.numeric": "Please enter a number to continue",
"settings.servicePoints.validation.name.unique": "Service point name must be unique",
"settings.servicePoints.validation.code.unique": "Code must be unique",
- "settings.servicePoints.pickupLocation.yes": "Yes",
- "settings.servicePoints.pickupLocation.no": "No",
+ "settings.servicePoints.value.yes": "Yes",
+ "settings.servicePoints.value.no": "No",
"settings.intervalPeriod.minutes": "Minutes",
"settings.intervalPeriod.hours": "Hours",
"settings.intervalPeriod.days": "Days",
@@ -232,6 +233,6 @@
"settings.confirmPickupLocationChangeModal.title": "Confirm Pickup location change",
"settings.confirmPickupLocationChangeModal.message": "Changing this Pickup location from \"Yes\" to \"No\" will remove it from existing Request policies and affect all Circulation rules using the policies.",
- "settings.confirmPickupLocationChangeModal.button.confirm": "Confirm",
- "settings.confirmPickupLocationChangeModal.button.cancel": "Back"
+ "settings.modal.button.confirm": "Confirm",
+ "settings.modal.button.cancel": "Back"
}