summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/assets/javascripts/environments/stores/environmnets_store.js.es614
-rw-r--r--spec/javascripts/environments/environments_store_spec.js.es651
-rw-r--r--spec/javascripts/environments/mock_data.js.es681
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"
}
];