orc-shared 1.6.0-dev.6 → 1.6.0-dev.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/MaterialUI/DataDisplay/PredefinedElements/GlobalErrorMessages.js +2 -1
- package/dist/components/MaterialUI/DataDisplay/PredefinedElements/LookupDisplayValue.js +7 -1
- package/dist/selectors/metadata.js +1 -1
- package/dist/utils/responseProcessingHelper.js +2 -1
- package/package.json +1 -1
- package/src/components/MaterialUI/DataDisplay/PredefinedElements/GlobalErrorMessages.js +1 -0
- package/src/components/MaterialUI/DataDisplay/PredefinedElements/GlobalErrorMessages.test.js +28 -0
- package/src/components/MaterialUI/DataDisplay/PredefinedElements/LookupDisplayValue.js +8 -2
- package/src/components/MaterialUI/DataDisplay/PredefinedElements/LookupDisplayValue.test.js +36 -0
- package/src/selectors/metadata.js +1 -1
- package/src/selectors/metadata.test.js +12 -0
- package/src/utils/responseProcessingHelper.js +1 -0
- package/src/utils/responseProcessingHelper.test.js +36 -0
|
@@ -81,7 +81,8 @@ var GlobalErrorMessagesModal = function GlobalErrorMessagesModal(_ref) {
|
|
|
81
81
|
}, /*#__PURE__*/_react.default.createElement(_ListItemIcon.default, null, "\u25CF"), /*#__PURE__*/_react.default.createElement(_ListItemText.default, null, hasLookup && /*#__PURE__*/_react.default.createElement(_LookupDisplayValue.default, {
|
|
82
82
|
moduleName: msg.lookupModule,
|
|
83
83
|
lookupName: msg.lookupName,
|
|
84
|
-
lookupKey: msg.lookupKey
|
|
84
|
+
lookupKey: msg.lookupKey,
|
|
85
|
+
lookupReplacementValues: msg.lookupReplacementValues
|
|
85
86
|
}), !hasLookup && msg.message));
|
|
86
87
|
})))));
|
|
87
88
|
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, children, /*#__PURE__*/_react.default.createElement(_ActionModal.default, {
|
|
@@ -6,7 +6,7 @@ var _react = _interopRequireDefault(require("react"));
|
|
|
6
6
|
var _TooltippedTypography = _interopRequireDefault(require("../TooltippedElements/TooltippedTypography"));
|
|
7
7
|
var _metadata = require("../../../../selectors/metadata");
|
|
8
8
|
var _reactRedux = require("react-redux");
|
|
9
|
-
var _excluded = ["moduleName", "lookupName", "lookupKey"];
|
|
9
|
+
var _excluded = ["moduleName", "lookupName", "lookupKey", "lookupReplacementValues"];
|
|
10
10
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
11
|
(function () {
|
|
12
12
|
var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;
|
|
@@ -29,8 +29,14 @@ var LookupDisplayValue = function LookupDisplayValue(_ref) {
|
|
|
29
29
|
var moduleName = _ref.moduleName,
|
|
30
30
|
lookupName = _ref.lookupName,
|
|
31
31
|
lookupKey = _ref.lookupKey,
|
|
32
|
+
lookupReplacementValues = _ref.lookupReplacementValues,
|
|
32
33
|
otherProps = _objectWithoutProperties(_ref, _excluded);
|
|
33
34
|
var value = (0, _reactRedux.useSelector)((0, _metadata.namedLookupLocalizedSelector)(moduleName, lookupName, lookupKey));
|
|
35
|
+
if (value && lookupReplacementValues) {
|
|
36
|
+
Object.keys(lookupReplacementValues).forEach(function (key) {
|
|
37
|
+
value = value.replace("{" + key + "}", lookupReplacementValues[key]);
|
|
38
|
+
});
|
|
39
|
+
}
|
|
34
40
|
return /*#__PURE__*/_react.default.createElement(_TooltippedTypography.default, _extends({
|
|
35
41
|
noWrap: true
|
|
36
42
|
}, otherProps, {
|
|
@@ -59,7 +59,7 @@ var mappedLookupsListSelector = (0, _utils.memoize)(function (moduleName) {
|
|
|
59
59
|
exports.mappedLookupsListSelector = mappedLookupsListSelector;
|
|
60
60
|
var lookupValuesSelector = (0, _utils.memoize)(function (moduleName, lookupName) {
|
|
61
61
|
return (0, _reselect.createSelector)(lookups, function (lookups) {
|
|
62
|
-
return lookups.getIn([moduleName, "index", lookupName]) || _immutable.default.Map();
|
|
62
|
+
return lookups.getIn([moduleName.toLowerCase(), "index", lookupName]) || _immutable.default.Map();
|
|
63
63
|
});
|
|
64
64
|
});
|
|
65
65
|
var lookupByNameSelector = (0, _utils.memoize)(function (moduleName, lookupName) {
|
|
@@ -46,7 +46,8 @@ var extractStandardErrorMessagesFromResponse = function extractStandardErrorMess
|
|
|
46
46
|
message: err.message,
|
|
47
47
|
lookupModule: err.lookupModule,
|
|
48
48
|
lookupName: err.lookupName,
|
|
49
|
-
lookupKey: err.lookupKey
|
|
49
|
+
lookupKey: err.lookupKey,
|
|
50
|
+
lookupReplacementValues: err.lookupReplacementValues
|
|
50
51
|
});
|
|
51
52
|
});
|
|
52
53
|
}
|
package/package.json
CHANGED
package/src/components/MaterialUI/DataDisplay/PredefinedElements/GlobalErrorMessages.test.js
CHANGED
|
@@ -48,6 +48,17 @@ const metadataPayload = {
|
|
|
48
48
|
isActive: false,
|
|
49
49
|
isSystem: true,
|
|
50
50
|
},
|
|
51
|
+
MessageWithArguments: {
|
|
52
|
+
id: "23caa0ebecd04792a96c2f8df5b9b35a",
|
|
53
|
+
value: "MessageWithArguments",
|
|
54
|
+
lookupId: "MessageWithArguments",
|
|
55
|
+
displayName: {
|
|
56
|
+
"en-US": "This is the message with arguments {customKey1} {customKey2}",
|
|
57
|
+
},
|
|
58
|
+
sortOrder: 1,
|
|
59
|
+
isActive: false,
|
|
60
|
+
isSystem: true,
|
|
61
|
+
},
|
|
51
62
|
},
|
|
52
63
|
displayName: {
|
|
53
64
|
"en-US": "Order Status",
|
|
@@ -94,6 +105,12 @@ describe("GlobalErrorMessagesModal", () => {
|
|
|
94
105
|
messages: [
|
|
95
106
|
{ message: "error msg" },
|
|
96
107
|
{ lookupModule: "order", lookupName: "OrderStatus", lookupKey: "InProgress" },
|
|
108
|
+
{
|
|
109
|
+
lookupModule: "order",
|
|
110
|
+
lookupName: "OrderStatus",
|
|
111
|
+
lookupKey: "MessageWithArguments",
|
|
112
|
+
lookupReplacementValues: { customKey1: "val1", customKey2: "val2" },
|
|
113
|
+
},
|
|
97
114
|
],
|
|
98
115
|
},
|
|
99
116
|
];
|
|
@@ -110,6 +127,17 @@ describe("GlobalErrorMessagesModal", () => {
|
|
|
110
127
|
<LookupDisplayValue moduleName="order" lookupName="OrderStatus" lookupKey="InProgress" />
|
|
111
128
|
</ListItemText>
|
|
112
129
|
</ListItem>
|
|
130
|
+
<ListItem key={2}>
|
|
131
|
+
<ListItemIcon>●</ListItemIcon>
|
|
132
|
+
<ListItemText>
|
|
133
|
+
<LookupDisplayValue
|
|
134
|
+
moduleName="order"
|
|
135
|
+
lookupName="OrderStatus"
|
|
136
|
+
lookupKey="MessageWithArguments"
|
|
137
|
+
lookupReplacementValues={{ customKey1: "val1", customKey2: "val2" }}
|
|
138
|
+
/>
|
|
139
|
+
</ListItemText>
|
|
140
|
+
</ListItem>
|
|
113
141
|
</List>
|
|
114
142
|
</Grid>
|
|
115
143
|
);
|
|
@@ -3,8 +3,14 @@ import TooltippedTypography from "../TooltippedElements/TooltippedTypography";
|
|
|
3
3
|
import { namedLookupLocalizedSelector } from "../../../../selectors/metadata";
|
|
4
4
|
import { useSelector } from "react-redux";
|
|
5
5
|
|
|
6
|
-
const LookupDisplayValue = ({ moduleName, lookupName, lookupKey, ...otherProps }) => {
|
|
7
|
-
|
|
6
|
+
const LookupDisplayValue = ({ moduleName, lookupName, lookupKey, lookupReplacementValues, ...otherProps }) => {
|
|
7
|
+
let value = useSelector(namedLookupLocalizedSelector(moduleName, lookupName, lookupKey));
|
|
8
|
+
|
|
9
|
+
if (value && lookupReplacementValues) {
|
|
10
|
+
Object.keys(lookupReplacementValues).forEach(key => {
|
|
11
|
+
value = value.replace("{" + key + "}", lookupReplacementValues[key]);
|
|
12
|
+
});
|
|
13
|
+
}
|
|
8
14
|
|
|
9
15
|
return <TooltippedTypography noWrap {...otherProps} children={value} titleValue={value} />;
|
|
10
16
|
};
|
|
@@ -36,6 +36,17 @@ const metadataPayload = {
|
|
|
36
36
|
isActive: false,
|
|
37
37
|
isSystem: true,
|
|
38
38
|
},
|
|
39
|
+
MessageWithArguments: {
|
|
40
|
+
id: "23caa0ebecd04792a96c2f8df5b9b35a",
|
|
41
|
+
value: "MessageWithArguments",
|
|
42
|
+
lookupId: "MessageWithArguments",
|
|
43
|
+
displayName: {
|
|
44
|
+
"en-US": "This is the message with arguments {customKey1} {customKey2}",
|
|
45
|
+
},
|
|
46
|
+
sortOrder: 1,
|
|
47
|
+
isActive: false,
|
|
48
|
+
isSystem: true,
|
|
49
|
+
},
|
|
39
50
|
},
|
|
40
51
|
displayName: {
|
|
41
52
|
"en-US": "Order Status",
|
|
@@ -82,4 +93,29 @@ describe("LookupDisplayValue", () => {
|
|
|
82
93
|
|
|
83
94
|
expect(component, "when mounted", "to satisfy", expected);
|
|
84
95
|
});
|
|
96
|
+
|
|
97
|
+
it("Renders lookup value with arguments", () => {
|
|
98
|
+
const component = (
|
|
99
|
+
<TestWrapper provider={{ store }} memoryRouter stylesProvider muiThemeProvider={{ theme }}>
|
|
100
|
+
<LookupDisplayValue
|
|
101
|
+
moduleName="order"
|
|
102
|
+
lookupName="OrderStatus"
|
|
103
|
+
lookupKey="MessageWithArguments"
|
|
104
|
+
lookupReplacementValues={{ customKey1: "val1", customKey2: "val2" }}
|
|
105
|
+
/>
|
|
106
|
+
</TestWrapper>
|
|
107
|
+
);
|
|
108
|
+
|
|
109
|
+
const expected = (
|
|
110
|
+
<TestWrapper provider={{ store }} memoryRouter stylesProvider muiThemeProvider={{ theme }}>
|
|
111
|
+
<TooltippedTypography
|
|
112
|
+
noWrap
|
|
113
|
+
children={"This is the message with arguments val1 val2"}
|
|
114
|
+
titleValue={"This is the message with arguments val1 val2"}
|
|
115
|
+
/>
|
|
116
|
+
</TestWrapper>
|
|
117
|
+
);
|
|
118
|
+
|
|
119
|
+
expect(component, "when mounted", "to satisfy", expected);
|
|
120
|
+
});
|
|
85
121
|
});
|
|
@@ -30,7 +30,7 @@ export const mappedLookupsListSelector = memoize(moduleName =>
|
|
|
30
30
|
);
|
|
31
31
|
|
|
32
32
|
const lookupValuesSelector = memoize((moduleName, lookupName) =>
|
|
33
|
-
createSelector(lookups, lookups => lookups.getIn([moduleName, "index", lookupName]) || Immutable.Map()),
|
|
33
|
+
createSelector(lookups, lookups => lookups.getIn([moduleName.toLowerCase(), "index", lookupName]) || Immutable.Map()),
|
|
34
34
|
);
|
|
35
35
|
|
|
36
36
|
export const lookupByNameSelector = memoize((moduleName, lookupName) =>
|
|
@@ -394,6 +394,18 @@ describe("namedLookupValuesSelector", () => {
|
|
|
394
394
|
"Annulla per motivo 1",
|
|
395
395
|
);
|
|
396
396
|
});
|
|
397
|
+
|
|
398
|
+
it("retrieves localized values with an uppercase module", () => {
|
|
399
|
+
expect(
|
|
400
|
+
namedLookupLocalizedSelector,
|
|
401
|
+
"when called with",
|
|
402
|
+
["ORDER", "CanceledStatusReasons", "CanceledReason1"],
|
|
403
|
+
"when called with",
|
|
404
|
+
[state],
|
|
405
|
+
"to satisfy",
|
|
406
|
+
"Annulla per motivo 1",
|
|
407
|
+
);
|
|
408
|
+
});
|
|
397
409
|
});
|
|
398
410
|
|
|
399
411
|
describe("selectCurrentLookupDetails", () => {
|
|
@@ -179,4 +179,40 @@ describe("extractStandardErrorMessagesFromResponse", () => {
|
|
|
179
179
|
],
|
|
180
180
|
});
|
|
181
181
|
});
|
|
182
|
+
|
|
183
|
+
it("Returns error with empty messages with 500 with messages containing arguments", () => {
|
|
184
|
+
const response = {
|
|
185
|
+
error: true,
|
|
186
|
+
payload: {
|
|
187
|
+
status: 500,
|
|
188
|
+
response: {
|
|
189
|
+
errors: [
|
|
190
|
+
{
|
|
191
|
+
message: "msg1",
|
|
192
|
+
lookupModule: "mod2",
|
|
193
|
+
lookupName: "name3",
|
|
194
|
+
lookupKey: "key4",
|
|
195
|
+
lookupReplacementValues: { key: "val" },
|
|
196
|
+
},
|
|
197
|
+
{ message: "", lookupModule: "mod5", lookupName: "name5", lookupKey: "key5" },
|
|
198
|
+
],
|
|
199
|
+
},
|
|
200
|
+
},
|
|
201
|
+
};
|
|
202
|
+
const extractedMessages = extractStandardErrorMessagesFromResponse(response, "fallback module", "fallback name");
|
|
203
|
+
|
|
204
|
+
expect(extractedMessages, "to equal", {
|
|
205
|
+
hasErrors: true,
|
|
206
|
+
messages: [
|
|
207
|
+
{
|
|
208
|
+
message: "msg1",
|
|
209
|
+
lookupModule: "mod2",
|
|
210
|
+
lookupName: "name3",
|
|
211
|
+
lookupKey: "key4",
|
|
212
|
+
lookupReplacementValues: { key: "val" },
|
|
213
|
+
},
|
|
214
|
+
{ message: "", lookupModule: "mod5", lookupName: "name5", lookupKey: "key5" },
|
|
215
|
+
],
|
|
216
|
+
});
|
|
217
|
+
});
|
|
182
218
|
});
|