Create @kbn/discover-utils package (#162004)

## Summary

Creates a shared package for Discover utils/services/hooks,
`@kbn/discover-utils`. Moves a couple of utils there
(`buildDataTableRecord`/`getDocId`). This will be the future home for
many services/utils that are shared between the Discover app and its
packaged components (like unified field list, unified histogram, etc.)

### Checklist

- [ ]
[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)
was added for features that require explanation or tutorials
- [x] [Unit or functional
tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)
were updated or added to match the most common scenarios

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
This commit is contained in:
Lukas Olson 2023-07-18 13:34:09 -07:00 committed by GitHub
parent 384e2eda83
commit 2a689fa787
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
116 changed files with 760 additions and 594 deletions

1
.github/CODEOWNERS vendored
View file

@ -330,6 +330,7 @@ examples/discover_customization_examples @elastic/kibana-data-discovery
x-pack/plugins/discover_enhanced @elastic/kibana-data-discovery
x-pack/plugins/discover_log_explorer @elastic/infra-monitoring-ui
src/plugins/discover @elastic/kibana-data-discovery
packages/kbn-discover-utils @elastic/kibana-data-discovery
packages/kbn-doc-links @elastic/docs
packages/kbn-docs-utils @elastic/kibana-operations
packages/kbn-dom-drag-drop @elastic/kibana-visualizations @elastic/kibana-data-discovery

View file

@ -22,6 +22,7 @@
"defaultNavigation": "packages/default-nav",
"devTools": "src/plugins/dev_tools",
"discover": "src/plugins/discover",
"discover-utils": "packages/kbn-discover-utils",
"savedSearch": "src/plugins/saved_search",
"embeddableApi": "src/plugins/embeddable",
"embeddableExamples": "examples/embeddable_examples",

View file

@ -372,6 +372,7 @@
"@kbn/discover-enhanced-plugin": "link:x-pack/plugins/discover_enhanced",
"@kbn/discover-log-explorer-plugin": "link:x-pack/plugins/discover_log_explorer",
"@kbn/discover-plugin": "link:src/plugins/discover",
"@kbn/discover-utils": "link:packages/kbn-discover-utils",
"@kbn/doc-links": "link:packages/kbn-doc-links",
"@kbn/dom-drag-drop": "link:packages/kbn-dom-drag-drop",
"@kbn/ebt-tools": "link:packages/kbn-ebt-tools",

View file

@ -0,0 +1,4 @@
# @kbn/discover-utils
This is the package contains extracting parts of Discover for the usage in other
unified components. This are mainly shared types, utils and mocks.

View file

@ -0,0 +1,9 @@
/*
* 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 and the Server Side Public License, v 1; you may not use this file except
* in compliance with, at your election, the Elastic License 2.0 or the Server
* Side Public License, v 1.
*/
export { getDocId, buildDataTableRecord, buildDataTableRecordList } from './src';

View file

@ -0,0 +1,13 @@
/*
* 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 and the Server Side Public License, v 1; you may not use this file except
* in compliance with, at your election, the Elastic License 2.0 or the Server
* Side Public License, v 1.
*/
module.exports = {
preset: '@kbn/test',
rootDir: '../..',
roots: ['<rootDir>/packages/kbn-discover-utils'],
};

View file

@ -0,0 +1,5 @@
{
"type": "shared-common",
"id": "@kbn/discover-utils",
"owner": "@elastic/kibana-data-discovery"
}

View file

@ -0,0 +1,6 @@
{
"name": "@kbn/discover-utils",
"private": true,
"version": "1.0.0",
"license": "SSPL-1.0 OR Elastic License 2.0"
}

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
export const esHits = [
export const esHitsMock = [
{
_index: 'i',
_id: '1',

View file

@ -0,0 +1,10 @@
/*
* 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 and the Server Side Public License, v 1; you may not use this file except
* in compliance with, at your election, the Elastic License 2.0 or the Server
* Side Public License, v 1.
*/
export * from './data_view';
export * from './es_hits';

View file

@ -0,0 +1,9 @@
/*
* 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 and the Server Side Public License, v 1; you may not use this file except
* in compliance with, at your election, the Elastic License 2.0 or the Server
* Side Public License, v 1.
*/
export * from './utils';

View file

@ -0,0 +1,35 @@
/*
* 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 and the Server Side Public License, v 1; you may not use this file except
* in compliance with, at your election, the Elastic License 2.0 or the Server
* Side Public License, v 1.
*/
import type { SearchHit } from '@elastic/elasticsearch/lib/api/typesWithBodyKey';
export interface EsHitRecord extends Omit<SearchHit, '_source'> {
_source?: Record<string, unknown>;
}
/**
* This is the record/row of data provided to our Data Table
*/
export interface DataTableRecord {
/**
* A unique id generated by index, id and routing of a record
*/
id: string;
/**
* The document returned by Elasticsearch for search queries
*/
raw: EsHitRecord;
/**
* A flattened version of the ES doc or data provided by SQL, aggregations ...
*/
flattened: Record<string, unknown>;
/**
* Determines that the given doc is the anchor doc when rendering view surrounding docs
*/
isAnchor?: boolean;
}

View file

@ -0,0 +1,34 @@
/*
* 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 and the Server Side Public License, v 1; you may not use this file except
* in compliance with, at your election, the Elastic License 2.0 or the Server
* Side Public License, v 1.
*/
import { buildDataTableRecord, buildDataTableRecordList } from './build_data_record';
import { dataViewMock, esHitsMock } from '../__mocks__';
describe('Data table record utils', () => {
describe('buildDataTableRecord', () => {
test('should return a DataTableRecord', () => {
const result = buildDataTableRecord(esHitsMock[0], dataViewMock, false);
expect(result).toHaveProperty('id', 'i::1::');
expect(result).toHaveProperty('raw', esHitsMock[0]);
expect(result).toHaveProperty('flattened');
expect(result).toHaveProperty('isAnchor', false);
});
});
describe('buildDataTableRecordList', () => {
test('should return a list of DataTableRecord', () => {
const result = buildDataTableRecordList(esHitsMock, dataViewMock);
result.forEach((doc) => {
expect(doc).toHaveProperty('id');
expect(doc).toHaveProperty('raw');
expect(doc).toHaveProperty('flattened');
expect(doc).toHaveProperty('isAnchor');
});
});
});
});

View file

@ -6,10 +6,10 @@
* Side Public License, v 1.
*/
import { DataView } from '@kbn/data-views-plugin/common';
import { flattenHit } from '@kbn/data-plugin/common';
import { getDocId } from './get_doc_id';
import type { DataView } from '@kbn/data-views-plugin/common';
import { flattenHit } from '@kbn/data-service';
import type { DataTableRecord, EsHitRecord } from '../types';
import { getDocId } from './get_doc_id';
/**
* Build a record for data table, explorer + classic one

View file

@ -0,0 +1,17 @@
/*
* 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 and the Server Side Public License, v 1; you may not use this file except
* in compliance with, at your election, the Elastic License 2.0 or the Server
* Side Public License, v 1.
*/
import { esHitsMock } from '../__mocks__';
import { getDocId } from './get_doc_id';
describe('getDocId', () => {
test('should return unique ID', () => {
const result = getDocId(esHitsMock[0]);
expect(result).toMatchInlineSnapshot(`"i::1::"`);
});
});

View file

@ -0,0 +1,10 @@
/*
* 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 and the Server Side Public License, v 1; you may not use this file except
* in compliance with, at your election, the Elastic License 2.0 or the Server
* Side Public License, v 1.
*/
export * from './build_data_record';
export * from './get_doc_id';

View file

@ -0,0 +1,22 @@
{
"extends": "../../tsconfig.base.json",
"compilerOptions": {
"outDir": "target/types",
"types": [
"jest",
"node",
"react"
]
},
"include": [
"**/*.ts",
"**/*.tsx",
],
"exclude": [
"target/**/*"
],
"kbn_references": [
"@kbn/data-views-plugin",
"@kbn/data-service",
]
}

View file

@ -0,0 +1,9 @@
/*
* 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 and the Server Side Public License, v 1; you may not use this file except
* in compliance with, at your election, the Elastic License 2.0 or the Server
* Side Public License, v 1.
*/
export type { DataTableRecord, EsHitRecord } from './src/types';

View file

@ -7,8 +7,8 @@
*/
import type { DataView } from '@kbn/data-views-plugin/common';
import { cloneDeep } from 'lodash';
import { buildDataTableRecord } from '../utils/build_data_record';
import type { EsHitRecord } from '../types';
import { buildDataTableRecord } from '@kbn/discover-utils';
import type { EsHitRecord } from '@kbn/discover-utils/types';
/*
Extensions:
gif: 5

View file

@ -7,7 +7,7 @@
*/
import { DataView } from '@kbn/data-views-plugin/public';
import { buildDataViewMock } from './data_view';
import { buildDataViewMock } from '@kbn/discover-utils/src/__mocks__';
const fields = [
{

View file

@ -7,7 +7,7 @@
*/
import { DataView } from '@kbn/data-views-plugin/public';
import { buildDataViewMock } from './data_view';
import { buildDataViewMock } from '@kbn/discover-utils/src/__mocks__';
const fields = [
{

View file

@ -7,7 +7,7 @@
*/
import { DataViewsContract } from '@kbn/data-views-plugin/public';
import { dataViewMock } from './data_view';
import { dataViewMock } from '@kbn/discover-utils/src/__mocks__';
import { dataViewComplexMock } from './data_view_complex';
import { dataViewWithTimefieldMock } from './data_view_with_timefield';

View file

@ -7,15 +7,14 @@
*/
import type { DataView } from '@kbn/data-views-plugin/public';
import { dataViewMock } from './data_view';
import { dataViewMock, esHitsMock } from '@kbn/discover-utils/src/__mocks__';
import { dataViewComplexMock } from './data_view_complex';
import { esHits } from './es_hits';
import { esHitsComplex } from './es_hits_complex';
import { discoverServiceMock } from './services';
import { GridContext } from '../components/discover_grid/discover_grid_context';
import { convertValueToString } from '../utils/convert_value_to_string';
import { buildDataTableRecord } from '../utils/build_data_record';
import { EsHitRecord } from '../types';
import { buildDataTableRecord } from '@kbn/discover-utils';
import type { EsHitRecord } from '@kbn/discover-utils/types';
const buildGridContext = (dataView: DataView, rows: EsHitRecord[]): GridContext => {
const usedRows = rows.map((row) => {
@ -43,6 +42,6 @@ const buildGridContext = (dataView: DataView, rows: EsHitRecord[]): GridContext
};
};
export const discoverGridContextMock = buildGridContext(dataViewMock, esHits);
export const discoverGridContextMock = buildGridContext(dataViewMock, esHitsMock);
export const discoverGridContextComplexMock = buildGridContext(dataViewComplexMock, esHitsComplex);

View file

@ -8,7 +8,7 @@
import { SavedSearch } from '@kbn/saved-search-plugin/public';
import { createSearchSourceMock } from '@kbn/data-plugin/public/mocks';
import { dataViewMock } from './data_view';
import { dataViewMock } from '@kbn/discover-utils/src/__mocks__';
import { dataViewWithTimefieldMock } from './data_view_with_timefield';
import { dataViewAdHoc } from './data_view_complex';

View file

@ -6,8 +6,8 @@
* Side Public License, v 1.
*/
import { dataViewMock } from '../../../__mocks__/data_view';
import { buildDataTableRecord } from '../../../utils/build_data_record';
import { dataViewMock } from '@kbn/discover-utils/src/__mocks__';
import { buildDataTableRecord } from '@kbn/discover-utils';
export const mockAnchorHit = buildDataTableRecord(
{

View file

@ -12,7 +12,7 @@ import { mountWithIntl } from '@kbn/test-jest-helpers';
import { createFilterManagerMock } from '@kbn/data-plugin/public/query/filter_manager/filter_manager.mock';
import { mockTopNavMenu } from './__mocks__/top_nav_menu';
import { ContextAppContent } from './context_app_content';
import { dataViewMock } from '../../__mocks__/data_view';
import { dataViewMock } from '@kbn/discover-utils/src/__mocks__';
import { ContextApp } from './context_app';
import { DiscoverServices } from '../../build_services';
import { dataViewsMock } from '../../__mocks__/data_views';

View file

@ -14,12 +14,12 @@ import { GetStateReturn } from './services/context_state';
import { SortDirection } from '@kbn/data-plugin/public';
import { ContextAppContent, ContextAppContentProps } from './context_app_content';
import { LoadingStatus } from './services/context_query_state';
import { dataViewMock } from '../../__mocks__/data_view';
import { dataViewMock } from '@kbn/discover-utils/src/__mocks__';
import { discoverServiceMock } from '../../__mocks__/services';
import { DiscoverGrid } from '../../components/discover_grid/discover_grid';
import { DocTableWrapper } from '../../components/doc_table/doc_table_wrapper';
import { KibanaContextProvider } from '@kbn/kibana-react-plugin/public';
import { buildDataTableRecord } from '../../utils/build_data_record';
import { buildDataTableRecord } from '@kbn/discover-utils';
import { act } from 'react-dom/test-utils';
describe('ContextAppContent test', () => {

View file

@ -13,6 +13,7 @@ import type { DataView } from '@kbn/data-views-plugin/public';
import { SortDirection } from '@kbn/data-plugin/public';
import type { SortOrder } from '@kbn/saved-search-plugin/public';
import { CellActionsProvider } from '@kbn/cell-actions';
import type { DataTableRecord } from '@kbn/discover-utils/types';
import { CONTEXT_STEP_SETTING, DOC_HIDE_TIME_COLUMN_SETTING } from '../../../common';
import { LoadingStatus } from './services/context_query_state';
import { ActionBar } from './components/action_bar/action_bar';
@ -23,7 +24,6 @@ import { SurrDocType } from './services/context';
import { MAX_CONTEXT_SIZE, MIN_CONTEXT_SIZE } from './services/constants';
import { DocTableContext } from '../../components/doc_table/doc_table_context';
import { useDiscoverServices } from '../../hooks/use_discover_services';
import type { DataTableRecord } from '../../types';
import { DiscoverGridFlyout } from '../../components/discover_grid/discover_grid_flyout';
import { DocViewer } from '../../services/doc_views/components/doc_viewer';

View file

@ -10,6 +10,7 @@ import { i18n } from '@kbn/i18n';
import { MarkdownSimple, toMountPoint, wrapWithTheme } from '@kbn/kibana-react-plugin/public';
import type { DataView } from '@kbn/data-views-plugin/public';
import { SortDirection } from '@kbn/data-plugin/public';
import type { DataTableRecord } from '@kbn/discover-utils/types';
import { CONTEXT_TIE_BREAKER_FIELDS_SETTING } from '../../../../common';
import { fetchAnchor } from '../services/anchor';
import { fetchSurroundingDocs, SurrDocType } from '../services/context';
@ -22,7 +23,6 @@ import {
import { AppState } from '../services/context_state';
import { getFirstSortableField } from '../utils/sorting';
import { useDiscoverServices } from '../../../hooks/use_discover_services';
import type { DataTableRecord } from '../../../types';
const createError = (statusKey: string, reason: FailureReason, error?: Error) => ({
[statusKey]: { value: LoadingStatus.FAILED, error, reason },

View file

@ -11,7 +11,7 @@ import moment from 'moment';
import { of } from 'rxjs';
import * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey';
import { IKibanaSearchResponse } from '@kbn/data-plugin/common';
import { EsHitRecord } from '../../../types';
import type { EsHitRecord } from '@kbn/discover-utils/types';
type SortHit = {
[key in string]: number; // timeField name

View file

@ -9,7 +9,7 @@ import { DataView } from '@kbn/data-views-plugin/public';
import { SortDirection } from '@kbn/data-plugin/public';
import { createSearchSourceStub } from './_stubs';
import { fetchAnchor, updateSearchSource } from './anchor';
import { dataViewMock } from '../../../__mocks__/data_view';
import { dataViewMock } from '@kbn/discover-utils/src/__mocks__';
import { savedSearchMock } from '../../../__mocks__/saved_search';
describe('context app', function () {

View file

@ -9,8 +9,8 @@ import { lastValueFrom } from 'rxjs';
import { i18n } from '@kbn/i18n';
import { ISearchSource, EsQuerySortValue } from '@kbn/data-plugin/public';
import { DataView } from '@kbn/data-views-plugin/public';
import { DataTableRecord, EsHitRecord } from '../../../types';
import { buildDataTableRecord } from '../../../utils/build_data_record';
import { buildDataTableRecord } from '@kbn/discover-utils';
import type { DataTableRecord, EsHitRecord } from '@kbn/discover-utils/types';
export async function fetchAnchor(
anchorId: string,

View file

@ -14,8 +14,8 @@ import { Query } from '@kbn/es-query';
import { createContextSearchSourceStub } from './_stubs';
import { fetchSurroundingDocs, SurrDocType } from './context';
import { DataPublicPluginStart } from '@kbn/data-plugin/public';
import { DataTableRecord, EsHitRecord } from '../../../types';
import { buildDataTableRecord, buildDataTableRecordList } from '../../../utils/build_data_record';
import type { DataTableRecord, EsHitRecord } from '@kbn/discover-utils/types';
import { buildDataTableRecord, buildDataTableRecordList } from '@kbn/discover-utils';
const MS_PER_DAY = 24 * 60 * 60 * 1000;
const ANCHOR_TIMESTAMP = new Date(MS_PER_DAY).toJSON();

View file

@ -14,8 +14,8 @@ import { createContextSearchSourceStub } from './_stubs';
import { DataPublicPluginStart } from '@kbn/data-plugin/public';
import { Query } from '@kbn/es-query';
import { fetchSurroundingDocs, SurrDocType } from './context';
import { DataTableRecord } from '../../../types';
import { buildDataTableRecord, buildDataTableRecordList } from '../../../utils/build_data_record';
import type { DataTableRecord } from '@kbn/discover-utils/types';
import { buildDataTableRecord, buildDataTableRecordList } from '@kbn/discover-utils';
const MS_PER_DAY = 24 * 60 * 60 * 1000;
const ANCHOR_TIMESTAMP = new Date(MS_PER_DAY).toJSON();

View file

@ -7,7 +7,7 @@
*/
import { updateSearchSource } from './context';
import { dataViewMock } from '../../../__mocks__/data_view';
import { dataViewMock } from '@kbn/discover-utils/src/__mocks__';
import { createSearchSourceMock } from '@kbn/data-plugin/public/mocks';
describe('context api', function () {

View file

@ -8,13 +8,13 @@
import type { Filter } from '@kbn/es-query';
import { DataView } from '@kbn/data-views-plugin/public';
import { DataPublicPluginStart, ISearchSource } from '@kbn/data-plugin/public';
import type { DataTableRecord } from '@kbn/discover-utils/types';
import { reverseSortDir, SortDirection } from '../utils/sorting';
import { convertIsoToMillis, extractNanos } from '../utils/date_conversion';
import { fetchHitsInInterval } from '../utils/fetch_hits_in_interval';
import { generateIntervals } from '../utils/generate_intervals';
import { getEsQuerySearchAfter } from '../utils/get_es_query_search_after';
import { getEsQuerySort } from '../utils/get_es_query_sort';
import { DataTableRecord } from '../../../types';
export enum SurrDocType {
SUCCESSORS = 'successors',

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
import { DataTableRecord } from '../../../types';
import type { DataTableRecord } from '@kbn/discover-utils/types';
export interface ContextFetchState {
/**

View file

@ -14,7 +14,7 @@ import { FilterManager } from '@kbn/data-plugin/public';
import { coreMock } from '@kbn/core/public/mocks';
import { SEARCH_FIELDS_FROM_SOURCE } from '../../../../common';
import { discoverServiceMock } from '../../../__mocks__/services';
import { dataViewMock } from '../../../__mocks__/data_view';
import { dataViewMock } from '@kbn/discover-utils/src/__mocks__';
discoverServiceMock.data.query.filterManager.getAppFilters = jest.fn(() => []);
discoverServiceMock.data.query.filterManager.getGlobalFilters = jest.fn(() => []);

View file

@ -8,10 +8,10 @@
import { lastValueFrom } from 'rxjs';
import { ISearchSource, EsQuerySortValue, SortDirection } from '@kbn/data-plugin/public';
import { EsQuerySearchAfter } from '@kbn/data-plugin/common';
import { buildDataTableRecord } from '../../../utils/build_data_record';
import { buildDataTableRecord } from '@kbn/discover-utils';
import type { DataTableRecord } from '@kbn/discover-utils/types';
import { convertTimeValueToIso } from './date_conversion';
import { IntervalValue } from './generate_intervals';
import type { DataTableRecord } from '../../../types';
interface RangeQuery {
format: string;

View file

@ -6,8 +6,8 @@
* Side Public License, v 1.
*/
import type { EsQuerySearchAfter } from '@kbn/data-plugin/common';
import type { DataTableRecord } from '@kbn/discover-utils/types';
import { SurrDocType } from '../services/context';
import type { DataTableRecord } from '../../../types';
/**
* Get the searchAfter query value for elasticsearch

View file

@ -14,7 +14,7 @@ import { ReactWrapper } from 'enzyme';
import { findTestSubject } from '@elastic/eui/lib/test';
import { Doc, DocProps } from './doc';
import { SEARCH_FIELDS_FROM_SOURCE as mockSearchFieldsFromSource } from '../../../../common';
import { dataViewMock } from '../../../__mocks__/data_view';
import { dataViewMock } from '@kbn/discover-utils/src/__mocks__';
import { KibanaContextProvider } from '@kbn/kibana-react-plugin/public';
const mockSearchApi = jest.fn();

View file

@ -11,12 +11,12 @@ import { FormattedMessage } from '@kbn/i18n-react';
import { EuiCallOut, EuiLink, EuiLoadingSpinner, EuiPage, EuiPageBody } from '@elastic/eui';
import type { DataView } from '@kbn/data-views-plugin/public';
import { i18n } from '@kbn/i18n';
import type { DataTableRecord } from '@kbn/discover-utils/types';
import { getRootBreadcrumbs } from '../../../utils/breadcrumbs';
import { DocViewer } from '../../../services/doc_views/components/doc_viewer';
import { ElasticRequestState } from '../types';
import { useEsDocSearch } from '../../../hooks/use_es_doc_search';
import { useDiscoverServices } from '../../../hooks/use_discover_services';
import type { DataTableRecord } from '../../../types';
export interface DocProps {
/**

View file

@ -13,6 +13,8 @@ import { RequestAdapter } from '@kbn/inspector-plugin/common';
import { action } from '@storybook/addon-actions';
import { createHashHistory } from 'history';
import { SavedSearch } from '@kbn/saved-search-plugin/public';
import { buildDataTableRecordList } from '@kbn/discover-utils';
import { esHitsMock } from '@kbn/discover-utils/src/__mocks__';
import { FetchStatus } from '../../../../types';
import {
AvailableFields$,
@ -21,8 +23,6 @@ import {
DataTotalHits$,
RecordRawType,
} from '../../../services/discover_data_state_container';
import { buildDataTableRecordList } from '../../../../../utils/build_data_record';
import { esHits } from '../../../../../__mocks__/es_hits';
import { DiscoverLayoutProps } from '../discover_layout';
import {
DiscoverStateContainer,
@ -38,7 +38,7 @@ const documentObservables = {
documents$: new BehaviorSubject({
fetchStatus: FetchStatus.COMPLETE,
result: buildDataTableRecordList(esHits),
result: buildDataTableRecordList(esHitsMock),
}) as DataDocuments$,
availableFields$: new BehaviorSubject({
@ -48,7 +48,7 @@ const documentObservables = {
totalHits$: new BehaviorSubject({
fetchStatus: FetchStatus.COMPLETE,
result: Number(esHits.length),
result: Number(esHitsMock.length),
}) as DataTotalHits$,
fetch$: new Observable(),
};
@ -62,7 +62,7 @@ const plainRecordObservables = {
documents$: new BehaviorSubject({
fetchStatus: FetchStatus.COMPLETE,
result: buildDataTableRecordList(esHits),
result: buildDataTableRecordList(esHitsMock),
recordRawType: RecordRawType.PLAIN,
}) as DataDocuments$,

View file

@ -11,15 +11,14 @@ import { act } from 'react-dom/test-utils';
import { BehaviorSubject } from 'rxjs';
import { mountWithIntl } from '@kbn/test-jest-helpers';
import { setHeaderActionMenuMounter } from '../../../../kibana_services';
import { esHits } from '../../../../__mocks__/es_hits';
import { DataDocuments$ } from '../../services/discover_data_state_container';
import { discoverServiceMock } from '../../../../__mocks__/services';
import { FetchStatus } from '../../../types';
import { DiscoverDocuments, onResize } from './discover_documents';
import { dataViewMock } from '../../../../__mocks__/data_view';
import { dataViewMock, esHitsMock } from '@kbn/discover-utils/src/__mocks__';
import { KibanaContextProvider } from '@kbn/kibana-react-plugin/public';
import { buildDataTableRecord } from '../../../../utils/build_data_record';
import { EsHitRecord } from '../../../../types';
import { buildDataTableRecord } from '@kbn/discover-utils';
import type { EsHitRecord } from '@kbn/discover-utils/types';
import { DiscoverMainProvider } from '../../services/discover_state_provider';
import { getDiscoverStateMock } from '../../../../__mocks__/discover_state.mock';
import { DiscoverAppState } from '../../services/discover_app_state_container';
@ -68,13 +67,13 @@ describe('Discover documents layout', () => {
});
test('render complete when loading but documents were already fetched', async () => {
const component = await mountComponent(FetchStatus.LOADING, esHits);
const component = await mountComponent(FetchStatus.LOADING, esHitsMock);
expect(component.find('.dscDocuments__loading').exists()).toBeFalsy();
expect(component.find('.dscTable').exists()).toBeTruthy();
});
test('render complete', async () => {
const component = await mountComponent(FetchStatus.COMPLETE, esHits);
const component = await mountComponent(FetchStatus.COMPLETE, esHitsMock);
expect(component.find('.dscDocuments__loading').exists()).toBeFalsy();
expect(component.find('.dscTable').exists()).toBeTruthy();
});

View file

@ -19,6 +19,7 @@ import { css } from '@emotion/react';
import { DataView } from '@kbn/data-views-plugin/public';
import { SortOrder } from '@kbn/saved-search-plugin/public';
import { CellActionsProvider } from '@kbn/cell-actions';
import type { DataTableRecord } from '@kbn/discover-utils/types';
import { useInternalStateSelector } from '../../services/discover_internal_state_container';
import { useAppStateSelector } from '../../services/discover_app_state_container';
import { useDiscoverServices } from '../../../../hooks/use_discover_services';
@ -40,7 +41,6 @@ import { DocTableInfinite } from '../../../../components/doc_table/doc_table_inf
import { DocumentExplorerCallout } from '../document_explorer_callout';
import { DocumentExplorerUpdateCallout } from '../document_explorer_callout/document_explorer_update_callout';
import { DiscoverTourProvider } from '../../../../components/discover_tour';
import { DataTableRecord } from '../../../../types';
import { getRawRecordType } from '../../utils/get_raw_record_type';
import { DiscoverGridFlyout } from '../../../../components/discover_grid/discover_grid_flyout';
import { DocViewer } from '../../../../services/doc_views/components/doc_viewer';

View file

@ -9,8 +9,7 @@
import React from 'react';
import { BehaviorSubject, of } from 'rxjs';
import { mountWithIntl } from '@kbn/test-jest-helpers';
import { esHits } from '../../../../__mocks__/es_hits';
import { dataViewMock } from '../../../../__mocks__/data_view';
import { dataViewMock, esHitsMock } from '@kbn/discover-utils/src/__mocks__';
import { savedSearchMock } from '../../../../__mocks__/saved_search';
import {
AvailableFields$,
@ -23,7 +22,7 @@ import { discoverServiceMock } from '../../../../__mocks__/services';
import { FetchStatus } from '../../../types';
import { KibanaThemeProvider } from '@kbn/kibana-react-plugin/public';
import { KibanaContextProvider } from '@kbn/kibana-react-plugin/public';
import { buildDataTableRecord } from '../../../../utils/build_data_record';
import { buildDataTableRecord } from '@kbn/discover-utils';
import { DiscoverHistogramLayout, DiscoverHistogramLayoutProps } from './discover_histogram_layout';
import { SavedSearch, VIEW_MODE } from '@kbn/saved-search-plugin/public';
import { CoreTheme } from '@kbn/core/public';
@ -88,7 +87,7 @@ const mountComponent = async ({
const documents$ = new BehaviorSubject({
fetchStatus: FetchStatus.COMPLETE,
result: esHits.map((esHit) => buildDataTableRecord(esHit, dataViewMock)),
result: esHitsMock.map((esHit) => buildDataTableRecord(esHit, dataViewMock)),
}) as DataDocuments$;
const availableFields$ = new BehaviorSubject({
@ -98,7 +97,7 @@ const mountComponent = async ({
const totalHits$ = new BehaviorSubject({
fetchStatus: FetchStatus.COMPLETE,
result: Number(esHits.length),
result: Number(esHitsMock.length),
}) as DataTotalHits$;
const savedSearchData$ = {

View file

@ -13,8 +13,7 @@ import { mountWithIntl } from '@kbn/test-jest-helpers';
import type { Query, AggregateQuery } from '@kbn/es-query';
import { setHeaderActionMenuMounter } from '../../../../kibana_services';
import { DiscoverLayout, SIDEBAR_CLOSED_KEY } from './discover_layout';
import { esHits } from '../../../../__mocks__/es_hits';
import { dataViewMock } from '../../../../__mocks__/data_view';
import { dataViewMock, esHitsMock } from '@kbn/discover-utils/src/__mocks__';
import { savedSearchMock } from '../../../../__mocks__/saved_search';
import {
createSearchSourceMock,
@ -35,7 +34,7 @@ import { RequestAdapter } from '@kbn/inspector-plugin/common';
import { LocalStorageMock } from '../../../../__mocks__/local_storage_mock';
import { KibanaContextProvider } from '@kbn/kibana-react-plugin/public';
import { DiscoverServices } from '../../../../build_services';
import { buildDataTableRecord } from '../../../../utils/build_data_record';
import { buildDataTableRecord } from '@kbn/discover-utils';
import { getDiscoverStateMock } from '../../../../__mocks__/discover_state.mock';
import { createSearchSessionMock } from '../../../../__mocks__/search_session';
import { getSessionServiceMock } from '@kbn/data-plugin/public/search/session/mocks';
@ -83,7 +82,7 @@ async function mountComponent(
const documents$ = new BehaviorSubject({
fetchStatus: FetchStatus.COMPLETE,
result: esHits.map((esHit) => buildDataTableRecord(esHit, dataView)),
result: esHitsMock.map((esHit) => buildDataTableRecord(esHit, dataView)),
}) as DataDocuments$;
const availableFields$ = new BehaviorSubject({
@ -93,7 +92,7 @@ async function mountComponent(
const totalHits$ = new BehaviorSubject({
fetchStatus: FetchStatus.COMPLETE,
result: Number(esHits.length),
result: Number(esHitsMock.length),
}) as DataTotalHits$;
stateContainer.dataState.data$ = {

View file

@ -10,8 +10,7 @@ import React from 'react';
import { BehaviorSubject, of } from 'rxjs';
import { act } from 'react-dom/test-utils';
import { mountWithIntl } from '@kbn/test-jest-helpers';
import { esHits } from '../../../../__mocks__/es_hits';
import { dataViewMock } from '../../../../__mocks__/data_view';
import { dataViewMock, esHitsMock } from '@kbn/discover-utils/src/__mocks__';
import {
AvailableFields$,
DataDocuments$,
@ -23,7 +22,7 @@ import { createDiscoverServicesMock } from '../../../../__mocks__/services';
import { FetchStatus } from '../../../types';
import { KibanaThemeProvider } from '@kbn/kibana-react-plugin/public';
import { KibanaContextProvider } from '@kbn/kibana-react-plugin/public';
import { buildDataTableRecord } from '../../../../utils/build_data_record';
import { buildDataTableRecord } from '@kbn/discover-utils';
import { DiscoverMainContent, DiscoverMainContentProps } from './discover_main_content';
import { SavedSearch, VIEW_MODE } from '@kbn/saved-search-plugin/public';
import { CoreTheme } from '@kbn/core/public';
@ -69,7 +68,7 @@ const mountComponent = async ({
const documents$ = new BehaviorSubject({
fetchStatus: FetchStatus.COMPLETE,
result: esHits.map((esHit) => buildDataTableRecord(esHit, dataViewMock)),
result: esHitsMock.map((esHit) => buildDataTableRecord(esHit, dataViewMock)),
}) as DataDocuments$;
const availableFields$ = new BehaviorSubject({
@ -79,7 +78,7 @@ const mountComponent = async ({
const totalHits$ = new BehaviorSubject({
fetchStatus: FetchStatus.COMPLETE,
result: Number(esHits.length),
result: Number(esHitsMock.length),
}) as DataTotalHits$;
const savedSearchData$ = {

View file

@ -33,8 +33,8 @@ import * as ExistingFieldsServiceApi from '@kbn/unified-field-list/src/services/
import { resetExistingFieldsCache } from '@kbn/unified-field-list/src/hooks/use_existing_fields';
import { createDiscoverServicesMock } from '../../../../__mocks__/services';
import type { AggregateQuery, Query } from '@kbn/es-query';
import { buildDataTableRecord } from '../../../../utils/build_data_record';
import { type DataTableRecord } from '../../../../types';
import { buildDataTableRecord } from '@kbn/discover-utils';
import type { DataTableRecord } from '@kbn/discover-utils/types';
import type { DiscoverCustomizationId } from '../../../../customizations/customization_service';
import type { SearchBarCustomization } from '../../../../customizations';

View file

@ -8,7 +8,7 @@
import React, { ReactElement } from 'react';
import { mountWithIntl } from '@kbn/test-jest-helpers';
import { dataViewMock } from '../../../../__mocks__/data_view';
import { dataViewMock } from '@kbn/discover-utils/src/__mocks__';
import { DiscoverTopNav, DiscoverTopNavProps } from './discover_topnav';
import { TopNavMenu, TopNavMenuData } from '@kbn/navigation-plugin/public';
import { Query } from '@kbn/es-query';

View file

@ -7,7 +7,7 @@
*/
import { getTopNavLinks } from './get_top_nav_links';
import { dataViewMock } from '../../../../__mocks__/data_view';
import { dataViewMock } from '@kbn/discover-utils/src/__mocks__';
import { DiscoverServices } from '../../../../build_services';
import { DiscoverStateContainer } from '../../services/discover_state';

View file

@ -9,7 +9,7 @@
import * as savedObjectsPlugin from '@kbn/saved-objects-plugin/public';
jest.mock('@kbn/saved-objects-plugin/public');
import type { DataView } from '@kbn/data-views-plugin/common';
import { dataViewMock } from '../../../../__mocks__/data_view';
import { dataViewMock } from '@kbn/discover-utils/src/__mocks__';
import { dataViewWithTimefieldMock } from '../../../../__mocks__/data_view_with_timefield';
import { onSaveSearch } from './on_save_search';
import { savedSearchMock } from '../../../../__mocks__/saved_search';

View file

@ -13,7 +13,7 @@ import { KibanaContextProvider } from '@kbn/kibana-react-plugin/public';
import { AlertsPopover } from './open_alerts_popover';
import { discoverServiceMock } from '../../../../__mocks__/services';
import { dataViewWithTimefieldMock } from '../../../../__mocks__/data_view_with_timefield';
import { dataViewMock } from '../../../../__mocks__/data_view';
import { dataViewMock } from '@kbn/discover-utils/src/__mocks__';
import { getDiscoverStateMock } from '../../../../__mocks__/discover_state.mock';
const Context = ({ children }: { children: ReactNode }) => <>{children}</>;

View file

@ -9,7 +9,7 @@ import React from 'react';
import { act } from 'react-dom/test-utils';
import { mountWithIntl } from '@kbn/test-jest-helpers';
import { DataViewListItem } from '@kbn/data-views-plugin/public';
import { dataViewMock } from '../../__mocks__/data_view';
import { dataViewMock } from '@kbn/discover-utils/src/__mocks__';
import { DiscoverMainApp } from './discover_main_app';
import { DiscoverTopNav } from './components/top_nav/discover_topnav';
import { setHeaderActionMenuMounter, setUrlTracker } from '../../kibana_services';

View file

@ -13,7 +13,7 @@ import { Adapters, RequestAdapter } from '@kbn/inspector-plugin/common';
import { OverlayRef } from '@kbn/core/public';
import { AggregateRequestAdapter } from '../utils/aggregate_request_adapter';
import { getDiscoverStateMock } from '../../../__mocks__/discover_state.mock';
import { DataTableRecord } from '../../../types';
import type { DataTableRecord } from '@kbn/discover-utils/types';
describe('test useInspector', () => {
test('inspector open function is executed, expanded doc is closed', async () => {

View file

@ -13,9 +13,9 @@ import { discoverServiceMock } from '../../../__mocks__/services';
import { useTextBasedQueryLanguage } from './use_text_based_query_language';
import { FetchStatus } from '../../types';
import { RecordRawType } from '../services/discover_data_state_container';
import { DataTableRecord } from '../../../types';
import type { DataTableRecord } from '@kbn/discover-utils/types';
import { AggregateQuery, Query } from '@kbn/es-query';
import { dataViewMock } from '../../../__mocks__/data_view';
import { dataViewMock } from '@kbn/discover-utils/src/__mocks__';
import { DataViewListItem } from '@kbn/data-views-plugin/common';
import { savedSearchMock } from '../../../__mocks__/saved_search';
import { getDiscoverStateMock } from '../../../__mocks__/discover_state.mock';

View file

@ -14,6 +14,7 @@ import { AggregateQuery, Query } from '@kbn/es-query';
import type { SearchResponse } from '@elastic/elasticsearch/lib/api/types';
import { DataView } from '@kbn/data-views-plugin/common';
import { reportPerformanceMetricEvent } from '@kbn/ebt-tools';
import type { DataTableRecord } from '@kbn/discover-utils/types';
import { getDataViewByTextBasedQueryLang } from '../utils/get_data_view_by_text_based_query_lang';
import { isTextBasedQuery } from '../utils/is_text_based_query';
import { getRawRecordType } from '../utils/get_raw_record_type';
@ -26,7 +27,6 @@ import { validateTimeRange } from '../utils/validate_time_range';
import { fetchAll } from '../utils/fetch_all';
import { sendResetMsg } from '../hooks/use_saved_search_messages';
import { getFetch$ } from '../utils/get_fetch_observable';
import { DataTableRecord } from '../../../types';
export interface SavedSearchData {
main$: DataMain$;

View file

@ -12,7 +12,7 @@ import {
ReduxLikeStateContainer,
} from '@kbn/kibana-utils-plugin/common';
import { DataView, DataViewListItem } from '@kbn/data-views-plugin/common';
import { DataTableRecord } from '../../../types';
import type { DataTableRecord } from '@kbn/discover-utils/types';
export interface InternalState {
dataView: DataView | undefined;

View file

@ -10,7 +10,7 @@ import { getSavedSearchContainer, isEqualSavedSearch } from './discover_saved_se
import type { SavedSearch } from '@kbn/saved-search-plugin/public';
import { discoverServiceMock } from '../../../__mocks__/services';
import { savedSearchMock, savedSearchMockWithTimeField } from '../../../__mocks__/saved_search';
import { dataViewMock } from '../../../__mocks__/data_view';
import { dataViewMock } from '@kbn/discover-utils/src/__mocks__';
import { dataViewComplexMock } from '../../../__mocks__/data_view_complex';
import { getDiscoverGlobalStateContainer } from './discover_global_state_container';
import { createKbnUrlStateStorage } from '@kbn/kibana-utils-plugin/public';

View file

@ -21,7 +21,7 @@ import {
savedSearchMockWithTimeFieldNew,
} from '../../../__mocks__/saved_search';
import { discoverServiceMock } from '../../../__mocks__/services';
import { dataViewMock } from '../../../__mocks__/data_view';
import { dataViewMock } from '@kbn/discover-utils/src/__mocks__';
import { DiscoverAppStateContainer } from './discover_app_state_container';
import { waitFor } from '@testing-library/react';
import { FetchStatus } from '../../types';

View file

@ -7,7 +7,7 @@
*/
import { calcFieldCounts } from './calc_field_counts';
import { buildDataTableRecord } from '../../../utils/build_data_record';
import { buildDataTableRecord } from '@kbn/discover-utils';
describe('calcFieldCounts', () => {
test('returns valid field count data', async () => {

View file

@ -5,7 +5,7 @@
* in compliance with, at your election, the Elastic License 2.0 or the Server
* Side Public License, v 1.
*/
import { DataTableRecord } from '../../../types';
import type { DataTableRecord } from '@kbn/discover-utils/types';
/**
* This function is calculating stats of the available fields, for usage in sidebar and sharing

View file

@ -23,8 +23,8 @@ import {
} from '../services/discover_data_state_container';
import { fetchDocuments } from './fetch_documents';
import { fetchSql } from './fetch_sql';
import { buildDataTableRecord } from '../../../utils/build_data_record';
import { dataViewMock } from '../../../__mocks__/data_view';
import { buildDataTableRecord } from '@kbn/discover-utils';
import { dataViewMock } from '@kbn/discover-utils/src/__mocks__';
jest.mock('./fetch_documents', () => ({
fetchDocuments: jest.fn().mockResolvedValue([]),
}));

View file

@ -13,9 +13,9 @@ import { discoverServiceMock } from '../../../__mocks__/services';
import { IKibanaSearchResponse } from '@kbn/data-plugin/public';
import { SearchResponse } from '@elastic/elasticsearch/lib/api/types';
import { FetchDeps } from './fetch_all';
import type { EsHitRecord } from '../../../types';
import { buildDataTableRecord } from '../../../utils/build_data_record';
import { dataViewMock } from '../../../__mocks__/data_view';
import type { EsHitRecord } from '@kbn/discover-utils/types';
import { buildDataTableRecord } from '@kbn/discover-utils';
import { dataViewMock } from '@kbn/discover-utils/src/__mocks__';
const getDeps = () =>
({

View file

@ -9,8 +9,9 @@ import { i18n } from '@kbn/i18n';
import { filter, map } from 'rxjs/operators';
import { lastValueFrom } from 'rxjs';
import { isCompleteResponse, ISearchSource } from '@kbn/data-plugin/public';
import type { RecordsFetchResponse, EsHitRecord } from '../../../types';
import { buildDataTableRecordList } from '../../../utils/build_data_record';
import { buildDataTableRecordList } from '@kbn/discover-utils';
import type { EsHitRecord } from '@kbn/discover-utils/types';
import type { RecordsFetchResponse } from '../../../types';
import { SAMPLE_SIZE_SETTING } from '../../../../common';
import { FetchDeps } from './fetch_all';

View file

@ -14,7 +14,8 @@ import type { ExpressionsStart } from '@kbn/expressions-plugin/public';
import type { Datatable } from '@kbn/expressions-plugin/public';
import type { DataView } from '@kbn/data-views-plugin/common';
import { textBasedQueryStateToAstWithValidation } from '@kbn/data-plugin/common';
import type { RecordsFetchResponse, DataTableRecord } from '../../../types';
import type { DataTableRecord } from '@kbn/discover-utils/types';
import { RecordsFetchResponse } from '../../../types';
interface SQLErrorResponse {
error: {

View file

@ -8,7 +8,7 @@
import { getDataViewByTextBasedQueryLang } from './get_data_view_by_text_based_query_lang';
import { dataViewAdHoc } from '../../../__mocks__/data_view_complex';
import { dataViewMock } from '../../../__mocks__/data_view';
import { dataViewMock } from '@kbn/discover-utils/src/__mocks__';
import { discoverServiceMock } from '../../../__mocks__/services';
describe('getDataViewByTextBasedQueryLang', () => {

View file

@ -11,7 +11,7 @@ import { createSearchSourceMock } from '@kbn/data-plugin/public/mocks';
import { VIEW_MODE } from '@kbn/saved-search-plugin/common';
import { dataViewWithTimefieldMock } from '../../../__mocks__/data_view_with_timefield';
import { savedSearchMock, savedSearchMockWithSQL } from '../../../__mocks__/saved_search';
import { dataViewMock } from '../../../__mocks__/data_view';
import { dataViewMock } from '@kbn/discover-utils/src/__mocks__';
import { discoverServiceMock } from '../../../__mocks__/services';
describe('getStateDefaults', () => {

View file

@ -7,7 +7,7 @@
*/
import { loadDataView } from './resolve_data_view';
import { dataViewMock } from '../../../__mocks__/data_view';
import { dataViewMock } from '@kbn/discover-utils/src/__mocks__';
import { discoverServiceMock as services } from '../../../__mocks__/services';
describe('Resolve data view tests', () => {

View file

@ -8,7 +8,7 @@
import { updateVolatileSearchSource } from './update_search_source';
import { createSearchSourceMock } from '@kbn/data-plugin/common/search/search_source/mocks';
import { dataViewMock } from '../../../__mocks__/data_view';
import { dataViewMock } from '@kbn/discover-utils/src/__mocks__';
import type { SortOrder } from '@kbn/saved-search-plugin/public';
import { discoverServiceMock } from '../../../__mocks__/services';
import { IUiSettingsClient } from '@kbn/core-ui-settings-browser';

View file

@ -10,7 +10,7 @@ import { EuiListGroupItem, EuiListGroupItemProps } from '@elastic/eui';
import { DataView, DataViewField } from '@kbn/data-views-plugin/common';
import { mountWithIntl } from '@kbn/test-jest-helpers';
import React from 'react';
import { buildDataViewMock } from '../../__mocks__/data_view';
import { buildDataViewMock } from '@kbn/discover-utils/src/__mocks__';
import { discoverServiceMock } from '../../__mocks__/services';
import { buildEditFieldButton } from './build_edit_field_button';

View file

@ -10,15 +10,13 @@ import { ReactWrapper } from 'enzyme';
import { EuiCopy } from '@elastic/eui';
import { act } from 'react-dom/test-utils';
import { findTestSubject } from '@elastic/eui/lib/test';
import { esHits } from '../../__mocks__/es_hits';
import { buildDataViewMock, deepMockedFields } from '../../__mocks__/data_view';
import { buildDataViewMock, deepMockedFields, esHitsMock } from '@kbn/discover-utils/src/__mocks__';
import { mountWithIntl } from '@kbn/test-jest-helpers';
import { DiscoverGrid, DiscoverGridProps } from './discover_grid';
import { KibanaContextProvider } from '@kbn/kibana-react-plugin/public';
import { discoverServiceMock } from '../../__mocks__/services';
import { buildDataTableRecord } from '../../utils/build_data_record';
import { getDocId } from '../../utils/get_doc_id';
import { EsHitRecord } from '../../types';
import { buildDataTableRecord, getDocId } from '@kbn/discover-utils';
import type { EsHitRecord } from '@kbn/discover-utils/types';
const mockUseDataGridColumnsCellActions = jest.fn((prop: unknown) => []);
jest.mock('@kbn/cell-actions', () => ({
@ -48,7 +46,7 @@ function getProps() {
onResize: jest.fn(),
onSetColumns: jest.fn(),
onSort: jest.fn(),
rows: esHits.map((hit) => buildDataTableRecord(hit, dataViewMock)),
rows: esHitsMock.map((hit) => buildDataTableRecord(hit, dataViewMock)),
sampleSize: 30,
searchDescription: '',
searchTitle: '',
@ -122,17 +120,17 @@ describe('DiscoverGrid', () => {
});
test('Allows selection/deselection of multiple documents', async () => {
await toggleDocSelection(component, esHits[0]);
await toggleDocSelection(component, esHitsMock[0]);
expect(getSelectedDocNr(component)).toBe(1);
await toggleDocSelection(component, esHits[1]);
await toggleDocSelection(component, esHitsMock[1]);
expect(getSelectedDocNr(component)).toBe(2);
await toggleDocSelection(component, esHits[1]);
await toggleDocSelection(component, esHitsMock[1]);
expect(getSelectedDocNr(component)).toBe(1);
});
test('deselection of all selected documents', async () => {
await toggleDocSelection(component, esHits[0]);
await toggleDocSelection(component, esHits[1]);
await toggleDocSelection(component, esHitsMock[0]);
await toggleDocSelection(component, esHitsMock[1]);
expect(getSelectedDocNr(component)).toBe(2);
findTestSubject(component, 'dscGridSelectionBtn').simulate('click');
findTestSubject(component, 'dscGridClearSelectedDocuments').simulate('click');
@ -140,8 +138,8 @@ describe('DiscoverGrid', () => {
});
test('showing only selected documents and undo selection', async () => {
await toggleDocSelection(component, esHits[0]);
await toggleDocSelection(component, esHits[1]);
await toggleDocSelection(component, esHitsMock[0]);
await toggleDocSelection(component, esHitsMock[1]);
expect(getSelectedDocNr(component)).toBe(2);
findTestSubject(component, 'dscGridSelectionBtn').simulate('click');
findTestSubject(component, 'dscGridShowSelectedDocuments').simulate('click');
@ -153,8 +151,8 @@ describe('DiscoverGrid', () => {
});
test('showing selected documents, underlying data changes, all documents are displayed, selection is gone', async () => {
await toggleDocSelection(component, esHits[0]);
await toggleDocSelection(component, esHits[1]);
await toggleDocSelection(component, esHitsMock[0]);
await toggleDocSelection(component, esHitsMock[1]);
expect(getSelectedDocNr(component)).toBe(2);
findTestSubject(component, 'dscGridSelectionBtn').simulate('click');
findTestSubject(component, 'dscGridShowSelectedDocuments').simulate('click');
@ -179,18 +177,18 @@ describe('DiscoverGrid', () => {
});
test('showing only selected documents and remove filter deselecting each doc manually', async () => {
await toggleDocSelection(component, esHits[0]);
await toggleDocSelection(component, esHitsMock[0]);
findTestSubject(component, 'dscGridSelectionBtn').simulate('click');
findTestSubject(component, 'dscGridShowSelectedDocuments').simulate('click');
expect(getDisplayedDocNr(component)).toBe(1);
await toggleDocSelection(component, esHits[0]);
await toggleDocSelection(component, esHitsMock[0]);
expect(getDisplayedDocNr(component)).toBe(5);
await toggleDocSelection(component, esHits[0]);
await toggleDocSelection(component, esHitsMock[0]);
expect(getDisplayedDocNr(component)).toBe(5);
});
test('copying selected documents to clipboard', async () => {
await toggleDocSelection(component, esHits[0]);
await toggleDocSelection(component, esHitsMock[0]);
findTestSubject(component, 'dscGridSelectionBtn').simulate('click');
expect(component.find(EuiCopy).prop('textToCopy')).toMatchInlineSnapshot(
`"[{\\"_index\\":\\"i\\",\\"_id\\":\\"1\\",\\"_score\\":1,\\"_type\\":\\"_doc\\",\\"_source\\":{\\"date\\":\\"2020-20-01T12:12:12.123\\",\\"message\\":\\"test1\\",\\"bytes\\":20}}]"`

View file

@ -35,6 +35,7 @@ import { FieldFormatsStart } from '@kbn/field-formats-plugin/public';
import type { ToastsStart, IUiSettingsClient, HttpStart, CoreStart } from '@kbn/core/public';
import { DataViewFieldEditorStart } from '@kbn/data-view-field-editor-plugin/public';
import { Serializable } from '@kbn/utility-types';
import type { DataTableRecord } from '@kbn/discover-utils/types';
import { DocViewFilterFn } from '../../services/doc_views/doc_views_types';
import { getSchemaDetectors } from './discover_grid_schema';
import { DiscoverGridFlyout } from './discover_grid_flyout';
@ -55,7 +56,7 @@ import {
} from '../../../common';
import { DiscoverGridDocumentToolbarBtn } from './discover_grid_document_selection';
import { getShouldShowFieldHandler } from '../../utils/get_should_show_field_handler';
import type { DataTableRecord, ValueToStringConverter } from '../../types';
import type { ValueToStringConverter } from '../../types';
import { useRowHeightsOptions } from '../../hooks/use_row_heights_options';
import { convertValueToString } from '../../utils/convert_value_to_string';
import { getRowsPerPageOptions, getDefaultRowsPerPage } from '../../utils/rows_per_page';

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
import { dataViewMock } from '../../__mocks__/data_view';
import { dataViewMock } from '@kbn/discover-utils/src/__mocks__';
import { getEuiGridColumns, getVisibleColumns } from './discover_grid_columns';
import { dataViewWithTimefieldMock } from '../../__mocks__/data_view_with_timefield';
import { discoverGridContextMock } from '../../__mocks__/grid_context';
@ -40,99 +40,99 @@ describe('Discover grid columns', function () {
onFilter: () => {},
});
expect(actual).toMatchInlineSnapshot(`
Array [
Object {
"actions": Object {
"additional": Array [
Object {
"data-test-subj": "gridCopyColumnNameToClipBoardButton",
"iconProps": Object {
"size": "m",
Array [
Object {
"actions": Object {
"additional": Array [
Object {
"data-test-subj": "gridCopyColumnNameToClipBoardButton",
"iconProps": Object {
"size": "m",
},
"iconType": "copyClipboard",
"label": <FormattedMessage
defaultMessage="Copy name"
id="discover.grid.copyColumnNameToClipBoardButton"
values={Object {}}
/>,
"onClick": [Function],
"size": "xs",
},
Object {
"data-test-subj": "gridCopyColumnValuesToClipBoardButton",
"iconProps": Object {
"size": "m",
},
"iconType": "copyClipboard",
"label": <FormattedMessage
defaultMessage="Copy column"
id="discover.grid.copyColumnValuesToClipBoardButton"
values={Object {}}
/>,
"onClick": [Function],
"size": "xs",
},
],
"showHide": false,
"showMoveLeft": false,
"showMoveRight": false,
},
"cellActions": Array [
[Function],
[Function],
[Function],
],
"displayAsText": "extension",
"id": "extension",
"isSortable": false,
"schema": "string",
},
"iconType": "copyClipboard",
"label": <FormattedMessage
defaultMessage="Copy name"
id="discover.grid.copyColumnNameToClipBoardButton"
values={Object {}}
/>,
"onClick": [Function],
"size": "xs",
},
Object {
"data-test-subj": "gridCopyColumnValuesToClipBoardButton",
"iconProps": Object {
"size": "m",
Object {
"actions": Object {
"additional": Array [
Object {
"data-test-subj": "gridCopyColumnNameToClipBoardButton",
"iconProps": Object {
"size": "m",
},
"iconType": "copyClipboard",
"label": <FormattedMessage
defaultMessage="Copy name"
id="discover.grid.copyColumnNameToClipBoardButton"
values={Object {}}
/>,
"onClick": [Function],
"size": "xs",
},
Object {
"data-test-subj": "gridCopyColumnValuesToClipBoardButton",
"iconProps": Object {
"size": "m",
},
"iconType": "copyClipboard",
"label": <FormattedMessage
defaultMessage="Copy column"
id="discover.grid.copyColumnValuesToClipBoardButton"
values={Object {}}
/>,
"onClick": [Function],
"size": "xs",
},
],
"showHide": false,
"showMoveLeft": false,
"showMoveRight": false,
},
"cellActions": Array [
[Function],
],
"displayAsText": "message",
"id": "message",
"isSortable": false,
"schema": "string",
},
"iconType": "copyClipboard",
"label": <FormattedMessage
defaultMessage="Copy column"
id="discover.grid.copyColumnValuesToClipBoardButton"
values={Object {}}
/>,
"onClick": [Function],
"size": "xs",
},
],
"showHide": false,
"showMoveLeft": false,
"showMoveRight": false,
},
"cellActions": Array [
[Function],
[Function],
[Function],
],
"displayAsText": "extension",
"id": "extension",
"isSortable": false,
"schema": "string",
},
Object {
"actions": Object {
"additional": Array [
Object {
"data-test-subj": "gridCopyColumnNameToClipBoardButton",
"iconProps": Object {
"size": "m",
},
"iconType": "copyClipboard",
"label": <FormattedMessage
defaultMessage="Copy name"
id="discover.grid.copyColumnNameToClipBoardButton"
values={Object {}}
/>,
"onClick": [Function],
"size": "xs",
},
Object {
"data-test-subj": "gridCopyColumnValuesToClipBoardButton",
"iconProps": Object {
"size": "m",
},
"iconType": "copyClipboard",
"label": <FormattedMessage
defaultMessage="Copy column"
id="discover.grid.copyColumnValuesToClipBoardButton"
values={Object {}}
/>,
"onClick": [Function],
"size": "xs",
},
],
"showHide": false,
"showMoveLeft": false,
"showMoveRight": false,
},
"cellActions": Array [
[Function],
],
"displayAsText": "message",
"id": "message",
"isSortable": false,
"schema": "string",
},
]
`);
]
`);
});
it('returns eui grid columns with time column', async () => {
@ -154,170 +154,170 @@ describe('Discover grid columns', function () {
onFilter: () => {},
});
expect(actual).toMatchInlineSnapshot(`
Array [
Object {
"actions": Object {
"additional": Array [
Object {
"data-test-subj": "gridCopyColumnNameToClipBoardButton",
"iconProps": Object {
"size": "m",
Array [
Object {
"actions": Object {
"additional": Array [
Object {
"data-test-subj": "gridCopyColumnNameToClipBoardButton",
"iconProps": Object {
"size": "m",
},
"iconType": "copyClipboard",
"label": <FormattedMessage
defaultMessage="Copy name"
id="discover.grid.copyColumnNameToClipBoardButton"
values={Object {}}
/>,
"onClick": [Function],
"size": "xs",
},
"iconType": "copyClipboard",
"label": <FormattedMessage
defaultMessage="Copy name"
id="discover.grid.copyColumnNameToClipBoardButton"
values={Object {}}
/>,
"onClick": [Function],
"size": "xs",
},
Object {
"data-test-subj": "gridCopyColumnValuesToClipBoardButton",
"iconProps": Object {
"size": "m",
Object {
"data-test-subj": "gridCopyColumnValuesToClipBoardButton",
"iconProps": Object {
"size": "m",
},
"iconType": "copyClipboard",
"label": <FormattedMessage
defaultMessage="Copy column"
id="discover.grid.copyColumnValuesToClipBoardButton"
values={Object {}}
/>,
"onClick": [Function],
"size": "xs",
},
"iconType": "copyClipboard",
"label": <FormattedMessage
defaultMessage="Copy column"
id="discover.grid.copyColumnValuesToClipBoardButton"
values={Object {}}
/>,
"onClick": [Function],
"size": "xs",
},
],
"showHide": false,
"showMoveLeft": true,
"showMoveRight": true,
},
"cellActions": Array [
[Function],
[Function],
[Function],
],
"showHide": false,
"showMoveLeft": true,
"showMoveRight": true,
},
"cellActions": Array [
[Function],
[Function],
[Function],
],
"display": <div
aria-label="timestamp - this field represents the time that events occurred."
>
<EuiToolTip
content="This field represents the time that events occurred."
delay="regular"
display="inlineBlock"
position="top"
"display": <div
aria-label="timestamp - this field represents the time that events occurred."
>
<React.Fragment>
timestamp
<EuiIcon
type="clock"
/>
</React.Fragment>
</EuiToolTip>
</div>,
"displayAsText": "timestamp",
"id": "timestamp",
"initialWidth": 210,
"isSortable": true,
"schema": "datetime",
},
Object {
"actions": Object {
"additional": Array [
Object {
"data-test-subj": "gridCopyColumnNameToClipBoardButton",
"iconProps": Object {
"size": "m",
},
"iconType": "copyClipboard",
"label": <FormattedMessage
defaultMessage="Copy name"
id="discover.grid.copyColumnNameToClipBoardButton"
values={Object {}}
/>,
"onClick": [Function],
"size": "xs",
},
Object {
"data-test-subj": "gridCopyColumnValuesToClipBoardButton",
"iconProps": Object {
"size": "m",
},
"iconType": "copyClipboard",
"label": <FormattedMessage
defaultMessage="Copy column"
id="discover.grid.copyColumnValuesToClipBoardButton"
values={Object {}}
/>,
"onClick": [Function],
"size": "xs",
},
],
"showHide": Object {
"iconType": "cross",
"label": "Remove column",
},
"showMoveLeft": true,
"showMoveRight": true,
<EuiToolTip
content="This field represents the time that events occurred."
delay="regular"
display="inlineBlock"
position="top"
>
<React.Fragment>
timestamp
<EuiIcon
type="clock"
/>
</React.Fragment>
</EuiToolTip>
</div>,
"displayAsText": "timestamp",
"id": "timestamp",
"initialWidth": 210,
"isSortable": true,
"schema": "datetime",
},
"cellActions": Array [
[Function],
[Function],
[Function],
],
"displayAsText": "extension",
"id": "extension",
"isSortable": false,
"schema": "string",
},
Object {
"actions": Object {
"additional": Array [
Object {
"data-test-subj": "gridCopyColumnNameToClipBoardButton",
"iconProps": Object {
"size": "m",
Object {
"actions": Object {
"additional": Array [
Object {
"data-test-subj": "gridCopyColumnNameToClipBoardButton",
"iconProps": Object {
"size": "m",
},
"iconType": "copyClipboard",
"label": <FormattedMessage
defaultMessage="Copy name"
id="discover.grid.copyColumnNameToClipBoardButton"
values={Object {}}
/>,
"onClick": [Function],
"size": "xs",
},
"iconType": "copyClipboard",
"label": <FormattedMessage
defaultMessage="Copy name"
id="discover.grid.copyColumnNameToClipBoardButton"
values={Object {}}
/>,
"onClick": [Function],
"size": "xs",
},
Object {
"data-test-subj": "gridCopyColumnValuesToClipBoardButton",
"iconProps": Object {
"size": "m",
Object {
"data-test-subj": "gridCopyColumnValuesToClipBoardButton",
"iconProps": Object {
"size": "m",
},
"iconType": "copyClipboard",
"label": <FormattedMessage
defaultMessage="Copy column"
id="discover.grid.copyColumnValuesToClipBoardButton"
values={Object {}}
/>,
"onClick": [Function],
"size": "xs",
},
"iconType": "copyClipboard",
"label": <FormattedMessage
defaultMessage="Copy column"
id="discover.grid.copyColumnValuesToClipBoardButton"
values={Object {}}
/>,
"onClick": [Function],
"size": "xs",
],
"showHide": Object {
"iconType": "cross",
"label": "Remove column",
},
],
"showHide": Object {
"iconType": "cross",
"label": "Remove column",
"showMoveLeft": true,
"showMoveRight": true,
},
"showMoveLeft": true,
"showMoveRight": true,
"cellActions": Array [
[Function],
[Function],
[Function],
],
"displayAsText": "extension",
"id": "extension",
"isSortable": false,
"schema": "string",
},
"cellActions": Array [
[Function],
],
"displayAsText": "message",
"id": "message",
"isSortable": false,
"schema": "string",
},
]
`);
Object {
"actions": Object {
"additional": Array [
Object {
"data-test-subj": "gridCopyColumnNameToClipBoardButton",
"iconProps": Object {
"size": "m",
},
"iconType": "copyClipboard",
"label": <FormattedMessage
defaultMessage="Copy name"
id="discover.grid.copyColumnNameToClipBoardButton"
values={Object {}}
/>,
"onClick": [Function],
"size": "xs",
},
Object {
"data-test-subj": "gridCopyColumnValuesToClipBoardButton",
"iconProps": Object {
"size": "m",
},
"iconType": "copyClipboard",
"label": <FormattedMessage
defaultMessage="Copy column"
id="discover.grid.copyColumnValuesToClipBoardButton"
values={Object {}}
/>,
"onClick": [Function],
"size": "xs",
},
],
"showHide": Object {
"iconType": "cross",
"label": "Remove column",
},
"showMoveLeft": true,
"showMoveRight": true,
},
"cellActions": Array [
[Function],
],
"displayAsText": "message",
"id": "message",
"isSortable": false,
"schema": "string",
},
]
`);
});
it('returns eui grid with in memory sorting', async () => {
@ -339,170 +339,170 @@ describe('Discover grid columns', function () {
onFilter: () => {},
});
expect(actual).toMatchInlineSnapshot(`
Array [
Object {
"actions": Object {
"additional": Array [
Object {
"data-test-subj": "gridCopyColumnNameToClipBoardButton",
"iconProps": Object {
"size": "m",
Array [
Object {
"actions": Object {
"additional": Array [
Object {
"data-test-subj": "gridCopyColumnNameToClipBoardButton",
"iconProps": Object {
"size": "m",
},
"iconType": "copyClipboard",
"label": <FormattedMessage
defaultMessage="Copy name"
id="discover.grid.copyColumnNameToClipBoardButton"
values={Object {}}
/>,
"onClick": [Function],
"size": "xs",
},
"iconType": "copyClipboard",
"label": <FormattedMessage
defaultMessage="Copy name"
id="discover.grid.copyColumnNameToClipBoardButton"
values={Object {}}
/>,
"onClick": [Function],
"size": "xs",
},
Object {
"data-test-subj": "gridCopyColumnValuesToClipBoardButton",
"iconProps": Object {
"size": "m",
Object {
"data-test-subj": "gridCopyColumnValuesToClipBoardButton",
"iconProps": Object {
"size": "m",
},
"iconType": "copyClipboard",
"label": <FormattedMessage
defaultMessage="Copy column"
id="discover.grid.copyColumnValuesToClipBoardButton"
values={Object {}}
/>,
"onClick": [Function],
"size": "xs",
},
"iconType": "copyClipboard",
"label": <FormattedMessage
defaultMessage="Copy column"
id="discover.grid.copyColumnValuesToClipBoardButton"
values={Object {}}
/>,
"onClick": [Function],
"size": "xs",
},
],
"showHide": false,
"showMoveLeft": true,
"showMoveRight": true,
},
"cellActions": Array [
[Function],
[Function],
[Function],
],
"showHide": false,
"showMoveLeft": true,
"showMoveRight": true,
},
"cellActions": Array [
[Function],
[Function],
[Function],
],
"display": <div
aria-label="timestamp - this field represents the time that events occurred."
>
<EuiToolTip
content="This field represents the time that events occurred."
delay="regular"
display="inlineBlock"
position="top"
"display": <div
aria-label="timestamp - this field represents the time that events occurred."
>
<React.Fragment>
timestamp
<EuiIcon
type="clock"
/>
</React.Fragment>
</EuiToolTip>
</div>,
"displayAsText": "timestamp",
"id": "timestamp",
"initialWidth": 210,
"isSortable": true,
"schema": "datetime",
},
Object {
"actions": Object {
"additional": Array [
Object {
"data-test-subj": "gridCopyColumnNameToClipBoardButton",
"iconProps": Object {
"size": "m",
},
"iconType": "copyClipboard",
"label": <FormattedMessage
defaultMessage="Copy name"
id="discover.grid.copyColumnNameToClipBoardButton"
values={Object {}}
/>,
"onClick": [Function],
"size": "xs",
},
Object {
"data-test-subj": "gridCopyColumnValuesToClipBoardButton",
"iconProps": Object {
"size": "m",
},
"iconType": "copyClipboard",
"label": <FormattedMessage
defaultMessage="Copy column"
id="discover.grid.copyColumnValuesToClipBoardButton"
values={Object {}}
/>,
"onClick": [Function],
"size": "xs",
},
],
"showHide": Object {
"iconType": "cross",
"label": "Remove column",
},
"showMoveLeft": true,
"showMoveRight": true,
<EuiToolTip
content="This field represents the time that events occurred."
delay="regular"
display="inlineBlock"
position="top"
>
<React.Fragment>
timestamp
<EuiIcon
type="clock"
/>
</React.Fragment>
</EuiToolTip>
</div>,
"displayAsText": "timestamp",
"id": "timestamp",
"initialWidth": 210,
"isSortable": true,
"schema": "datetime",
},
"cellActions": Array [
[Function],
[Function],
[Function],
],
"displayAsText": "extension",
"id": "extension",
"isSortable": true,
"schema": "string",
},
Object {
"actions": Object {
"additional": Array [
Object {
"data-test-subj": "gridCopyColumnNameToClipBoardButton",
"iconProps": Object {
"size": "m",
Object {
"actions": Object {
"additional": Array [
Object {
"data-test-subj": "gridCopyColumnNameToClipBoardButton",
"iconProps": Object {
"size": "m",
},
"iconType": "copyClipboard",
"label": <FormattedMessage
defaultMessage="Copy name"
id="discover.grid.copyColumnNameToClipBoardButton"
values={Object {}}
/>,
"onClick": [Function],
"size": "xs",
},
"iconType": "copyClipboard",
"label": <FormattedMessage
defaultMessage="Copy name"
id="discover.grid.copyColumnNameToClipBoardButton"
values={Object {}}
/>,
"onClick": [Function],
"size": "xs",
},
Object {
"data-test-subj": "gridCopyColumnValuesToClipBoardButton",
"iconProps": Object {
"size": "m",
Object {
"data-test-subj": "gridCopyColumnValuesToClipBoardButton",
"iconProps": Object {
"size": "m",
},
"iconType": "copyClipboard",
"label": <FormattedMessage
defaultMessage="Copy column"
id="discover.grid.copyColumnValuesToClipBoardButton"
values={Object {}}
/>,
"onClick": [Function],
"size": "xs",
},
"iconType": "copyClipboard",
"label": <FormattedMessage
defaultMessage="Copy column"
id="discover.grid.copyColumnValuesToClipBoardButton"
values={Object {}}
/>,
"onClick": [Function],
"size": "xs",
],
"showHide": Object {
"iconType": "cross",
"label": "Remove column",
},
],
"showHide": Object {
"iconType": "cross",
"label": "Remove column",
"showMoveLeft": true,
"showMoveRight": true,
},
"showMoveLeft": true,
"showMoveRight": true,
"cellActions": Array [
[Function],
[Function],
[Function],
],
"displayAsText": "extension",
"id": "extension",
"isSortable": true,
"schema": "string",
},
"cellActions": Array [
[Function],
],
"displayAsText": "message",
"id": "message",
"isSortable": true,
"schema": "string",
},
]
`);
Object {
"actions": Object {
"additional": Array [
Object {
"data-test-subj": "gridCopyColumnNameToClipBoardButton",
"iconProps": Object {
"size": "m",
},
"iconType": "copyClipboard",
"label": <FormattedMessage
defaultMessage="Copy name"
id="discover.grid.copyColumnNameToClipBoardButton"
values={Object {}}
/>,
"onClick": [Function],
"size": "xs",
},
Object {
"data-test-subj": "gridCopyColumnValuesToClipBoardButton",
"iconProps": Object {
"size": "m",
},
"iconType": "copyClipboard",
"label": <FormattedMessage
defaultMessage="Copy column"
id="discover.grid.copyColumnValuesToClipBoardButton"
values={Object {}}
/>,
"onClick": [Function],
"size": "xs",
},
],
"showHide": Object {
"iconType": "cross",
"label": "Remove column",
},
"showMoveLeft": true,
"showMoveRight": true,
},
"cellActions": Array [
[Function],
],
"displayAsText": "message",
"id": "message",
"isSortable": true,
"schema": "string",
},
]
`);
});
});

View file

@ -8,8 +8,9 @@
import React from 'react';
import type { DataView } from '@kbn/data-views-plugin/public';
import type { DataTableRecord } from '@kbn/discover-utils/types';
import type { DocViewFilterFn } from '../../services/doc_views/doc_views_types';
import type { DataTableRecord, ValueToStringConverter } from '../../types';
import type { ValueToStringConverter } from '../../types';
export interface GridContext {
expanded?: DataTableRecord | undefined;

View file

@ -11,7 +11,7 @@ import { findTestSubject } from '@elastic/eui/lib/test';
import { DiscoverGridDocumentToolbarBtn, SelectButton } from './discover_grid_document_selection';
import { discoverGridContextMock } from '../../__mocks__/grid_context';
import { DiscoverGridContext } from './discover_grid_context';
import { getDocId } from '../../utils/get_doc_id';
import { getDocId } from '@kbn/discover-utils';
describe('document selection', () => {
describe('getDocId', () => {

View file

@ -19,8 +19,8 @@ import {
import { FormattedMessage } from '@kbn/i18n-react';
import { euiDarkVars as themeDark, euiLightVars as themeLight } from '@kbn/ui-theme';
import { i18n } from '@kbn/i18n';
import type { DataTableRecord } from '@kbn/discover-utils/types';
import { DiscoverGridContext } from './discover_grid_context';
import type { DataTableRecord } from '../../types';
export const SelectButton = ({ rowIndex, setCellProps }: EuiDataGridCellValueElementProps) => {
const { selectedDocs, expanded, rows, isDarkMode, setSelectedDocs } =

View file

@ -11,17 +11,16 @@ import { findTestSubject } from '@elastic/eui/lib/test';
import { mountWithIntl } from '@kbn/test-jest-helpers';
import type { Query, AggregateQuery } from '@kbn/es-query';
import { DiscoverGridFlyout, DiscoverGridFlyoutProps } from './discover_grid_flyout';
import { esHits } from '../../__mocks__/es_hits';
import { createFilterManagerMock } from '@kbn/data-plugin/public/query/filter_manager/filter_manager.mock';
import { dataViewMock } from '../../__mocks__/data_view';
import { dataViewMock, esHitsMock } from '@kbn/discover-utils/src/__mocks__';
import { DiscoverServices } from '../../build_services';
import { DocViewsRegistry } from '../../services/doc_views/doc_views_registry';
import { setDocViewsRegistry } from '../../kibana_services';
import { dataViewWithTimefieldMock } from '../../__mocks__/data_view_with_timefield';
import { KibanaContextProvider } from '@kbn/kibana-react-plugin/public';
import type { DataView } from '@kbn/data-views-plugin/public';
import type { DataTableRecord, EsHitRecord } from '../../types';
import { buildDataTableRecord } from '../../utils/build_data_record';
import type { DataTableRecord, EsHitRecord } from '@kbn/discover-utils/types';
import { buildDataTableRecord } from '@kbn/discover-utils';
import { act } from 'react-dom/test-utils';
import { ReactWrapper } from 'enzyme';
@ -63,7 +62,7 @@ describe('Discover flyout', function () {
} as unknown as DiscoverServices;
const hit = buildDataTableRecord(
hitIndex ? esHits[hitIndex] : (esHits[0] as EsHitRecord),
hitIndex ? esHitsMock[hitIndex] : (esHitsMock[0] as EsHitRecord),
dataViewMock
);
@ -73,7 +72,9 @@ describe('Discover flyout', function () {
hit,
hits:
hits ||
esHits.map((entry: EsHitRecord) => buildDataTableRecord(entry, dataView || dataViewMock)),
esHitsMock.map((entry: EsHitRecord) =>
buildDataTableRecord(entry, dataView || dataViewMock)
),
query,
onAddColumn: jest.fn(),
onClose,
@ -166,14 +167,14 @@ describe('Discover flyout', function () {
it('doesnt allow you to navigate to the next doc, if expanded doc is the last', async () => {
// scenario: you've expanded a doc, and in the next request differed docs where fetched
const { component, props } = await mountComponent({ hitIndex: esHits.length - 1 });
const { component, props } = await mountComponent({ hitIndex: esHitsMock.length - 1 });
findTestSubject(component, 'pagination-button-next').simulate('click');
expect(props.setExpandedDoc).toHaveBeenCalledTimes(0);
});
it('allows you to navigate to the previous doc, if expanded doc is the last', async () => {
// scenario: you've expanded a doc, and in the next request differed docs where fetched
const { component, props } = await mountComponent({ hitIndex: esHits.length - 1 });
const { component, props } = await mountComponent({ hitIndex: esHitsMock.length - 1 });
findTestSubject(component, 'pagination-button-previous').simulate('click');
expect(props.setExpandedDoc).toHaveBeenCalledTimes(1);
expect(props.setExpandedDoc.mock.calls[0][0].raw._id).toBe('4');

View file

@ -26,12 +26,12 @@ import {
keys,
} from '@elastic/eui';
import type { Filter, Query, AggregateQuery } from '@kbn/es-query';
import type { DataTableRecord } from '@kbn/discover-utils/types';
import { DocViewer } from '../../services/doc_views/components/doc_viewer/doc_viewer';
import { DocViewFilterFn } from '../../services/doc_views/doc_views_types';
import { useNavigationProps } from '../../hooks/use_navigation_props';
import { useDiscoverServices } from '../../hooks/use_discover_services';
import { isTextBasedQuery } from '../../application/main/utils/is_text_based_query';
import type { DataTableRecord } from '../../types';
export interface DiscoverGridFlyoutProps {
savedSearchId?: string;

View file

@ -12,10 +12,10 @@ import { shallow } from 'enzyme';
import { findTestSubject } from '@elastic/eui/lib/test';
import { mountWithIntl } from '@kbn/test-jest-helpers';
import { getRenderCellValueFn } from './get_render_cell_value';
import { dataViewMock } from '../../__mocks__/data_view';
import { dataViewMock } from '@kbn/discover-utils/src/__mocks__';
import { KibanaContextProvider } from '@kbn/kibana-react-plugin/public';
import { buildDataTableRecord } from '../../utils/build_data_record';
import { EsHitRecord } from '../../types';
import { buildDataTableRecord } from '@kbn/discover-utils';
import type { EsHitRecord } from '@kbn/discover-utils/types';
const mockServices = {
settings: {

View file

@ -21,12 +21,12 @@ import {
EuiFlexItem,
} from '@elastic/eui';
import { FieldFormatsStart } from '@kbn/field-formats-plugin/public';
import type { DataTableRecord, EsHitRecord } from '@kbn/discover-utils/types';
import { DiscoverGridContext } from './discover_grid_context';
import { JsonCodeEditor } from '../json_code_editor/json_code_editor';
import { defaultMonacoEditorWidth } from './constants';
import { formatFieldValue } from '../../utils/format_value';
import { formatHit } from '../../utils/format_hit';
import { DataTableRecord, EsHitRecord } from '../../types';
import { useDiscoverServices } from '../../hooks/use_discover_services';
import { MAX_DOC_FIELDS_DISPLAYED } from '../../../common';
import { type ShouldShowFieldInTableHandler } from '../../utils/get_should_show_field_handler';

View file

@ -8,7 +8,7 @@
import { getStateColumnActions } from './columns';
import { configMock } from '../../../__mocks__/config';
import { dataViewMock } from '../../../__mocks__/data_view';
import { dataViewMock } from '@kbn/discover-utils/src/__mocks__';
import { dataViewsMock } from '../../../__mocks__/data_views';
import { Capabilities } from '@kbn/core/types';
import { DiscoverAppState } from '../../../application/main/services/discover_app_state_container';

View file

@ -18,8 +18,8 @@ import { discoverServiceMock } from '../../../__mocks__/services';
import { DocViewer } from '../../../services/doc_views/components/doc_viewer';
import { DOC_HIDE_TIME_COLUMN_SETTING, MAX_DOC_FIELDS_DISPLAYED } from '../../../../common';
import { buildDataTableRecord } from '../../../utils/build_data_record';
import { EsHitRecord } from '../../../types';
import { buildDataTableRecord } from '@kbn/discover-utils';
import type { EsHitRecord } from '@kbn/discover-utils/types';
jest.mock('../utils/row_formatter', () => {
const originalModule = jest.requireActual('../utils/row_formatter');

View file

@ -12,12 +12,12 @@ import { i18n } from '@kbn/i18n';
import { EuiButtonEmpty, EuiIcon } from '@elastic/eui';
import { DataView } from '@kbn/data-views-plugin/public';
import { Filter } from '@kbn/es-query';
import type { DataTableRecord, EsHitRecord } from '@kbn/discover-utils/types';
import { formatFieldValue } from '../../../utils/format_value';
import { DocViewRenderProps } from '../../../services/doc_views/doc_views_types';
import { TableCell } from './table_row/table_cell';
import { formatRow, formatTopLevelObject } from '../utils/row_formatter';
import { DocViewFilterFn } from '../../../services/doc_views/doc_views_types';
import { DataTableRecord, EsHitRecord } from '../../../types';
import { TableRowDetails } from './table_row_details';
import { useDiscoverServices } from '../../../hooks/use_discover_services';
import { DOC_HIDE_TIME_COLUMN_SETTING, MAX_DOC_FIELDS_DISPLAYED } from '../../../../common';

View file

@ -9,12 +9,12 @@
import React from 'react';
import { EuiIcon, EuiLoadingSpinner } from '@elastic/eui';
import { findTestSubject, mountWithIntl } from '@kbn/test-jest-helpers';
import { dataViewMock } from '../../__mocks__/data_view';
import { dataViewMock } from '@kbn/discover-utils/src/__mocks__';
import { DocTableWrapper, DocTableWrapperProps } from './doc_table_wrapper';
import { discoverServiceMock } from '../../__mocks__/services';
import { KibanaContextProvider } from '@kbn/kibana-react-plugin/public';
import { buildDataTableRecord } from '../../utils/build_data_record';
import { EsHitRecord } from '../../types';
import { buildDataTableRecord } from '@kbn/discover-utils';
import type { EsHitRecord } from '@kbn/discover-utils/types';
import { DocViewer } from '../../services/doc_views/components/doc_viewer';
describe('Doc table component', () => {

View file

@ -12,13 +12,13 @@ import type { DataView, DataViewField } from '@kbn/data-views-plugin/public';
import type { SortOrder } from '@kbn/saved-search-plugin/public';
import { FormattedMessage } from '@kbn/i18n-react';
import { Filter } from '@kbn/es-query';
import type { DataTableRecord } from '@kbn/discover-utils/types';
import { TableHeader } from './components/table_header/table_header';
import { SHOW_MULTIFIELDS } from '../../../common';
import { TableRow } from './components/table_row';
import { DocViewFilterFn, DocViewRenderProps } from '../../services/doc_views/doc_views_types';
import { getShouldShowFieldHandler } from '../../utils/get_should_show_field_handler';
import { useDiscoverServices } from '../../hooks/use_discover_services';
import type { DataTableRecord } from '../../types';
export interface DocTableProps {
/**

View file

@ -12,7 +12,7 @@ import { DataView } from '@kbn/data-views-plugin/public';
import { fieldFormatsMock } from '@kbn/field-formats-plugin/common/mocks';
import { DiscoverServices } from '../../../build_services';
import { stubbedSavedObjectIndexPattern } from '@kbn/data-plugin/common/stubs';
import { buildDataTableRecord } from '../../../utils/build_data_record';
import { buildDataTableRecord } from '@kbn/discover-utils';
describe('Row formatter', () => {
let services: DiscoverServices;

View file

@ -9,8 +9,8 @@
import React, { Fragment } from 'react';
import type { DataView } from '@kbn/data-views-plugin/public';
import { FieldFormatsStart } from '@kbn/field-formats-plugin/public';
import type { DataTableRecord } from '@kbn/discover-utils/types';
import { formatHit } from '../../../utils/format_hit';
import type { DataTableRecord } from '../../../types';
import './row_formatter.scss';
import { type ShouldShowFieldInTableHandler } from '../../../utils/get_should_show_field_handler';

View file

@ -22,7 +22,7 @@ import { SHOW_FIELD_STATISTICS } from '../../common';
import { IUiSettingsClient } from '@kbn/core-ui-settings-browser';
import { SavedSearchEmbeddableComponent } from './saved_search_embeddable_component';
import { VIEW_MODE } from '../../common/constants';
import { buildDataViewMock, deepMockedFields } from '../__mocks__/data_view';
import { buildDataViewMock, deepMockedFields } from '@kbn/discover-utils/src/__mocks__';
let discoverComponent: ReactWrapper;

View file

@ -36,10 +36,10 @@ import { KibanaContextProvider, KibanaThemeProvider } from '@kbn/kibana-react-pl
import { SavedSearch } from '@kbn/saved-search-plugin/public';
import { METRIC_TYPE } from '@kbn/analytics';
import { CellActionsProvider } from '@kbn/cell-actions';
import { buildDataTableRecord } from '@kbn/discover-utils';
import type { DataTableRecord, EsHitRecord } from '@kbn/discover-utils/types';
import { VIEW_MODE } from '../../common/constants';
import { getSortForEmbeddable, SortPair } from '../utils/sorting';
import { buildDataTableRecord } from '../utils/build_data_record';
import { DataTableRecord, EsHitRecord } from '../types';
import { ISearchEmbeddable, SearchInput, SearchOutput } from './types';
import { SEARCH_EMBEDDABLE_TYPE, SEARCH_EMBEDDABLE_CELL_ACTIONS_TRIGGER_ID } from './constants';
import { DiscoverServices } from '../build_services';

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
import React, { useState, memo } from 'react';
import { DataTableRecord } from '../types';
import type { DataTableRecord } from '@kbn/discover-utils/types';
import { DiscoverGrid, DiscoverGridProps } from '../components/discover_grid/discover_grid';
import './saved_search_grid.scss';
import { DiscoverGridFlyout } from '../components/discover_grid/discover_grid_flyout';

View file

@ -9,7 +9,7 @@
import { discoverServiceMock } from '../__mocks__/services';
import { SearchEmbeddableFactory, type StartServices } from './search_embeddable_factory';
import { createSearchSourceMock } from '@kbn/data-plugin/public/mocks';
import { dataViewMock } from '../__mocks__/data_view';
import { dataViewMock } from '@kbn/discover-utils/src/__mocks__';
import { ErrorEmbeddable } from '@kbn/embeddable-plugin/public';
jest.mock('@kbn/embeddable-plugin/public', () => {

View file

@ -7,7 +7,7 @@
*/
import { createSearchSourceMock } from '@kbn/data-plugin/common/search/search_source/mocks';
import { updateSearchSource } from './update_search_source';
import { dataViewMock } from '../../__mocks__/data_view';
import { dataViewMock } from '@kbn/discover-utils/src/__mocks__';
import type { SortOrder } from '@kbn/saved-search-plugin/public';
describe('updateSearchSource', () => {

View file

@ -8,7 +8,7 @@
import { renderHook } from '@testing-library/react-hooks';
import { useColumns } from './use_data_grid_columns';
import { dataViewMock } from '../__mocks__/data_view';
import { dataViewMock } from '@kbn/discover-utils/src/__mocks__';
import { configMock } from '../__mocks__/config';
import { dataViewsMock } from '../__mocks__/data_views';
import { Capabilities } from '@kbn/core/types';

View file

@ -15,7 +15,7 @@ import { ElasticRequestState } from '../application/doc/types';
import { SEARCH_FIELDS_FROM_SOURCE as mockSearchFieldsFromSource } from '../../common';
import { KibanaContextProvider } from '@kbn/kibana-react-plugin/public';
import React from 'react';
import { buildDataTableRecord } from '../utils/build_data_record';
import { buildDataTableRecord } from '@kbn/discover-utils';
const index = 'test-index';
const mockSearchResult = new Subject();

View file

@ -11,8 +11,8 @@ import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey';
import { lastValueFrom } from 'rxjs';
import { DataView } from '@kbn/data-views-plugin/public';
import { reportPerformanceMetricEvent } from '@kbn/ebt-tools';
import { buildDataTableRecord } from '../utils/build_data_record';
import { DataTableRecord } from '../types';
import { buildDataTableRecord } from '@kbn/discover-utils';
import type { DataTableRecord } from '@kbn/discover-utils/types';
import { DocProps } from '../application/doc/components/doc';
import { ElasticRequestState } from '../application/doc/types';
import { SEARCH_FIELDS_FROM_SOURCE } from '../../common';

View file

@ -12,7 +12,7 @@ import { DocViewer } from './doc_viewer';
import { findTestSubject } from '@elastic/eui/lib/test';
import { getDocViewsRegistry } from '../../../../kibana_services';
import { DocViewRenderProps } from '../../doc_views_types';
import { buildDataTableRecord } from '../../../../utils/build_data_record';
import { buildDataTableRecord } from '@kbn/discover-utils';
jest.mock('../../../../kibana_services', () => {
// eslint-disable-next-line @typescript-eslint/no-explicit-any

View file

@ -9,8 +9,8 @@
import React from 'react';
import { shallow } from 'enzyme';
import { DocViewerTab } from './doc_viewer_tab';
import { dataViewMock } from '../../../../__mocks__/data_view';
import { buildDataTableRecord } from '../../../../utils/build_data_record';
import { dataViewMock } from '@kbn/discover-utils/src/__mocks__';
import { buildDataTableRecord } from '@kbn/discover-utils';
describe('DocViewerTab', () => {
test('changing columns triggers an update', () => {

Some files were not shown because too many files have changed in this diff Show more