Skip to content

Commit 01cb7e4

Browse files
Merge branch 'master' into reporting/screenshot-always-capture
2 parents 1723523 + 4883d4b commit 01cb7e4

File tree

367 files changed

+7622
-9509
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

367 files changed

+7622
-9509
lines changed

examples/search_explorer/public/es_strategy.tsx

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,6 @@ import {
3333
import { DoSearch } from './do_search';
3434
import { GuideSection } from './guide_section';
3535

36-
// @ts-ignore
37-
import serverPlugin from '!!raw-loader!./../../../src/plugins/data/server/search/es_search/es_search_service';
3836
// @ts-ignore
3937
import serverStrategy from '!!raw-loader!./../../../src/plugins/data/server/search/es_search/es_search_strategy';
4038

@@ -127,10 +125,7 @@ export class EsSearchTest extends React.Component<Props, State> {
127125
},
128126
{
129127
title: 'Server',
130-
code: [
131-
{ description: 'es_search_service.ts', snippet: serverPlugin },
132-
{ description: 'es_search_strategy.ts', snippet: serverStrategy },
133-
],
128+
code: [{ description: 'es_search_strategy.ts', snippet: serverStrategy }],
134129
},
135130
]}
136131
demo={this.renderDemo()}

src/legacy/core_plugins/kibana/public/discover/np_ready/angular/discover.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ <h1 class="euiScreenReaderOnly">{{screenTitle}}</h1>
2323

2424
<main class="container-fluid">
2525
<div class="row">
26-
<div class="col-md-2 sidebar-container collapsible-sidebar" id="discover-sidebar">
26+
<div class="col-md-2 sidebar-container collapsible-sidebar" id="discover-sidebar" data-test-subj="discover-sidebar">
2727
<div class="dscFieldChooser">
2828
<disc-field-chooser
2929
columns="state.columns"

src/legacy/core_plugins/kibana/public/management/sections/index_patterns/create_index_pattern_wizard/components/step_time_field/step_time_field.test.tsx

Lines changed: 42 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,16 +21,16 @@ import React from 'react';
2121
import { shallowWithI18nProvider } from 'test_utils/enzyme_helpers';
2222
import { IndexPatternCreationConfig } from '../../../../../../../../management/public';
2323
import { IFieldType } from '../../../../../../../../../../plugins/data/public';
24-
import { dataPluginMock } from '../../../../../../../../../../plugins/data/public/mocks';
2524

2625
import { StepTimeField } from '../step_time_field';
2726

