Skip to content

Commit 543591c

Browse files
authored
DRYD-1885: Error Handling > Placeholders displayed in error message when user does not have permission to create relationships (#303)
1 parent 86129df commit 543591c

File tree

4 files changed

+36
-6
lines changed

4 files changed

+36
-6
lines changed

docs/configuration/messages.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8300,9 +8300,9 @@ export default {
83008300

83018301
"searchToRelateModal.error.locked": "Locked records are selected. Relations cannot be made to locked records.",
83028302

8303-
"searchToRelateModal.error.notPermitted": "{name} records are selected. You are not permitted to create relations to {collectionName}.",
8303+
"searchToRelateModal.error.notPermitted": "{selectedCount, plural, one {{name} record is} other {{name} records are}} selected. You are not permitted to create relations to {collectionName}.",
83048304

8305-
"searchToRelateModal.errorTitle": "Can't Relate",
8305+
"searchToRelateModal.errorTitle": "Permission Denied",
83068306

83078307
"searchToRelateModal.label": "Relate records",
83088308

@@ -8711,4 +8711,4 @@ export default {
87118711
"workflowStateIcon.locked": "Locked",
87128712

87138713
"workflowStateIcon.replicated": "Replicated",
8714-
}
8714+
}

src/components/search/RelateResults.jsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ export default function RelateResults({
6868
err = {
6969
code: 'notPermitted',
7070
values: {
71+
selectedCount: selectedItems.size,
7172
name: <FormattedMessage {...recordMessages.name} />,
7273
collectionName: <FormattedMessage {...recordMessages.collectionName} />,
7374
},

src/components/search/SearchToRelateModal.jsx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ const messages = defineMessages({
3030
},
3131
errorTitle: {
3232
id: 'searchToRelateModal.errorTitle',
33-
defaultMessage: 'Can\'t Relate',
33+
defaultMessage: 'Permission Denied',
3434
},
3535
});
3636

@@ -41,7 +41,7 @@ const errorMessages = defineMessages({
4141
},
4242
notPermitted: {
4343
id: 'searchToRelateModal.error.notPermitted',
44-
defaultMessage: '{name} records are selected. You are not permitted to create relations to {collectionName}.',
44+
defaultMessage: '{selectedCount, plural, one {{name} record is} other {{name} records are}} selected. You are not permitted to create relations to {collectionName}.',
4545
},
4646
});
4747

@@ -55,6 +55,7 @@ const propTypes = {
5555
}),
5656
error: PropTypes.shape({
5757
code: PropTypes.string,
58+
values: PropTypes.object,
5859
}),
5960
isOpen: PropTypes.bool,
6061
perms: PropTypes.instanceOf(Immutable.Map),
@@ -179,7 +180,7 @@ export default class SearchToRelateModal extends Component {
179180
onAcceptButtonClick={onCancelButtonClick}
180181
onCloseButtonClick={onCloseButtonClick}
181182
>
182-
<FormattedMessage {...errorMessages[error.code]} />
183+
<FormattedMessage {...errorMessages[error.code]} values={error.values || {}} />
183184
</Modal>
184185
);
185186
}

test/specs/components/search/SearchToRelateModal.spec.jsx

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -363,4 +363,32 @@ describe('SearchToRelateModal', () => {
363363

364364
message.props.defaultMessage.should.contain('Locked records are selected');
365365
});
366+
367+
it('should render a Modal containing an error message with the error.values being passed', () => {
368+
const error = {
369+
code: 'notPermitted',
370+
values: {
371+
selectedCount: 3,
372+
name: 'Object record',
373+
collectionName: 'Objects',
374+
},
375+
};
376+
377+
const shallowRenderer = createRenderer();
378+
379+
shallowRenderer.render(
380+
<SearchToRelateModal
381+
isOpen
382+
error={error}
383+
/>,
384+
);
385+
386+
const result = shallowRenderer.getRenderOutput();
387+
388+
result.type.should.equal(Modal);
389+
390+
const message = findWithType(result, FormattedMessage);
391+
392+
message.props.values.should.equal(error.values);
393+
});
366394
});

0 commit comments

Comments
 (0)