[SOM] Improve warning when trying to delete hidden objects (#111698)

* improve warning message when trying to delete hidden saved objects

* improve message

* fix pluralize

* fix title
This commit is contained in:
Pierre Gayvallet 2021-09-10 10:51:57 +02:00 committed by GitHub
parent b9f3fceea5
commit c78121ce5a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 88 additions and 9 deletions

View file

@ -14,15 +14,21 @@ import { DeleteConfirmModal } from './delete_confirm_modal';
interface CreateObjectOptions {
namespaces?: string[];
hiddenType?: boolean;
}
const createObject = ({ namespaces }: CreateObjectOptions = {}): SavedObjectWithMetadata => ({
const createObject = ({
namespaces,
hiddenType = false,
}: CreateObjectOptions = {}): SavedObjectWithMetadata => ({
id: 'foo',
type: 'bar',
attributes: {},
references: [],
namespaces,
meta: {},
meta: {
hiddenType,
},
});
describe('DeleteConfirmModal', () => {
@ -81,7 +87,7 @@ describe('DeleteConfirmModal', () => {
isDeleting={false}
onConfirm={onConfirm}
onCancel={onCancel}
selectedObjects={[]}
selectedObjects={[createObject()]}
/>
);
wrapper.find('EuiButton').simulate('click');
@ -90,6 +96,81 @@ describe('DeleteConfirmModal', () => {
expect(onCancel).not.toHaveBeenCalled();
});
describe('when trying to delete hidden objects', () => {
it('excludes the hidden objects from the table', () => {
const objs = [
createObject({ hiddenType: true }),
createObject({ hiddenType: false }),
createObject({ hiddenType: true }),
];
const wrapper = mountWithIntl(
<DeleteConfirmModal
isDeleting={false}
onConfirm={onConfirm}
onCancel={onCancel}
selectedObjects={objs}
/>
);
expect(wrapper.find('.euiTableRow')).toHaveLength(1);
});
it('displays a callout when at least one object cannot be deleted', () => {
const objs = [
createObject({ hiddenType: false }),
createObject({ hiddenType: false }),
createObject({ hiddenType: true }),
];
const wrapper = mountWithIntl(
<DeleteConfirmModal
isDeleting={false}
onConfirm={onConfirm}
onCancel={onCancel}
selectedObjects={objs}
/>
);
const callout = findTestSubject(wrapper, 'cannotDeleteObjectsConfirmWarning');
expect(callout).toHaveLength(1);
});
it('does not display a callout when all objects can be deleted', () => {
const objs = [
createObject({ hiddenType: false }),
createObject({ hiddenType: false }),
createObject({ hiddenType: false }),
];
const wrapper = mountWithIntl(
<DeleteConfirmModal
isDeleting={false}
onConfirm={onConfirm}
onCancel={onCancel}
selectedObjects={objs}
/>
);
const callout = findTestSubject(wrapper, 'cannotDeleteObjectsConfirmWarning');
expect(callout).toHaveLength(0);
});
it('disable the submit button when all objects cannot be deleted', () => {
const objs = [
createObject({ hiddenType: true }),
createObject({ hiddenType: true }),
createObject({ hiddenType: true }),
];
const wrapper = mountWithIntl(
<DeleteConfirmModal
isDeleting={false}
onConfirm={onConfirm}
onCancel={onCancel}
selectedObjects={objs}
/>
);
expect(wrapper.find('EuiButton').getDOMNode()).toBeDisabled();
});
});
describe('shared objects warning', () => {
it('does not display a callout when no objects are shared', () => {
const objs = [

View file

@ -86,7 +86,7 @@ export const DeleteConfirmModal: FC<DeleteConfirmModalProps> = ({
title={
<FormattedMessage
id="savedObjectsManagement.objectsTable.deleteConfirmModal.cannotDeleteCallout.title"
defaultMessage="Some objects cannot deleted"
defaultMessage="Some objects cannot be deleted"
/>
}
iconType="alert"
@ -95,7 +95,8 @@ export const DeleteConfirmModal: FC<DeleteConfirmModalProps> = ({
<p>
<FormattedMessage
id="savedObjectsManagement.objectsTable.deleteConfirmModal.cannotDeleteCallout.content"
defaultMessage="Some of the selected objects cannot be deleted, and are not listed in the table summary"
defaultMessage="{objectCount, plural, one {# object is} other {# objects are}} hidden and cannot be deleted. {objectCount, plural, one {It was} other {They were}} excluded from the table summary."
values={{ objectCount: undeletableObjects.length }}
/>
</p>
</EuiCallOut>
@ -186,6 +187,7 @@ export const DeleteConfirmModal: FC<DeleteConfirmModalProps> = ({
fill
color="danger"
onClick={onConfirm}
disabled={deletableObjects.length === 0}
data-test-subj="confirmModalConfirmButton"
>
<FormattedMessage

View file

@ -4389,8 +4389,6 @@
"savedObjectsManagement.managementSectionLabel": "保存されたオブジェクト",
"savedObjectsManagement.objects.savedObjectsDescription": "保存された検索、ビジュアライゼーション、ダッシュボードのインポート、エクスポート、管理を行います。",
"savedObjectsManagement.objects.savedObjectsTitle": "保存されたオブジェクト",
"savedObjectsManagement.objectsTable.deleteConfirmModal.cannotDeleteCallout.content": "一部の選択したオブジェクトは削除できません。テーブル概要の一覧には表示されません",
"savedObjectsManagement.objectsTable.deleteConfirmModal.cannotDeleteCallout.title": "一部のオブジェクトを削除できません",
"savedObjectsManagement.objectsTable.deleteConfirmModal.sharedObjectsCallout.content": "共有オブジェクトは属しているすべてのスペースから削除されます。",
"savedObjectsManagement.objectsTable.deleteSavedObjectsConfirmModal.cancelButtonLabel": "キャンセル",
"savedObjectsManagement.objectsTable.deleteSavedObjectsConfirmModal.idColumnName": "Id",

View file

@ -4430,8 +4430,6 @@
"savedObjectsManagement.managementSectionLabel": "已保存对象",
"savedObjectsManagement.objects.savedObjectsDescription": "导入、导出和管理您的已保存搜索、可视化和仪表板。",
"savedObjectsManagement.objects.savedObjectsTitle": "已保存对象",
"savedObjectsManagement.objectsTable.deleteConfirmModal.cannotDeleteCallout.content": "部分选定的对象无法删除,且不会列在表摘要中",
"savedObjectsManagement.objectsTable.deleteConfirmModal.cannotDeleteCallout.title": "一些对象无法删除",
"savedObjectsManagement.objectsTable.deleteConfirmModal.sharedObjectsCallout.content": "共享对象已从其所在的各个工作区中移除。",
"savedObjectsManagement.objectsTable.deleteConfirmModal.sharedObjectsCallout.title": "{sharedObjectsCount, plural, one {# 个已保存对象已共享} other {您的已保存对象有 # 个已共享}}",
"savedObjectsManagement.objectsTable.deleteSavedObjectsConfirmModal.cancelButtonLabel": "取消",