2827
jest.mock('./components/header', () => ({ Header: 'Header' }));
2928
jest.mock('./components/time_field', () => ({ TimeField: 'TimeField' }));
3029
jest.mock('./components/advanced_options', () => ({ AdvancedOptions: 'AdvancedOptions' }));
3130
jest.mock('./components/action_buttons', () => ({ ActionButtons: 'ActionButtons' }));
32-
jest.mock('./../../lib/extract_time_fields', () => ({
33-
extractTimeFields: (fields: IFieldType) => fields,
31+
jest.mock('./../../lib', () => ({
32+
extractTimeFields: require.requireActual('./../../lib').extractTimeFields,
33+
ensureMinimumTime: async (fields: IFieldType) => Promise.resolve(fields),
3434
}));
3535
jest.mock('ui/chrome', () => ({
3636
addBasePath: () => {},
@@ -42,7 +42,19 @@ const mockIndexPatternCreationType = new IndexPatternCreationConfig({
4242
});
4343

4444
const noop = () => {};
45-
const indexPatternsService = dataPluginMock.createStartContract().indexPatterns;
45+
const fields = [
46+
{
47+
name: '@timestamp',
48+
type: 'date',
49+
},
50+
];
51+
const indexPatternsService = {
52+
make: () => ({
53+
fieldsFetcher: {
54+
fetchForWildcard: jest.fn().mockReturnValue(Promise.resolve(fields)),
55+
},
56+
}),
57+
} as any;
4658

4759
describe('StepTimeField', () => {
4860
it('should render normally', () => {
@@ -292,4 +304,30 @@ describe('StepTimeField', () => {
292304
error: 'foobar',
293305
});
294306
});
307+
308+
it('should call createIndexPattern with undefined time field when no time filter chosen', async () => {
309+
const createIndexPattern = jest.fn();
310+
311+
const component = shallowWithI18nProvider(
312+
<StepTimeField
313+
indexPattern="ki*"
314+
indexPatternsService={indexPatternsService}
315+
goToPreviousStep={noop}
316+
createIndexPattern={createIndexPattern}
317+
indexPatternCreationType={mockIndexPatternCreationType}
318+
/>
319+
);
320+
321+
await (component.instance() as StepTimeField).fetchTimeFields();
322+
323+
expect((component.state() as any).timeFields).toHaveLength(3);
324+
325+
(component.instance() as StepTimeField).onTimeFieldChanged(({
326+
target: { value: undefined },
327+
} as unknown) as React.ChangeEvent<HTMLSelectElement>);
328+
329+
await (component.instance() as StepTimeField).createIndexPattern();
330+
331+
expect(createIndexPattern).toHaveBeenCalledWith(undefined, '');
332+
});
295333
});

src/legacy/core_plugins/kibana/public/management/sections/index_patterns/create_index_pattern_wizard/components/step_time_field/step_time_field.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ interface StepTimeFieldProps {
4141
indexPattern: string;
4242
indexPatternsService: DataPublicPluginStart['indexPatterns'];
4343
goToPreviousStep: () => void;
44-
createIndexPattern: (selectedTimeField: string, indexPatternId: string) => void;
44+
createIndexPattern: (selectedTimeField: string | undefined, indexPatternId: string) => void;
4545
indexPatternCreationType: IndexPatternCreationConfig;
4646
}
4747

@@ -143,7 +143,7 @@ export class StepTimeField extends Component<StepTimeFieldProps, StepTimeFieldSt
143143
const { selectedTimeField, indexPatternId } = this.state;
144144
this.setState({ isCreating: true });
145145
try {
146-
await createIndexPattern(selectedTimeField || '', indexPatternId);
146+
await createIndexPattern(selectedTimeField, indexPatternId);
147147
} catch (error) {
148148
if (!this.mounted) return;
149149
this.setState({

src/plugins/data/server/search/es_search/es_search_service.test.ts

Lines changed: 0 additions & 42 deletions
This file was deleted.

src/plugins/data/server/search/es_search/es_search_service.ts

Lines changed: 0 additions & 42 deletions
This file was deleted.

src/plugins/data/server/search/es_search/index.ts

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,6 @@
1717
* under the License.
1818
*/
1919

20-
import { PluginInitializerContext } from '../../../../../core/server';
21-
import { EsSearchService } from './es_search_service';
20+
export { esSearchStrategyProvider } from './es_search_strategy';
2221

2322
export { ES_SEARCH_STRATEGY, IEsSearchRequest, IEsSearchResponse } from '../../../common/search';
24-
25-
export function esSearchService(initializerContext: PluginInitializerContext) {
26-
return new EsSearchService(initializerContext);
27-
}

src/plugins/data/server/search/i_search_setup.ts

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,9 @@
1717
* under the License.
1818
*/
1919

20-
import { IContextProvider, APICaller } from 'kibana/server';
20+
import { IContextProvider } from 'kibana/server';
2121
import { ISearchContext } from './i_search_context';
22-
import { IResponseTypesMap, IRequestTypesMap } from './i_search';
2322
import { TRegisterSearchStrategyProvider, TSearchStrategyProvider } from './i_search_strategy';
24-
import { TStrategyTypes } from './strategy_types';
25-
import { DEFAULT_SEARCH_STRATEGY } from '../../common/search';
2623

2724
/**
2825
* The setup contract exposed by the Search plugin exposes the search strategy extension
@@ -40,12 +37,4 @@ export interface ISearchSetup {
4037
* strategies.
4138
*/
4239
registerSearchStrategyProvider: TRegisterSearchStrategyProvider;
43-
44-
__LEGACY: {
45-
search: <T extends TStrategyTypes = typeof DEFAULT_SEARCH_STRATEGY>(
46-
caller: APICaller,
47-
request: IRequestTypesMap[T],
48-
strategyName?: T
49-
) => Promise<IResponseTypesMap[T]>;
50-
};
5140
}

src/plugins/data/server/search/search_service.test.ts

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -42,15 +42,6 @@ describe('Search service', () => {
4242
const setup = plugin.setup(mockCoreSetup);
4343
expect(setup).toHaveProperty('registerSearchStrategyContext');
4444
expect(setup).toHaveProperty('registerSearchStrategyProvider');
45-
expect(setup).toHaveProperty('__LEGACY');
46-
});
47-
});
48-
49-
describe('__LEGACY', () => {
50-
it('calls searchAPI.search', async () => {
51-
const setup = plugin.setup(mockCoreSetup);
52-
setup.__LEGACY.search(jest.fn(), {}, 'foo');
53-
expect(mockSearchApi.search).toBeCalled();
5445
});
5546
});
5647
});

src/plugins/data/server/search/search_service.ts

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ import {
3232
TRegisterSearchStrategyProvider,
3333
} from './i_search_strategy';
3434
import { IRouteHandlerSearchContext } from './i_route_handler_search_context';
35-
import { esSearchService } from './es_search';
35+
import { ES_SEARCH_STRATEGY, esSearchStrategyProvider } from './es_search';
3636

3737
declare module 'kibana/server' {
3838
interface RequestHandlerContext {
@@ -71,15 +71,6 @@ export class SearchService implements Plugin<ISearchSetup, void> {
7171
const api: ISearchSetup = {
7272
registerSearchStrategyContext: this.contextContainer!.registerContext,
7373
registerSearchStrategyProvider,
74-
__LEGACY: {
75-
search: (caller, request, strategyName) => {
76-
const searchAPI = createApi({
77-
caller,
78-
searchStrategies: this.searchStrategies,
79-
});
80-
return searchAPI.search(request, {}, strategyName);
81-
},
82-
},
8374
};
8475

8576
api.registerSearchStrategyContext(this.initializerContext.opaqueId, 'core', () => core);
@@ -89,10 +80,11 @@ export class SearchService implements Plugin<ISearchSetup, void> {
8980
() => this.initializerContext.config.legacy.globalConfig$
9081
);
9182

92-
// ES search capabilities are written in a way that it could easily be a separate plugin,
93-
// however these two plugins are tightly coupled due to the default search strategy using
94-
// es search types.
95-
esSearchService(this.initializerContext).setup(core, { search: api });
83+
api.registerSearchStrategyProvider(
84+
this.initializerContext.opaqueId,
85+
ES_SEARCH_STRATEGY,
86+
esSearchStrategyProvider
87+
);
9688

9789
return api;
9890
}

0 commit comments

Comments
 (0)