kibana/x-pack/plugins/lens/public/editor_frame_service/service.test.tsx
Stratoula Kalafateli 08a4586b14
[Lens] Navigate from discover to lens (#77873)
* Create lens action and unregister the visualize one

* remove console

* Implement Discover to Lens, wip, missing tests

* Add unit tests

* fix embed lens to empty dashboard functional tests

* fix suggestions on save

* Fix bug on save button, query and filters should be transferred from discover

* Add functional test for the navigation from Discover to Lens

* PR update after code review

* unregister visualize action only if the action exists

* Change the test to not be flaky

* Move suggestions to editor frame and hide the emptyWorkspace for visualize field

* Update ui actions docs

* Add a retry to remove test flakiness

* Fix bug of infinite loader when removing the y axis dimension

Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>
2020-10-06 11:15:41 +03:00

87 lines
2.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;
* you may not use this file except in compliance with the Elastic License.
*/
import { EditorFrameService } from './service';
import { coreMock } from 'src/core/public/mocks';
import {
MockedSetupDependencies,
MockedStartDependencies,
createMockSetupDependencies,
createMockStartDependencies,
} from './mocks';
import { CoreSetup } from 'kibana/public';
// mock away actual dependencies to prevent all of it being loaded
jest.mock('./embeddable/embeddable_factory', () => ({
EmbeddableFactory: class Mock {},
}));
describe('editor_frame service', () => {
let pluginInstance: EditorFrameService;
let mountpoint: Element;
let pluginSetupDependencies: MockedSetupDependencies;
let pluginStartDependencies: MockedStartDependencies;
beforeEach(() => {
pluginInstance = new EditorFrameService();
mountpoint = document.createElement('div');
pluginSetupDependencies = createMockSetupDependencies();
pluginStartDependencies = createMockStartDependencies();
});
afterEach(() => {
mountpoint.remove();
});
it('should create an editor frame instance which mounts and unmounts', async () => {
await expect(
(async () => {
pluginInstance.setup(
coreMock.createSetup() as CoreSetup<MockedStartDependencies>,
pluginSetupDependencies,
jest.fn()
);
const publicAPI = pluginInstance.start(coreMock.createStart(), pluginStartDependencies);
const instance = await publicAPI.createInstance();
instance.mount(mountpoint, {
onError: jest.fn(),
onChange: jest.fn(),
dateRange: { fromDate: '', toDate: '' },
query: { query: '', language: 'lucene' },
filters: [],
showNoDataPopover: jest.fn(),
initialContext: {
indexPatternId: '1',
fieldName: 'test',
},
});
instance.unmount();
})()
).resolves.toBeUndefined();
});
it('should not have child nodes after unmount', async () => {
pluginInstance.setup(
coreMock.createSetup() as CoreSetup<MockedStartDependencies>,
pluginSetupDependencies,
jest.fn()
);
const publicAPI = pluginInstance.start(coreMock.createStart(), pluginStartDependencies);
const instance = await publicAPI.createInstance();
instance.mount(mountpoint, {
onError: jest.fn(),
onChange: jest.fn(),
dateRange: { fromDate: '', toDate: '' },
query: { query: '', language: 'lucene' },
filters: [],
showNoDataPopover: jest.fn(),
});
instance.unmount();
expect(mountpoint.hasChildNodes()).toBe(false);
});
});