summaryrefslogtreecommitdiff
path: root/spec/javascripts/issuable_spec.js
diff options
context:
space:
mode:
authorKamil Trzcinski <ayufan@ayufan.eu>2017-03-06 17:12:49 +0100
committerKamil Trzcinski <ayufan@ayufan.eu>2017-03-06 17:12:49 +0100
commit0e5d065848aa3149efcb5248293f265699b5b57c (patch)
tree8c9c725befc4847bf963f636a7210ac1fce3778a /spec/javascripts/issuable_spec.js
parent46d99dedfbe10dc36c79c6f09d886ad2fc2192b5 (diff)
parent348dff0a826c45f00f992e761423a22d2ac32bc3 (diff)
downloadgitlab-ce-23993-drop-ci_projects.tar.gz
Merge remote-tracking branch 'origin/master' into 23993-drop-ci_projects23993-drop-ci_projects
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);
+ });
+ });
+ });
+})();