2018-03-09 20:18:59 +00:00
|
|
|
import $ from 'jquery';
|
2018-02-21 20:22:56 +00:00
|
|
|
import FilteredSearchDropdownManager from '~/filtered_search/filtered_search_dropdown_manager';
|
2016-12-15 03:51:33 +00:00
|
|
|
|
2017-04-17 07:01:11 +00:00
|
|
|
describe('Filtered Search Dropdown Manager', () => {
|
2017-06-20 08:05:55 +00:00
|
|
|
beforeEach(() => {
|
2018-03-09 20:18:59 +00:00
|
|
|
spyOn($, 'ajax');
|
2017-06-20 08:05:55 +00:00
|
|
|
});
|
|
|
|
|
2017-04-17 07:01:11 +00:00
|
|
|
describe('addWordToInput', () => {
|
|
|
|
function getInputValue() {
|
|
|
|
return document.querySelector('.filtered-search').value;
|
|
|
|
}
|
|
|
|
|
|
|
|
function setInputValue(value) {
|
|
|
|
document.querySelector('.filtered-search').value = value;
|
|
|
|
}
|
|
|
|
|
|
|
|
beforeEach(() => {
|
|
|
|
setFixtures(`
|
|
|
|
<ul class="tokens-container">
|
|
|
|
<li class="input-token">
|
|
|
|
<input class="filtered-search">
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
`);
|
|
|
|
});
|
2016-12-15 18:19:03 +00:00
|
|
|
|
2017-04-17 07:01:11 +00:00
|
|
|
describe('input has no existing value', () => {
|
|
|
|
it('should add just tokenName', () => {
|
2020-01-02 13:03:23 +00:00
|
|
|
FilteredSearchDropdownManager.addWordToInput({ tokenName: 'milestone' });
|
2017-01-30 22:53:18 +00:00
|
|
|
|
2017-04-17 07:01:11 +00:00
|
|
|
const token = document.querySelector('.tokens-container .js-visual-token');
|
2017-01-30 22:53:18 +00:00
|
|
|
|
2017-04-17 07:01:11 +00:00
|
|
|
expect(token.classList.contains('filtered-search-token')).toEqual(true);
|
|
|
|
expect(token.querySelector('.name').innerText).toBe('milestone');
|
|
|
|
expect(getInputValue()).toBe('');
|
|
|
|
});
|
2016-12-15 03:51:33 +00:00
|
|
|
|
2020-01-02 13:03:23 +00:00
|
|
|
it('should add tokenName, tokenOperator, and tokenValue', () => {
|
|
|
|
FilteredSearchDropdownManager.addWordToInput({ tokenName: 'label' });
|
2017-01-30 22:53:18 +00:00
|
|
|
|
2017-04-17 07:01:11 +00:00
|
|
|
let token = document.querySelector('.tokens-container .js-visual-token');
|
2017-01-30 22:53:18 +00:00
|
|
|
|
2017-04-17 07:01:11 +00:00
|
|
|
expect(token.classList.contains('filtered-search-token')).toEqual(true);
|
|
|
|
expect(token.querySelector('.name').innerText).toBe('label');
|
|
|
|
expect(getInputValue()).toBe('');
|
2017-01-30 22:53:18 +00:00
|
|
|
|
2020-01-02 13:03:23 +00:00
|
|
|
FilteredSearchDropdownManager.addWordToInput({ tokenName: 'label', tokenOperator: '=' });
|
|
|
|
|
|
|
|
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('.operator').innerText).toBe('=');
|
|
|
|
expect(getInputValue()).toBe('');
|
|
|
|
|
|
|
|
FilteredSearchDropdownManager.addWordToInput({
|
|
|
|
tokenName: 'label',
|
|
|
|
tokenOperator: '=',
|
|
|
|
tokenValue: 'none',
|
|
|
|
});
|
2017-04-17 07:01:11 +00:00
|
|
|
// We have to get that reference again
|
2018-02-21 20:22:56 +00:00
|
|
|
// Because FilteredSearchDropdownManager deletes the previous token
|
2017-04-17 07:01:11 +00:00
|
|
|
token = document.querySelector('.tokens-container .js-visual-token');
|
2017-01-30 22:53:18 +00:00
|
|
|
|
2017-04-17 07:01:11 +00:00
|
|
|
expect(token.classList.contains('filtered-search-token')).toEqual(true);
|
|
|
|
expect(token.querySelector('.name').innerText).toBe('label');
|
2020-01-02 13:03:23 +00:00
|
|
|
expect(token.querySelector('.operator').innerText).toBe('=');
|
2017-04-17 07:01:11 +00:00
|
|
|
expect(token.querySelector('.value').innerText).toBe('none');
|
|
|
|
expect(getInputValue()).toBe('');
|
2016-12-15 18:19:03 +00:00
|
|
|
});
|
2017-04-17 07:01:11 +00:00
|
|
|
});
|
2016-12-15 18:19:03 +00:00
|
|
|
|
2017-04-17 07:01:11 +00:00
|
|
|
describe('input has existing value', () => {
|
|
|
|
it('should be able to just add tokenName', () => {
|
|
|
|
setInputValue('a');
|
2020-01-02 13:03:23 +00:00
|
|
|
FilteredSearchDropdownManager.addWordToInput({ tokenName: 'author' });
|
2017-01-30 22:53:18 +00:00
|
|
|
|
2017-04-17 07:01:11 +00:00
|
|
|
const token = document.querySelector('.tokens-container .js-visual-token');
|
2017-01-30 22:53:18 +00:00
|
|
|
|
2017-04-17 07:01:11 +00:00
|
|
|
expect(token.classList.contains('filtered-search-token')).toEqual(true);
|
|
|
|
expect(token.querySelector('.name').innerText).toBe('author');
|
|
|
|
expect(getInputValue()).toBe('');
|
|
|
|
});
|
2016-12-15 18:19:03 +00:00
|
|
|
|
2017-04-17 07:01:11 +00:00
|
|
|
it('should replace tokenValue', () => {
|
2020-01-02 13:03:23 +00:00
|
|
|
FilteredSearchDropdownManager.addWordToInput({ tokenName: 'author' });
|
|
|
|
FilteredSearchDropdownManager.addWordToInput({ tokenName: 'author', tokenOperator: '=' });
|
2017-01-30 22:53:18 +00:00
|
|
|
|
2017-04-17 07:01:11 +00:00
|
|
|
setInputValue('roo');
|
2020-01-02 13:03:23 +00:00
|
|
|
FilteredSearchDropdownManager.addWordToInput({
|
|
|
|
tokenName: null,
|
|
|
|
tokenOperator: '=',
|
|
|
|
tokenValue: '@root',
|
|
|
|
});
|
2017-01-30 22:53:18 +00:00
|
|
|
|
2017-04-17 07:01:11 +00:00
|
|
|
const token = document.querySelector('.tokens-container .js-visual-token');
|
2017-01-30 22:53:18 +00:00
|
|
|
|
2017-04-17 07:01:11 +00:00
|
|
|
expect(token.classList.contains('filtered-search-token')).toEqual(true);
|
|
|
|
expect(token.querySelector('.name').innerText).toBe('author');
|
2020-01-02 13:03:23 +00:00
|
|
|
expect(token.querySelector('.operator').innerText).toBe('=');
|
2017-04-17 07:01:11 +00:00
|
|
|
expect(token.querySelector('.value').innerText).toBe('@root');
|
|
|
|
expect(getInputValue()).toBe('');
|
|
|
|
});
|
2016-12-15 18:19:03 +00:00
|
|
|
|
2017-04-17 07:01:11 +00:00
|
|
|
it('should add tokenValues containing spaces', () => {
|
2020-01-02 13:03:23 +00:00
|
|
|
FilteredSearchDropdownManager.addWordToInput({ tokenName: 'label' });
|
2017-01-30 22:53:18 +00:00
|
|
|
|
2017-04-17 07:01:11 +00:00
|
|
|
setInputValue('"test ');
|
2020-01-02 13:03:23 +00:00
|
|
|
FilteredSearchDropdownManager.addWordToInput({
|
|
|
|
tokenName: 'label',
|
|
|
|
tokenOperator: '=',
|
|
|
|
tokenValue: '~\'"test me"\'',
|
|
|
|
});
|
2017-01-30 22:53:18 +00:00
|
|
|
|
2017-04-17 07:01:11 +00:00
|
|
|
const token = document.querySelector('.tokens-container .js-visual-token');
|
2017-01-30 22:53:18 +00:00
|
|
|
|
2017-04-17 07:01:11 +00:00
|
|
|
expect(token.classList.contains('filtered-search-token')).toEqual(true);
|
|
|
|
expect(token.querySelector('.name').innerText).toBe('label');
|
2020-01-02 13:03:23 +00:00
|
|
|
expect(token.querySelector('.operator').innerText).toBe('=');
|
2017-04-17 07:01:11 +00:00
|
|
|
expect(token.querySelector('.value').innerText).toBe('~\'"test me"\'');
|
|
|
|
expect(getInputValue()).toBe('');
|
2016-12-15 03:51:33 +00:00
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
2017-04-17 07:01:11 +00:00
|
|
|
});
|