Skip to content

Commit 5453980

Browse files
committed
Migrate first tests
1 parent 3be4560 commit 5453980

File tree

6 files changed

+119
-140
lines changed

6 files changed

+119
-140
lines changed

src/legacy/core_plugins/kibana/public/discover/__tests__/query_parameters/action_add_filter.js

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

src/legacy/core_plugins/kibana/public/discover/__tests__/query_parameters/action_set_predecessor_count.js

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

src/legacy/core_plugins/kibana/public/discover/np_ready/angular/context/query/actions.js

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,13 @@ import { FAILURE_REASONS, LOADING_STATUS } from './constants';
2929
import { MarkdownSimple } from '../../../../../../../kibana_react/public';
3030

3131
export function QueryActionsProvider(Promise) {
32-
const fetchAnchor = fetchAnchorProvider(getServices().indexPatterns, new SearchSource());
33-
const { fetchSurroundingDocs } = fetchContextProvider(getServices().indexPatterns);
34-
const { setPredecessorCount, setQueryParameters, setSuccessorCount } = getQueryParameterActions();
32+
const { filterManager, indexPatterns } = getServices();
33+
const fetchAnchor = fetchAnchorProvider(indexPatterns, new SearchSource());
34+
const { fetchSurroundingDocs } = fetchContextProvider(indexPatterns);
35+
const { setPredecessorCount, setQueryParameters, setSuccessorCount } = getQueryParameterActions(
36+
filterManager,
37+
indexPatterns
38+
);
3539

3640
const setFailedStatus = state => (subject, details = {}) =>
3741
(state.loadingStatus[subject] = {

src/legacy/core_plugins/kibana/public/discover/np_ready/angular/context/query_parameters/actions.js

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,11 @@
1818
*/
1919

2020
import _ from 'lodash';
21-
import { getServices } from '../../../../kibana_services';
2221
import { esFilters } from '../../../../../../../../../plugins/data/public';
2322

2423
import { MAX_CONTEXT_SIZE, MIN_CONTEXT_SIZE, QUERY_PARAMETER_KEYS } from './constants';
2524

26-
export function getQueryParameterActions() {
27-
const filterManager = getServices().filterManager;
28-
25+
export function getQueryParameterActions(filterManager, indexPatterns) {
2926
const setPredecessorCount = state => predecessorCount =>
3027
(state.queryParameters.predecessorCount = clamp(
3128
MIN_CONTEXT_SIZE,
@@ -57,8 +54,10 @@ export function getQueryParameterActions() {
5754
indexPatternId
5855
);
5956
filterManager.addFilters(newFilters);
60-
const indexPattern = await getServices().indexPatterns.get(indexPatternId);
61-
indexPattern.popularizeField(field.name, 1);
57+
if (indexPatterns) {
58+
const indexPattern = await indexPatterns.get(indexPatternId);
59+
indexPattern.popularizeField(field.name, 1);
60+
}
6261
};
6362

6463
return {
Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
/*
2+
* Licensed to Elasticsearch B.V. under one or more contributor
3+
* license agreements. See the NOTICE file distributed with
4+
* this work for additional information regarding copyright
5+
* ownership. Elasticsearch B.V. licenses this file to you under
6+
* the Apache License, Version 2.0 (the "License"); you may
7+
* not use this file except in compliance with the License.
8+
* You may obtain a copy of the License at
9+
*
10+
* http://www.apache.org/licenses/LICENSE-2.0
11+
*
12+
* Unless required by applicable law or agreed to in writing,
13+
* software distributed under the License is distributed on an
14+
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15+
* KIND, either express or implied. See the License for the
16+
* specific language governing permissions and limitations
17+
* under the License.
18+
*/
19+
20+
// @ts-ignore
21+
import { getQueryParameterActions } from './actions';
22+
import {
23+
FilterManager,
24+
IndexPatternsContract,
25+
} from '../../../../../../../../../plugins/data/public';
26+
let state: {
27+
queryParameters: {
28+
defaultStepSize: number;
29+
indexPatternId: string;
30+
predecessorCount: number;
31+
successorCount: number;
32+
};
33+
};
34+
let filterManager: FilterManager;
35+
let indexPatterns: IndexPatternsContract;
36+
37+
beforeEach(() => {
38+
indexPatterns = {
39+
get: () => {
40+
return {
41+
popularizeField: jest.fn(),
42+
};
43+
},
44+
} as IndexPatternsContract;
45+
46+
filterManager = {
47+
filters: [],
48+
addFilters: jest.fn(),
49+
setFilters: jest.fn(),
50+
getAppFilters: () => [],
51+
} as FilterManager;
52+
53+
state = {
54+
queryParameters: {
55+
defaultStepSize: 3,
56+
indexPatternId: 'INDEX_PATTERN_ID',
57+
predecessorCount: 10,
58+
successorCount: 10,
59+
},
60+
};
61+
});
62+
63+
describe('context query_parameter actions', function() {
64+
describe('action addFilter', () => {
65+
it('should pass the given arguments to the filterManager', () => {
66+
const { addFilter } = getQueryParameterActions(filterManager, indexPatterns);
67+
68+
addFilter(state)('FIELD_NAME', 'FIELD_VALUE', 'FILTER_OPERATION');
69+
70+
// get the generated filter
71+
const generatedFilter = filterManager.addFilters.mock.calls[0][0][0];
72+
const queryKeys = Object.keys(generatedFilter.query.match_phrase);
73+
expect(filterManager.addFilters.mock.calls.length).toBe(1);
74+
expect(queryKeys[0]).toBe('FIELD_NAME');
75+
expect(generatedFilter.query.match_phrase[queryKeys[0]]).toBe('FIELD_VALUE');
76+
});
77+
78+
it('should pass the index pattern id to the filterManager', () => {
79+
const { addFilter } = getQueryParameterActions(filterManager, indexPatterns);
80+
addFilter(state)('FIELD_NAME', 'FIELD_VALUE', 'FILTER_OPERATION');
81+
const generatedFilter = filterManager.addFilters.mock.calls[0][0][0];
82+
expect(generatedFilter.meta.index).toBe('INDEX_PATTERN_ID');
83+
});
84+
});
85+
describe('action setPredecessorCount', () => {
86+
it('should set the predecessorCount to the given value', () => {
87+
const { setPredecessorCount } = getQueryParameterActions(indexPatterns, filterManager);
88+
setPredecessorCount(state)(20);
89+
expect(state.queryParameters.predecessorCount).toBe(20);
90+
});
91+
92+
it('should limit the predecessorCount to 0 as a lower bound', () => {
93+
const { setPredecessorCount } = getQueryParameterActions(indexPatterns, filterManager);
94+
setPredecessorCount(state)(-1);
95+
expect(state.queryParameters.predecessorCount).toBe(0);
96+
});
97+
98+
it('should limit the predecessorCount to 10000 as an upper bound', () => {
99+
const { setPredecessorCount } = getQueryParameterActions(indexPatterns, filterManager);
100+
setPredecessorCount(state)(20000);
101+
expect(state.queryParameters.predecessorCount).toBe(10000);
102+
});
103+
});
104+
});

src/legacy/core_plugins/kibana/public/discover/np_ready/angular/context_app.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
*/
1919

2020
import _ from 'lodash';
21-
import { getAngularModule } from '../../kibana_services';
21+
import { getAngularModule, getServices } from '../../kibana_services';
2222
import contextAppTemplate from './context_app.html';
2323
import './context/components/action_bar';
2424
import { getFirstSortableField } from './context/api/utils/sorting';
@@ -58,7 +58,8 @@ module.directive('contextApp', function ContextApp() {
5858
});
5959

6060
function ContextAppController($scope, config, Private) {
61-
const queryParameterActions = getQueryParameterActions();
61+
const { filterManager, indexpatterns } = getServices();
62+
const queryParameterActions = getQueryParameterActions(filterManager, indexpatterns);
6263
const queryActions = Private(QueryActionsProvider);
6364
this.state = createInitialState(
6465
parseInt(config.get('context:step'), 10),

0 commit comments

Comments
 (0)