summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFilipa Lacerda <filipa@gitlab.com>2017-02-12 13:04:00 +0000
committerFilipa Lacerda <filipa@gitlab.com>2017-02-12 14:05:44 +0000
commitc2fe699ac801fd2440cc4b57083a60a334cffa06 (patch)
tree5f340cf6f2d120255c909e10fba2c0627949363f
parent27d7ec70b1efcaac73095e6ea3894b0eb9ba8473 (diff)
downloadgitlab-ce-c2fe699ac801fd2440cc4b57083a60a334cffa06.tar.gz
Add pagination tests for environments table
Remove fdescribe statement Fix conflict
-rw-r--r--app/assets/javascripts/environments/components/environment.js.es620
-rw-r--r--app/assets/javascripts/environments/components/environment_item.js.es627
-rw-r--r--spec/javascripts/environments/environment_spec.js.es642
3 files changed, 62 insertions, 27 deletions
diff --git a/app/assets/javascripts/environments/components/environment.js.es6 b/app/assets/javascripts/environments/components/environment.js.es6
index d5bb9f91e7f..6d9599e7645 100644
--- a/app/assets/javascripts/environments/components/environment.js.es6
+++ b/app/assets/javascripts/environments/components/environment.js.es6
@@ -128,11 +128,29 @@ module.exports = Vue.component('environment-component', {
/**
* Will change the page number and update the URL.
*
+ * If no search params are present, we'll add param for page
+ * If param for page is already present, we'll update it
+ * If there are params but none for page, we'll add it at the end.
+ *
* @param {Number} pageNumber desired page to go to.
*/
changePage(pageNumber) {
- const param = window.location.search.replace(/page=\d/g, `page=${pageNumber}`);
+ let param;
+ if (window.location.search.length === 0) {
+ param = `?page=${pageNumber}`;
+ }
+
+ if (window.location.search.indexOf('page') !== -1) {
+ param = window.location.search.replace(/page=\d/g, `page=${pageNumber}`);
+ }
+
+ if (window.location.search.length &&
+ window.location.search.indexOf('page') === -1) {
+ param = `${window.location.search}&page=${pageNumber}`;
+ }
+
gl.utils.visitUrl(param);
+ return param;
},
},
diff --git a/app/assets/javascripts/environments/components/environment_item.js.es6 b/app/assets/javascripts/environments/components/environment_item.js.es6
index 871a09977a4..fc45c3c5f53 100644
--- a/app/assets/javascripts/environments/components/environment_item.js.es6
+++ b/app/assets/javascripts/environments/components/environment_item.js.es6
@@ -362,32 +362,6 @@ module.exports = Vue.component('environment-item', {
*
* @return {String}
*/
- buildPath(){
- return this.model.latest &&
- this.model.latest.last_deployment &&
- this.model.latest.last_deployment.deployable &&
- this.model.latest.last_deployment.deployable.build_path ||
- '';
- },
-
- /**
- * Verifies the presence of all the keys needed to render the external_url.
- *
- * @return {String}
- */
- externalURL() {
- if (this.model.latest && this.model.latest.external_url) {
- return this.model.latest.external_url;
- }
-
- return '';
- },
-
- /**
- * Verifies the presence of all the keys needed to render the buil_path.
- *
- * @return {String}
- */
buildPath() {
if (this.model.latest &&
this.model.latest.last_deployment &&
@@ -398,6 +372,7 @@ module.exports = Vue.component('environment-item', {
return '';
},
+
/**
* Verifies the presence of all the keys needed to render the external_url.
*
diff --git a/spec/javascripts/environments/environment_spec.js.es6 b/spec/javascripts/environments/environment_spec.js.es6
index 657d8d2ab02..edd0cad32d0 100644
--- a/spec/javascripts/environments/environment_spec.js.es6
+++ b/spec/javascripts/environments/environment_spec.js.es6
@@ -99,6 +99,48 @@ describe('Environment', () => {
done();
}, 0);
});
+
+ it('should update url when no search params are present', (done) => {
+ spyOn(gl.utils, 'visitUrl');
+ setTimeout(() => {
+ component.$el.querySelector('.gl-pagination li:nth-child(5) a').click();
+ expect(gl.utils.visitUrl).toHaveBeenCalledWith('?page=2');
+ done();
+ }, 0);
+ });
+
+ it('should update url when page is already present', (done) => {
+ spyOn(gl.utils, 'visitUrl');
+ window.history.pushState({}, null, '?page=1');
+
+ setTimeout(() => {
+ component.$el.querySelector('.gl-pagination li:nth-child(5) a').click();
+ expect(gl.utils.visitUrl).toHaveBeenCalledWith('?page=2');
+ done();
+ }, 0);
+ });
+
+ it('should update url when page and scope are already present', (done) => {
+ spyOn(gl.utils, 'visitUrl');
+ window.history.pushState({}, null, '?scope=all&page=1');
+
+ setTimeout(() => {
+ component.$el.querySelector('.gl-pagination li:nth-child(5) a').click();
+ expect(gl.utils.visitUrl).toHaveBeenCalledWith('?scope=all&page=2');
+ done();
+ }, 0);
+ });
+
+ it('should update url when page and scope are already present and page is first param', (done) => {
+ spyOn(gl.utils, 'visitUrl');
+ window.history.pushState({}, null, '?page=1&scope=all');
+
+ setTimeout(() => {
+ component.$el.querySelector('.gl-pagination li:nth-child(5) a').click();
+ expect(gl.utils.visitUrl).toHaveBeenCalledWith('?page=2&scope=all');
+ done();
+ }, 0);
+ });
});
});
});