Skip to content

Commit 658da20

Browse files
Merge branch '7.7' into backport/7.7/pr-61452
2 parents 1886aad + e9855af commit 658da20

5 files changed

Lines changed: 106 additions & 5 deletions

File tree

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
@@ -1,4 +1,4 @@
1-
<discover-app class="app-container">
1+
<discover-app class="app-container" data-fetch-counter="{{fetchCounter}}">
22
<h1 class="euiScreenReaderOnly">{{screenTitle}}</h1>
33

44
<!-- Local nav. -->

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

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,8 @@ function discoverController(
194194
const savedSearch = $route.current.locals.savedObjects.savedSearch;
195195
$scope.searchSource = savedSearch.searchSource;
196196
$scope.indexPattern = resolveIndexPatternLoading();
197+
//used for functional testing
198+
$scope.fetchCounter = 0;
197199

198200
const getTimeField = () => {
199201
return isDefaultType($scope.indexPattern) ? $scope.indexPattern.timeFieldName : undefined;
@@ -275,6 +277,7 @@ function discoverController(
275277
filterManager.getUpdates$(),
276278
{
277279
next: () => {
280+
$scope.state.filters = filterManager.getAppFilters();
278281
$scope.updateDataSource();
279282
},
280283
},
@@ -784,7 +787,7 @@ function discoverController(
784787
$scope.opts.fetch = $scope.fetch = function() {
785788
// ignore requests to fetch before the app inits
786789
if (!init.complete) return;
787-
790+
$scope.fetchCounter++;
788791
$scope.fetchError = undefined;
789792

790793
// Abort any in-progress requests before fetching again
@@ -821,9 +824,11 @@ function discoverController(
821824
});
822825
};
823826

824-
$scope.updateQuery = function({ query }) {
825-
setAppState({ query });
826-
$fetchObservable.next();
827+
$scope.updateQuery = function({ query }, isUpdate = true) {
828+
if (!_.isEqual(query, appStateContainer.getState().query) || isUpdate === false) {
829+
setAppState({ query });
830+
$fetchObservable.next();
831+
}
827832
};
828833

829834
$scope.updateSavedQueryId = newSavedQueryId => {

test/functional/apps/discover/_discover.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -224,5 +224,22 @@ export default function({ getService, getPageObjects }) {
224224
expect(rowData.startsWith('Sep 22, 2015 @ 16:50:13.253')).to.be.ok();
225225
});
226226
});
227+
describe('usage of discover:searchOnPageLoad', () => {
228+
it('should fetch data from ES initially when discover:searchOnPageLoad is false', async function() {
229+
await kibanaServer.uiSettings.replace({ 'discover:searchOnPageLoad': false });
230+
await PageObjects.common.navigateToApp('discover');
231+
await PageObjects.header.awaitKibanaChrome();
232+
233+
expect(await PageObjects.discover.getNrOfFetches()).to.be(0);
234+
});
235+
236+
it('should not fetch data from ES initially when discover:searchOnPageLoad is true', async function() {
237+
await kibanaServer.uiSettings.replace({ 'discover:searchOnPageLoad': true });
238+
await PageObjects.common.navigateToApp('discover');
239+
await PageObjects.header.awaitKibanaChrome();
240+
241+
expect(await PageObjects.discover.getNrOfFetches()).to.be(1);
242+
});
243+
});
227244
});
228245
}

test/functional/apps/discover/_field_visualize.ts

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,16 @@
1717
* under the License.
1818
*/
1919

20+
import expect from '@kbn/expect';
2021
import { FtrProviderContext } from '../../ftr_provider_context';
2122

2223
export default function({ getService, getPageObjects }: FtrProviderContext) {
2324
const esArchiver = getService('esArchiver');
25+
const filterBar = getService('filterBar');
2426
const inspector = getService('inspector');
2527
const kibanaServer = getService('kibanaServer');
2628
const log = getService('log');
29+
const queryBar = getService('queryBar');
2730
const PageObjects = getPageObjects(['common', 'discover', 'header', 'timePicker']);
2831
const defaultSettings = {
2932
defaultIndex: 'logstash-*',
@@ -76,5 +79,76 @@ export default function({ getService, getPageObjects }: FtrProviderContext) {
7679
await inspector.expectTableData(expectedTableData);
7780
await inspector.close();
7881
});
82+
83+
it('should preserve app filters in visualize', async () => {
84+
await filterBar.addFilter('bytes', 'is between', '3500', '4000');
85+
await PageObjects.discover.clickFieldListItem('geo.src');
86+
log.debug('visualize a geo.src field with filter applied');
87+
await PageObjects.discover.clickFieldListItemVisualize('geo.src');
88+
await PageObjects.header.waitUntilLoadingHasFinished();
89+
90+
expect(await filterBar.hasFilter('bytes', '3,500 to 4,000')).to.be(true);
91+
const expectedTableData = [
92+
['CN', '133'],
93+
['IN', '120'],
94+
['US', '58'],
95+
['ID', '28'],
96+
['BD', '25'],
97+
['BR', '22'],
98+
['EG', '14'],
99+
['NG', '14'],
100+
['PK', '13'],
101+
['IR', '12'],
102+
['PH', '12'],
103+
['JP', '11'],
104+
['RU', '11'],
105+
['DE', '8'],
106+
['FR', '8'],
107+
['MX', '8'],
108+
['TH', '8'],
109+
['TR', '8'],
110+
['CA', '6'],
111+
['SA', '6'],
112+
];
113+
await inspector.open();
114+
await inspector.expectTableData(expectedTableData);
115+
await inspector.close();
116+
});
117+
118+
it('should preserve query in visualize', async () => {
119+
await queryBar.setQuery('machine.os : ios');
120+
await queryBar.submitQuery();
121+
await PageObjects.discover.clickFieldListItem('geo.dest');
122+
log.debug('visualize a geo.dest field with query applied');
123+
await PageObjects.discover.clickFieldListItemVisualize('geo.dest');
124+
await PageObjects.header.waitUntilLoadingHasFinished();
125+
126+
expect(await queryBar.getQueryString()).to.equal('machine.os : ios');
127+
const expectedTableData = [
128+
['CN', '519'],
129+
['IN', '495'],
130+
['US', '275'],
131+
['ID', '82'],
132+
['PK', '75'],
133+
['BR', '71'],
134+
['NG', '54'],
135+
['BD', '51'],
136+
['JP', '47'],
137+
['MX', '47'],
138+
['IR', '44'],
139+
['PH', '44'],
140+
['RU', '42'],
141+
['ET', '33'],
142+
['TH', '33'],
143+
['EG', '32'],
144+
['VN', '32'],
145+
['DE', '31'],
146+
['FR', '30'],
147+
['GB', '30'],
148+
];
149+
await inspector.open();
150+
await inspector.expectTableData(expectedTableData);
151+
await inspector.close();
152+
});
79153
});
80154
}

test/functional/page_objects/discover_page.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -300,6 +300,11 @@ export function DiscoverPageProvider({ getService, getPageObjects }: FtrProvider
300300
'true'
301301
);
302302
}
303+
public async getNrOfFetches() {
304+
const el = await find.byCssSelector('[data-fetch-counter]');
305+
const nr = await el.getAttribute('data-fetch-counter');
306+
return Number(nr);
307+
}
303308
}
304309

305310
return new DiscoverPage();

0 commit comments

Comments
 (0)