diff options
3 files changed, 56 insertions, 90 deletions
diff --git a/app/assets/javascripts/environments/stores/environmnets_store.js.es6 b/app/assets/javascripts/environments/stores/environmnets_store.js.es6 index c0e97413636..11c481c22e3 100644 --- a/app/assets/javascripts/environments/stores/environmnets_store.js.es6 +++ b/app/assets/javascripts/environments/stores/environmnets_store.js.es6 @@ -54,7 +54,7 @@ //humanizes actions names if there are any actions if (environment.last_deployment.manual_actions) { - environment.last_deployment.manual_actions = environment.last_deployment.manual_actions.map((action) => Object.assign({}, action, {name: gl.text.humanize(action.name)})); + environment.last_deployment.manual_actions = environment.last_deployment.manual_actions.map((action) => action.name = gl.text.humanize(action.name)); } //transforms created date for deployment in a human readable format @@ -64,21 +64,19 @@ } if (environment.environment_type !== null) { - const occurs = acc.find((element, index, array) => { + const occurs = acc.filter((element, index, array) => { return element.children && element.name === environment.environment_type; }); environment["vue-isChildren"] = true; - if (occurs !== undefined) { - acc[acc.indexOf(occurs)].children.push(environment); - acc[acc.indexOf(occurs)].children.sort(this.sortByName) + if (occurs.length) { + acc[acc.indexOf(occurs[0])].children.push(environment); + acc[acc.indexOf(occurs[0])].children.sort(this.sortByName) } else { acc.push({ name: environment.environment_type, - children: [ - Object.assign(environment) - ] + children: [environment] }); } } else { diff --git a/spec/javascripts/environments/environments_store_spec.js.es6 b/spec/javascripts/environments/environments_store_spec.js.es6 index 482b562fdce..db4ce41701c 100644 --- a/spec/javascripts/environments/environments_store_spec.js.es6 +++ b/spec/javascripts/environments/environments_store_spec.js.es6 @@ -1,21 +1,58 @@ //= require vue -//= require vue-resource -//= require lib/utils/url_utility -//= require environments/services/environments_service -//= require environments/stores/environments_store +//= require environments/stores/environmnets_store //= require ./mock_data -// (() => { + beforeEach(() => { - gl.environmentsService = new EnvironmentsService('test/environments'); gl.environmentsList.EnvironmentsStore.create(); }); describe('Store', () => { - it('starts with a blank state', () => { + it('should start with a blank state', () => { expect(gl.environmentsList.EnvironmentsStore.state.environments.length).toBe(0); + expect(gl.environmentsList.EnvironmentsStore.state.stoppedCounter).toBe(0); + expect(gl.environmentsList.EnvironmentsStore.state.availableCounter).toBe(0) }); + describe('store environments', () => { + beforeEach(() => { + gl.environmentsList.EnvironmentsStore.storeEnvironments(environmentsList); + }); + + it('should count stopped environments and save the count in the state', () => { + + + expect(gl.environmentsList.EnvironmentsStore.state.stoppedCounter).toBe(1); + }); + + it('should count available environments and save the count in the state', () => { + + expect(gl.environmentsList.EnvironmentsStore.state.availableCounter).toBe(2); + }); + + it('should store environments with same environment_type as sibilings', () => { + + expect(gl.environmentsList.EnvironmentsStore.state.environments.length).toBe(2); + + const parentFolder = gl.environmentsList.EnvironmentsStore.state.environments.filter((env) => { + return env.children && env.children.length > 0; + }); + + expect(parentFolder[0].children.length).toBe(2); + expect(parentFolder[0].children[0].environment_type).toBe('review'); + expect(parentFolder[0].children[1].environment_type).toBe('review'); + expect(parentFolder[0].children[0].name).toBe('review/test-environment') + expect(parentFolder[0].children[1].name).toBe('review/test-environment-1'); + }); + + it('should sort the environments alphabetically', () => { + const { environments } = gl.environmentsList.EnvironmentsStore.state; + + expect(environments[0].name).toBe('production'); + expect(environments[1].children[0].name).toBe('review/test-environment'); + expect(environments[1].children[1].name).toBe('review/test-environment-1'); + }); + }); }); })(); diff --git a/spec/javascripts/environments/mock_data.js.es6 b/spec/javascripts/environments/mock_data.js.es6 index 87420a32450..35d94e3ab44 100644 --- a/spec/javascripts/environments/mock_data.js.es6 +++ b/spec/javascripts/environments/mock_data.js.es6 @@ -3,93 +3,24 @@ const environmentsList = [ "id": 15, "project_id": 11, "name": "production", - "created_at": "2016-10-18T10:47:46.840Z", - "updated_at": "2016-10-19T15:49:24.378Z", "external_url": "https://test.com", "environment_type": null, - "state": "available", - "last_deployment": { - "id": 57, - "iid": 5, - "project_id": 11, - "environment_id": 15, - "ref": "master", - "tag": false, - "sha": "edf8704ba6cea79be4634b82927e9ff534068428", - "user_id": 1, - "deployable_id": 1170, - "deployable_type": "CommitStatus", - "on_stop": null, - "short_sha": "edf8704b", - "commit_title": "Update .gitlab-ci.yml", - "commit": { - "id": "edf8704ba6cea79be4634b82927e9ff534068428", - "message": "Update .gitlab-ci.yml", - "parent_ids": ["f215999006bd3d5c89b9b1e8c0873c9aca0f913a"], - "authored_date": "2016-10-19T16:49:09.000+01:00", - "author_name": "Administrator", - "author_email": "admin@example.com", - "committed_date": "2016-10-19T16:49:09.000+01:00", - "committer_name": "Administrator", - "committer_email": "admin@example.com" - }, - "user": { - "id": 1, - "name": "Administrator", - "username": "root", - "avatar_url": "http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80\u0026d=identicon" - }, - "deployable": { - "id": 1170, - "name": "deploy", - "tag": false, - "ref": "master" - } - }, - "project": { - "id": 11, - "name": "review-apps", - "path": "review-apps", - "namespace_id": 1, - "namespace": { - "id": 1, - "name": "root" - } - } - },{ + "state": "available" + }, + { "id": 18, "project_id": 11, "name": "review/test-environment", - "created_at": "2016-10-19T14:59:59.303Z", - "updated_at": "2016-10-19T14:59:59.303Z", "external_url": "http://test1.com", "environment_type": "review", - "state": "available", - "project": { - "id": 11, - "name": "review-apps", - "namespace": { - "id": 1, - "name": "root" - } - } + "state": "available" }, { - "id": 18, + "id": 19, "project_id": 11, "name": "review/test-environment-1", - "created_at": "2016-10-19T14:59:59.303Z", - "updated_at": "2016-10-19T14:59:59.303Z", "external_url": "http://test-1.com", "environment_type": "review", - "state": "stopped", - "project": { - "id": 11, - "name": "review-apps", - "namespace": { - "id": 1, - "name": "root" - } - } + "state": "stopped" } ]; |