parent
8df62a3a64
commit
cf542f9ed0
|
@ -5,6 +5,10 @@
|
||||||
/* global SubscriptionSelect */
|
/* global SubscriptionSelect */
|
||||||
|
|
||||||
import IssuableBulkUpdateActions from './issuable_bulk_update_actions';
|
import IssuableBulkUpdateActions from './issuable_bulk_update_actions';
|
||||||
|
import './milestone_select';
|
||||||
|
import './issue_status_select';
|
||||||
|
import './subscription_select';
|
||||||
|
import './labels_select';
|
||||||
|
|
||||||
const HIDDEN_CLASS = 'hidden';
|
const HIDDEN_CLASS = 'hidden';
|
||||||
const DISABLED_CONTENT_CLASS = 'disabled-content';
|
const DISABLED_CONTENT_CLASS = 'disabled-content';
|
||||||
|
|
|
@ -5,7 +5,6 @@ export default class IssuableIndex {
|
||||||
constructor(pagePrefix) {
|
constructor(pagePrefix) {
|
||||||
this.initBulkUpdate(pagePrefix);
|
this.initBulkUpdate(pagePrefix);
|
||||||
IssuableIndex.resetIncomingEmailToken();
|
IssuableIndex.resetIncomingEmailToken();
|
||||||
this.initLabelFilterRemove();
|
|
||||||
}
|
}
|
||||||
initBulkUpdate(pagePrefix) {
|
initBulkUpdate(pagePrefix) {
|
||||||
const userCanBulkUpdate = $('.issues-bulk-update').length > 0;
|
const userCanBulkUpdate = $('.issues-bulk-update').length > 0;
|
||||||
|
|
|
@ -1,80 +1,44 @@
|
||||||
/* global IssuableIndex */
|
import IssuableIndex from '~/issuable_index';
|
||||||
|
|
||||||
import '~/lib/utils/url_utility';
|
describe('Issuable', () => {
|
||||||
import '~/issuable_index';
|
let Issuable;
|
||||||
|
describe('initBulkUpdate', () => {
|
||||||
(() => {
|
it('should not set bulkUpdateSidebar', () => {
|
||||||
const BASE_URL = '/user/project/issues?scope=all&state=closed';
|
Issuable = new IssuableIndex('issue_');
|
||||||
const DEFAULT_PARAMS = '&utf8=%E2%9C%93';
|
expect(Issuable.bulkUpdateSidebar).not.toBeDefined();
|
||||||
|
|
||||||
function updateForm(formValues, form) {
|
|
||||||
$.each(formValues, (id, value) => {
|
|
||||||
$(`#${id}`, form).val(value);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function resetForm(form) {
|
|
||||||
$('input[name!="utf8"]', form).each((index, input) => {
|
|
||||||
input.setAttribute('value', '');
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
describe('Issuable', () => {
|
|
||||||
preloadFixtures('static/issuable_filter.html.raw');
|
|
||||||
|
|
||||||
beforeEach(() => {
|
|
||||||
loadFixtures('static/issuable_filter.html.raw');
|
|
||||||
IssuableIndex.init();
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should be defined', () => {
|
it('should set bulkUpdateSidebar', () => {
|
||||||
expect(window.IssuableIndex).toBeDefined();
|
const element = document.createElement('div');
|
||||||
});
|
element.classList.add('issues-bulk-update');
|
||||||
|
document.body.appendChild(element);
|
||||||
|
|
||||||
describe('filtering', () => {
|
Issuable = new IssuableIndex('issue_');
|
||||||
let $filtersForm;
|
expect(Issuable.bulkUpdateSidebar).toBeDefined();
|
||||||
|
|
||||||
beforeEach(() => {
|
|
||||||
$filtersForm = $('.js-filter-form');
|
|
||||||
loadFixtures('static/issuable_filter.html.raw');
|
|
||||||
resetForm($filtersForm);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should contain only the default parameters', () => {
|
|
||||||
spyOn(gl.utils, 'visitUrl');
|
|
||||||
|
|
||||||
IssuableIndex.filterResults($filtersForm);
|
|
||||||
|
|
||||||
expect(gl.utils.visitUrl).toHaveBeenCalledWith(BASE_URL + DEFAULT_PARAMS);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should filter for the phrase "broken"', () => {
|
|
||||||
spyOn(gl.utils, 'visitUrl');
|
|
||||||
|
|
||||||
updateForm({ search: 'broken' }, $filtersForm);
|
|
||||||
IssuableIndex.filterResults($filtersForm);
|
|
||||||
const params = `${DEFAULT_PARAMS}&search=broken`;
|
|
||||||
|
|
||||||
expect(gl.utils.visitUrl).toHaveBeenCalledWith(BASE_URL + params);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should keep query parameters after modifying filter', () => {
|
|
||||||
spyOn(gl.utils, 'visitUrl');
|
|
||||||
|
|
||||||
// initial filter
|
|
||||||
updateForm({ milestone_title: 'v1.0' }, $filtersForm);
|
|
||||||
|
|
||||||
IssuableIndex.filterResults($filtersForm);
|
|
||||||
let params = `${DEFAULT_PARAMS}&milestone_title=v1.0`;
|
|
||||||
expect(gl.utils.visitUrl).toHaveBeenCalledWith(BASE_URL + params);
|
|
||||||
|
|
||||||
// update filter
|
|
||||||
updateForm({ label_name: 'Frontend' }, $filtersForm);
|
|
||||||
|
|
||||||
IssuableIndex.filterResults($filtersForm);
|
|
||||||
params = `${DEFAULT_PARAMS}&milestone_title=v1.0&label_name=Frontend`;
|
|
||||||
expect(gl.utils.visitUrl).toHaveBeenCalledWith(BASE_URL + params);
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
})();
|
|
||||||
|
describe('resetIncomingEmailToken', () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
const element = document.createElement('a');
|
||||||
|
element.classList.add('incoming-email-token-reset');
|
||||||
|
element.setAttribute('href', 'foo');
|
||||||
|
document.body.appendChild(element);
|
||||||
|
|
||||||
|
const input = document.createElement('input');
|
||||||
|
input.setAttribute('id', 'issue_email');
|
||||||
|
document.body.appendChild(input);
|
||||||
|
|
||||||
|
Issuable = new IssuableIndex('issue_');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should send request to reset email token', () => {
|
||||||
|
spyOn(jQuery, 'ajax').and.callThrough();
|
||||||
|
document.querySelector('.incoming-email-token-reset').click();
|
||||||
|
|
||||||
|
expect(jQuery.ajax).toHaveBeenCalled();
|
||||||
|
expect(jQuery.ajax.calls.argsFor(0)[0].url).toEqual('foo');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue