summaryrefslogtreecommitdiff
path: root/spec/javascripts/issuable_spec.js
diff options
context:
space:
mode:
Diffstat (limited to 'spec/javascripts/issuable_spec.js')
-rw-r--r--spec/javascripts/issuable_spec.js80
1 files changed, 80 insertions, 0 deletions
diff --git a/spec/javascripts/issuable_spec.js b/spec/javascripts/issuable_spec.js
new file mode 100644
index 00000000000..26d87cc5931
--- /dev/null
+++ b/spec/javascripts/issuable_spec.js
@@ -0,0 +1,80 @@
+/* global Issuable */
+
+require('~/lib/utils/url_utility');
+require('~/issuable');
+
+(() => {
+ const BASE_URL = '/user/project/issues?scope=all&state=closed';
+ const DEFAULT_PARAMS = '&utf8=%E2%9C%93';
+
+ 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');
+ Issuable.init();
+ });
+
+ it('should be defined', () => {
+ expect(window.Issuable).toBeDefined();
+ });
+
+ describe('filtering', () => {
+ let $filtersForm;
+
+ beforeEach(() => {
+ $filtersForm = $('.js-filter-form');
+ loadFixtures('static/issuable_filter.html.raw');
+ resetForm($filtersForm);
+ });
+
+ it('should contain only the default parameters', () => {
+ spyOn(gl.utils, 'visitUrl');
+
+ Issuable.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);
+ Issuable.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);
+
+ Issuable.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);
+
+ Issuable.filterResults($filtersForm);
+ params = `${DEFAULT_PARAMS}&milestone_title=v1.0&label_name=Frontend`;
+ expect(gl.utils.visitUrl).toHaveBeenCalledWith(BASE_URL + params);
+ });
+ });
+ });
+})();