Skip to content

Commit 6895a6f

Browse files
committed
add functional test
1 parent eb0c7a0 commit 6895a6f

3 files changed

Lines changed: 40 additions & 0 deletions

File tree

src/plugins/data/public/ui/query_string_input/language_switcher.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ export function QueryLanguageSwitcher(props: Props) {
6161
size="xs"
6262
onClick={() => setIsPopoverOpen(!isPopoverOpen)}
6363
className="euiFormControlLayout__append"
64+
data-test-subj={'switchQueryLanguageButton'}
6465
>
6566
{props.language === 'lucene' ? luceneLabel : kqlLabel}
6667
</EuiButtonEmpty>

test/functional/apps/discover/_saved_queries.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,25 @@ export default function({ getService, getPageObjects }) {
147147
await savedQueryManagementComponent.clearCurrentlyLoadedQuery();
148148
expect(await queryBar.getQueryString()).to.eql('');
149149
});
150+
151+
// https://github.com/elastic/kibana/issues/63505
152+
it('allows clearing if non default language was remembered in localstorage', async () => {
153+
await queryBar.switchQueryLanguage('lucene');
154+
await PageObjects.common.navigateToApp('discover'); // makes sure discovered is reloaded without any state in url
155+
await queryBar.expectQueryLanguageOrFail('lucene'); // make sure lucene is remembered after refresh (comes from localstorage)
156+
await savedQueryManagementComponent.loadSavedQuery('OkResponse');
157+
await queryBar.expectQueryLanguageOrFail('kql');
158+
await savedQueryManagementComponent.clearCurrentlyLoadedQuery();
159+
await queryBar.expectQueryLanguageOrFail('lucene');
160+
});
161+
162+
// fails: bug in discover https://github.com/elastic/kibana/issues/63561
163+
// unskip this test when bug is fixed
164+
it.skip('changing language removes saved query', async () => {
165+
await savedQueryManagementComponent.loadSavedQuery('OkResponse');
166+
await queryBar.switchQueryLanguage('lucene');
167+
expect(await queryBar.getQueryString()).to.eql('');
168+
});
150169
});
151170
});
152171
}

test/functional/services/query_bar.ts

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

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

2223
export function QueryBarProvider({ getService, getPageObjects }: FtrProviderContext) {
@@ -25,6 +26,7 @@ export function QueryBarProvider({ getService, getPageObjects }: FtrProviderCont
2526
const log = getService('log');
2627
const PageObjects = getPageObjects(['header', 'common']);
2728
const find = getService('find');
29+
const browser = getService('browser');
2830

2931
class QueryBar {
3032
async getQueryString(): Promise<string> {
@@ -62,6 +64,24 @@ export function QueryBarProvider({ getService, getPageObjects }: FtrProviderCont
6264
public async clickQuerySubmitButton(): Promise<void> {
6365
await testSubjects.click('querySubmitButton');
6466
}
67+
68+
public async switchQueryLanguage(lang: 'kql' | 'lucene'): Promise<void> {
69+
await testSubjects.click('switchQueryLanguageButton');
70+
const kqlToggle = await testSubjects.find('languageToggle');
71+
const currentLang =
72+
(await kqlToggle.getAttribute('aria-checked')) === 'true' ? 'kql' : 'lucene';
73+
if (lang !== currentLang) {
74+
await kqlToggle.click();
75+
}
76+
77+
await browser.pressKeys(browser.keys.ESCAPE); // close popover
78+
await this.expectQueryLanguageOrFail(lang); // make sure lang is switched
79+
}
80+
81+
public async expectQueryLanguageOrFail(lang: 'kql' | 'lucene'): Promise<void> {
82+
const queryLanguageButton = await testSubjects.find('switchQueryLanguageButton');
83+
expect((await queryLanguageButton.getVisibleText()).toLowerCase()).to.eql(lang);
84+
}
6585
}
6686

6787
return new QueryBar();

0 commit comments

Comments
 (0)