gitlab-org--gitlab-foss/spec/javascripts/filtered_search/filtered_search_dropdown_ma...

102 lines
3.9 KiB
JavaScript
Raw Normal View History

2017-01-13 16:27:19 +00:00
require('~/extensions/array');
2017-01-30 22:53:18 +00:00
require('~/filtered_search/filtered_search_visual_tokens');
2017-01-13 16:27:19 +00:00
require('~/filtered_search/filtered_search_tokenizer');
require('~/filtered_search/filtered_search_dropdown_manager');
(() => {
describe('Filtered Search Dropdown Manager', () => {
describe('addWordToInput', () => {
2016-12-15 18:19:03 +00:00
function getInputValue() {
return document.querySelector('.filtered-search').value;
}
2017-01-05 19:56:23 +00:00
function setInputValue(value) {
document.querySelector('.filtered-search').value = value;
}
2016-12-15 18:19:03 +00:00
beforeEach(() => {
2017-01-30 22:53:18 +00:00
setFixtures(`
<ul class="tokens-container">
<li class="input-token">
<input class="filtered-search">
</li>
</ul>
`);
2016-12-15 18:19:03 +00:00
});
describe('input has no existing value', () => {
2017-01-05 19:56:23 +00:00
it('should add just tokenName', () => {
gl.FilteredSearchDropdownManager.addWordToInput('milestone');
2017-01-30 22:53:18 +00:00
const token = document.querySelector('.tokens-container .js-visual-token');
expect(token.classList.contains('filtered-search-token')).toEqual(true);
expect(token.querySelector('.name').innerText).toBe('milestone');
expect(getInputValue()).toBe('');
});
2017-01-05 19:56:23 +00:00
it('should add tokenName and tokenValue', () => {
2017-01-30 22:53:18 +00:00
gl.FilteredSearchDropdownManager.addWordToInput('label');
let token = document.querySelector('.tokens-container .js-visual-token');
expect(token.classList.contains('filtered-search-token')).toEqual(true);
expect(token.querySelector('.name').innerText).toBe('label');
expect(getInputValue()).toBe('');
2017-01-05 19:56:23 +00:00
gl.FilteredSearchDropdownManager.addWordToInput('label', 'none');
2017-01-30 22:53:18 +00:00
// We have to get that reference again
// Because gl.FilteredSearchDropdownManager deletes the previous token
token = document.querySelector('.tokens-container .js-visual-token');
expect(token.classList.contains('filtered-search-token')).toEqual(true);
expect(token.querySelector('.name').innerText).toBe('label');
expect(token.querySelector('.value').innerText).toBe('none');
expect(getInputValue()).toBe('');
2016-12-15 18:19:03 +00:00
});
});
2017-01-05 19:56:23 +00:00
describe('input has existing value', () => {
it('should be able to just add tokenName', () => {
setInputValue('a');
gl.FilteredSearchDropdownManager.addWordToInput('author');
2017-01-30 22:53:18 +00:00
const token = document.querySelector('.tokens-container .js-visual-token');
expect(token.classList.contains('filtered-search-token')).toEqual(true);
expect(token.querySelector('.name').innerText).toBe('author');
expect(getInputValue()).toBe('');
2017-01-05 19:56:23 +00:00
});
2016-12-15 18:19:03 +00:00
2017-01-05 19:56:23 +00:00
it('should replace tokenValue', () => {
2017-01-30 22:53:18 +00:00
gl.FilteredSearchDropdownManager.addWordToInput('author');
setInputValue('roo');
gl.FilteredSearchDropdownManager.addWordToInput(null, '@root');
const token = document.querySelector('.tokens-container .js-visual-token');
expect(token.classList.contains('filtered-search-token')).toEqual(true);
expect(token.querySelector('.name').innerText).toBe('author');
expect(token.querySelector('.value').innerText).toBe('@root');
expect(getInputValue()).toBe('');
2016-12-15 18:19:03 +00:00
});
2017-01-05 19:56:23 +00:00
it('should add tokenValues containing spaces', () => {
2017-01-30 22:53:18 +00:00
gl.FilteredSearchDropdownManager.addWordToInput('label');
setInputValue('"test ');
2017-01-05 19:56:23 +00:00
gl.FilteredSearchDropdownManager.addWordToInput('label', '~\'"test me"\'');
2017-01-30 22:53:18 +00:00
const token = document.querySelector('.tokens-container .js-visual-token');
expect(token.classList.contains('filtered-search-token')).toEqual(true);
expect(token.querySelector('.name').innerText).toBe('label');
expect(token.querySelector('.value').innerText).toBe('~\'"test me"\'');
expect(getInputValue()).toBe('');
});
});
});
});
})();