kibana/x-pack/test/saved_object_tagging/functional/tests/create.ts
Spencer f466ebf1a3
[esArchiver] drop support for --dir, use repo-relative paths instead (#101345)
Co-authored-by: spalger <spalger@users.noreply.github.com>
2021-06-08 17:37:42 -04:00

126 lines
3.7 KiB
TypeScript

/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0; you may not use this file except in compliance with the Elastic License
* 2.0.
*/
import expect from '@kbn/expect';
import { FtrProviderContext } from '../ftr_provider_context';
// eslint-disable-next-line import/no-default-export
export default function ({ getPageObjects, getService }: FtrProviderContext) {
const esArchiver = getService('esArchiver');
const PageObjects = getPageObjects(['common', 'security', 'savedObjects', 'tagManagement']);
const tagManagementPage = PageObjects.tagManagement;
describe('create tag', () => {
let tagModal: typeof tagManagementPage['tagModal'];
before(async () => {
tagModal = tagManagementPage.tagModal;
await esArchiver.load(
'x-pack/test/saved_object_tagging/common/fixtures/es_archiver/functional_base'
);
await tagManagementPage.navigateTo();
});
after(async () => {
await esArchiver.unload(
'x-pack/test/saved_object_tagging/common/fixtures/es_archiver/functional_base'
);
});
afterEach(async () => {
await tagModal.closeIfOpened();
});
it('creates a valid tag', async () => {
await tagModal.openCreate();
await tagModal.fillForm(
{
name: 'my-new-tag',
description: 'I just added this tag',
color: '#FF00CC',
},
{ submit: true }
);
await tagModal.waitUntilClosed();
await tagManagementPage.waitUntilTableIsLoaded();
const tags = await tagManagementPage.getDisplayedTagsInfo();
const newTag = tags.find((tag) => tag.name === 'my-new-tag');
expect(newTag).not.to.be(undefined);
expect(newTag!.description).to.eql('I just added this tag');
});
it('show errors when the validation fails', async () => {
await tagModal.openCreate();
await tagModal.fillForm(
{
name: 'a',
description: 'The name will fails validation',
color: '#FF00CC',
},
{ submit: true }
);
expect(await tagModal.isOpened()).to.be(true);
expect(await tagModal.hasError()).to.be(true);
const errors = await tagModal.getValidationErrors();
expect(errors.name).not.to.be(undefined);
expect(errors.color).to.be(undefined);
});
it('allows to create the tag once the errors are fixed', async () => {
await tagModal.openCreate();
await tagModal.fillForm(
{
name: 'a',
description: 'The name will fails validation',
color: '#FF00CC',
},
{ submit: true }
);
expect(await tagModal.isOpened()).to.be(true);
expect(await tagModal.hasError()).to.be(true);
await tagModal.fillForm(
{
name: 'valid name',
},
{ submit: true }
);
await tagModal.waitUntilClosed();
await tagManagementPage.waitUntilTableIsLoaded();
const tags = await tagManagementPage.getDisplayedTagsInfo();
const newTag = tags.find((tag) => tag.name === 'valid name');
expect(newTag).not.to.be(undefined);
});
it('allow to close the modal without creating the tag', async () => {
await tagModal.openCreate();
await tagModal.fillForm(
{
name: 'canceled-tag',
description: 'I will not add this tag',
color: '#FF00CC',
},
{ submit: false }
);
await tagModal.clickCancel();
await tagModal.waitUntilClosed();
const tags = await tagManagementPage.getDisplayedTagsInfo();
const newTag = tags.find((tag) => tag.name === 'canceled-tag');
expect(newTag).to.be(undefined);
});
});
}