Skip to content

Commit

Permalink
[Discover] Add kibana services provider for embeddable (elastic#121621)
Browse files Browse the repository at this point in the history
* [Discover] add kibana services provider for embeddable

* [Discover] add functional test

* [Discover] fix functional test

* [Discover] fix data grid test

* [Discover] go to discover main page before each test

* [Discover] remove redundant navigation to discover

Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>
(cherry picked from commit f5aa068)

# Conflicts:
#	src/plugins/discover/public/application/embeddable/saved_search_grid.tsx
  • Loading branch information
dimaanj committed Jan 11, 2022
1 parent ae66f7d commit 6e884b2
Show file tree
Hide file tree
Showing 3 changed files with 80 additions and 19 deletions.
Expand Up @@ -9,9 +9,10 @@ import React, { useState } from 'react';
import { I18nProvider } from '@kbn/i18n/react';
import { EuiFlexGroup, EuiFlexItem } from '@elastic/eui';
import { DiscoverGrid, DiscoverGridProps } from '../components/discover_grid/discover_grid';
import { getServices } from '../../kibana_services';
import { ElasticSearchHit } from '../doc_views/doc_views_types';
import { TotalDocuments } from '../apps/main/components/total_documents/total_documents';
import { getServices } from '../kibana_services';
import { TotalDocuments } from '../application/main/components/total_documents/total_documents';
import { ElasticSearchHit } from '../types';
import { KibanaContextProvider } from '../../../kibana_react/public';

export interface DiscoverGridEmbeddableProps extends DiscoverGridProps {
totalHitCount: number;
Expand All @@ -22,25 +23,33 @@ export const DataGridMemoized = React.memo((props: DiscoverGridProps) => (
));

export function DiscoverGridEmbeddable(props: DiscoverGridEmbeddableProps) {
const services = getServices();
const [expandedDoc, setExpandedDoc] = useState<ElasticSearchHit | undefined>(undefined);

return (
<I18nProvider>
<EuiFlexGroup style={{ width: '100%' }} direction="column" gutterSize="xs" responsive={false}>
{props.totalHitCount !== 0 && (
<EuiFlexItem grow={false} style={{ alignSelf: 'flex-end' }}>
<TotalDocuments totalHitCount={props.totalHitCount} />
<KibanaContextProvider services={services}>
<EuiFlexGroup
style={{ width: '100%' }}
direction="column"
gutterSize="xs"
responsive={false}
>
{props.totalHitCount !== 0 && (
<EuiFlexItem grow={false} style={{ alignSelf: 'flex-end' }}>
<TotalDocuments totalHitCount={props.totalHitCount} />
</EuiFlexItem>
)}
<EuiFlexItem style={{ minHeight: 0 }}>
<DataGridMemoized
{...props}
setExpandedDoc={setExpandedDoc}
expandedDoc={expandedDoc}
services={services}
/>
</EuiFlexItem>
)}
<EuiFlexItem style={{ minHeight: 0 }}>
<DataGridMemoized
{...props}
setExpandedDoc={setExpandedDoc}
expandedDoc={expandedDoc}
services={getServices()}
/>
</EuiFlexItem>
</EuiFlexGroup>
</EuiFlexGroup>
</KibanaContextProvider>
</I18nProvider>
);
}
54 changes: 53 additions & 1 deletion test/functional/apps/discover/_data_grid_doc_table.ts
Expand Up @@ -17,7 +17,8 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
const esArchiver = getService('esArchiver');
const kibanaServer = getService('kibanaServer');
const monacoEditor = getService('monacoEditor');
const PageObjects = getPageObjects(['common', 'discover', 'header', 'timePicker']);
const dashboardAddPanel = getService('dashboardAddPanel');
const PageObjects = getPageObjects(['common', 'discover', 'header', 'timePicker', 'dashboard']);
const defaultSettings = {
defaultIndex: 'logstash-*',
'doc_table:legacy': false,
Expand All @@ -32,6 +33,9 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
await esArchiver.loadIfNeeded('test/functional/fixtures/es_archiver/logstash_functional');
await kibanaServer.uiSettings.replace(defaultSettings);
await PageObjects.timePicker.setDefaultAbsoluteRangeViaUiSettings();
});

beforeEach(async () => {
await PageObjects.common.navigateToApp('discover');
});

Expand Down Expand Up @@ -79,6 +83,54 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
expect(popoverJson).to.be(flyoutJson);
});

it('should show popover with expanded cell content by click on expand button on embeddable', async () => {
log.debug('open popover with expanded cell content to get json from the editor');
await PageObjects.timePicker.setDefaultAbsoluteRange();
await PageObjects.discover.waitUntilSearchingHasFinished();
await PageObjects.discover.saveSearch('expand-cell-search');

await PageObjects.common.navigateToApp('dashboard');
await PageObjects.dashboard.gotoDashboardLandingPage();
await PageObjects.dashboard.clickNewDashboard();
await PageObjects.header.waitUntilLoadingHasFinished();
await dashboardAddPanel.addSavedSearch('expand-cell-search');

await retry.waitForWithTimeout('timestamp matches expected doc', 5000, async () => {
const cell = await dataGrid.getCellElement(0, 2);
const text = await cell.getVisibleText();
log.debug(`row document timestamp: ${text}`);
return text === 'Sep 22, 2015 @ 23:50:13.253';
});
const docCell = await dataGrid.getCellElement(0, 3);
await docCell.click();
const expandCellContentButton = await docCell.findByClassName(
'euiDataGridRowCell__expandButtonIcon'
);
await expandCellContentButton.click();

let expandDocId = '';

await retry.waitForWithTimeout('expandDocId to be valid', 5000, async () => {
const text = await monacoEditor.getCodeEditorValue();
return (expandDocId = JSON.parse(text)._id) === 'AU_x3_g4GFA8no6QjkYX';
});
log.debug(`expanded document id: ${expandDocId}`);

await dataGrid.clickRowToggle();
await find.clickByCssSelectorWhenNotDisabled('#kbn_doc_viewer_tab_1');

await retry.waitForWithTimeout(
'document id in flyout matching the expanded document id',
5000,
async () => {
const text = await monacoEditor.getCodeEditorValue();
const flyoutJson = JSON.parse(text);
log.debug(`flyout document id: ${flyoutJson._id}`);
return flyoutJson._id === expandDocId;
}
);
});

describe('expand a document row', function () {
const rowToInspect = 1;

Expand Down
2 changes: 1 addition & 1 deletion test/functional/services/data_grid.ts
Expand Up @@ -161,7 +161,7 @@ export class DataGridService extends FtrService {
options: SelectOptions = { isAnchorRow: false, rowIndex: 0 }
): Promise<void> {
const row = await this.getRow(options);
const toggle = await row[0];
const toggle = await row[0].findByTestSubject('~docTableExpandToggleColumn');
await toggle.click();
}

Expand Down

0 comments on commit 6e884b2

Please sign in to comment.