debian-mirror-gitlab/spec/frontend/filtered_search/filtered_search_dropdown_manager_spec.js

131 lines
4.9 KiB
JavaScript
Raw Normal View History

2020-06-23 00:09:42 +05:30
import axios from 'axios';
import MockAdapter from 'axios-mock-adapter';
2018-03-27 19:54:05 +05:30
import FilteredSearchDropdownManager from '~/filtered_search/filtered_search_dropdown_manager';
2017-08-17 22:00:37 +05:30
describe('Filtered Search Dropdown Manager', () => {
2020-06-23 00:09:42 +05:30
let mock;
2017-09-10 17:25:29 +05:30
beforeEach(() => {
2020-06-23 00:09:42 +05:30
mock = new MockAdapter(axios);
mock.onGet().reply(200);
2017-09-10 17:25:29 +05:30
});
2017-08-17 22:00:37 +05:30
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>
`);
});
describe('input has no existing value', () => {
it('should add just tokenName', () => {
2020-03-13 15:44:24 +05:30
FilteredSearchDropdownManager.addWordToInput({ tokenName: 'milestone' });
2017-08-17 22:00:37 +05:30
const token = document.querySelector('.tokens-container .js-visual-token');
expect(token.classList.contains('filtered-search-token')).toEqual(true);
2020-06-23 00:09:42 +05:30
expect(token.querySelector('.name').textContent).toBe('milestone');
2017-08-17 22:00:37 +05:30
expect(getInputValue()).toBe('');
});
2020-03-13 15:44:24 +05:30
it('should add tokenName, tokenOperator, and tokenValue', () => {
FilteredSearchDropdownManager.addWordToInput({ tokenName: 'label' });
2017-08-17 22:00:37 +05:30
let token = document.querySelector('.tokens-container .js-visual-token');
expect(token.classList.contains('filtered-search-token')).toEqual(true);
2020-06-23 00:09:42 +05:30
expect(token.querySelector('.name').textContent).toBe('label');
2017-08-17 22:00:37 +05:30
expect(getInputValue()).toBe('');
2020-03-13 15:44:24 +05:30
FilteredSearchDropdownManager.addWordToInput({ tokenName: 'label', tokenOperator: '=' });
token = document.querySelector('.tokens-container .js-visual-token');
expect(token.classList.contains('filtered-search-token')).toEqual(true);
2020-06-23 00:09:42 +05:30
expect(token.querySelector('.name').textContent).toBe('label');
expect(token.querySelector('.operator').textContent).toBe('=');
2020-03-13 15:44:24 +05:30
expect(getInputValue()).toBe('');
FilteredSearchDropdownManager.addWordToInput({
tokenName: 'label',
tokenOperator: '=',
tokenValue: 'none',
});
2017-08-17 22:00:37 +05:30
// We have to get that reference again
2018-03-27 19:54:05 +05:30
// Because FilteredSearchDropdownManager deletes the previous token
2017-08-17 22:00:37 +05:30
token = document.querySelector('.tokens-container .js-visual-token');
expect(token.classList.contains('filtered-search-token')).toEqual(true);
2020-06-23 00:09:42 +05:30
expect(token.querySelector('.name').textContent).toBe('label');
expect(token.querySelector('.operator').textContent).toBe('=');
expect(token.querySelector('.value').textContent).toBe('none');
2017-08-17 22:00:37 +05:30
expect(getInputValue()).toBe('');
});
});
describe('input has existing value', () => {
it('should be able to just add tokenName', () => {
setInputValue('a');
2020-03-13 15:44:24 +05:30
FilteredSearchDropdownManager.addWordToInput({ tokenName: 'author' });
2017-08-17 22:00:37 +05:30
const token = document.querySelector('.tokens-container .js-visual-token');
expect(token.classList.contains('filtered-search-token')).toEqual(true);
2020-06-23 00:09:42 +05:30
expect(token.querySelector('.name').textContent).toBe('author');
2017-08-17 22:00:37 +05:30
expect(getInputValue()).toBe('');
});
it('should replace tokenValue', () => {
2020-03-13 15:44:24 +05:30
FilteredSearchDropdownManager.addWordToInput({ tokenName: 'author' });
FilteredSearchDropdownManager.addWordToInput({ tokenName: 'author', tokenOperator: '=' });
2017-08-17 22:00:37 +05:30
setInputValue('roo');
2020-03-13 15:44:24 +05:30
FilteredSearchDropdownManager.addWordToInput({
tokenName: null,
tokenOperator: '=',
tokenValue: '@root',
});
2017-08-17 22:00:37 +05:30
const token = document.querySelector('.tokens-container .js-visual-token');
expect(token.classList.contains('filtered-search-token')).toEqual(true);
2020-06-23 00:09:42 +05:30
expect(token.querySelector('.name').textContent).toBe('author');
expect(token.querySelector('.operator').textContent).toBe('=');
expect(token.querySelector('.value').textContent).toBe('@root');
2017-08-17 22:00:37 +05:30
expect(getInputValue()).toBe('');
});
it('should add tokenValues containing spaces', () => {
2020-03-13 15:44:24 +05:30
FilteredSearchDropdownManager.addWordToInput({ tokenName: 'label' });
2017-08-17 22:00:37 +05:30
setInputValue('"test ');
2020-03-13 15:44:24 +05:30
FilteredSearchDropdownManager.addWordToInput({
tokenName: 'label',
tokenOperator: '=',
tokenValue: '~\'"test me"\'',
});
2017-08-17 22:00:37 +05:30
const token = document.querySelector('.tokens-container .js-visual-token');
expect(token.classList.contains('filtered-search-token')).toEqual(true);
2020-06-23 00:09:42 +05:30
expect(token.querySelector('.name').textContent).toBe('label');
expect(token.querySelector('.operator').textContent).toBe('=');
expect(token.querySelector('.value').textContent).toBe('~\'"test me"\'');
2017-08-17 22:00:37 +05:30
expect(getInputValue()).toBe('');
});
});
});
});