Saving data from form

Change-Id: If78c7b7a8396a574edbc2cab3fd4150010f103b6
diff --git a/src/app/datasources/helpers/store.helpers.spec.ts b/src/app/datasources/helpers/store.helpers.spec.ts
index f0168b6..1793a7c 100644
--- a/src/app/datasources/helpers/store.helpers.spec.ts
+++ b/src/app/datasources/helpers/store.helpers.spec.ts
@@ -6,6 +6,7 @@
 import {BehaviorSubject} from 'rxjs';
 import {IWSEvent} from '../websocket/global';
 import {ConfigHelpers} from '../../core/services/helpers/config.helpers';
+import {AuthService} from '../rest/auth.rest';
 
 let service: IStoreHelpersService;
 let subject: BehaviorSubject<any>;
@@ -16,10 +17,11 @@
 
   beforeEach(() => {
     angular
-      .module('test', ['ngResource', 'toastr'])
+      .module('test', ['ngResource', 'toastr', 'ngCookies'])
       .service('ConfigHelpers', ConfigHelpers) // NOTE evaluate mock
       .service('ModelRest', ModelRest) // NOTE evaluate mock
-      .service('StoreHelpers', StoreHelpers);
+      .service('StoreHelpers', StoreHelpers)
+      .service('AuthService', AuthService);
 
     angular.mock.module('test');
   });
diff --git a/src/app/datasources/rest/model.rest.ts b/src/app/datasources/rest/model.rest.ts
index 51e41d3..8bd2c1f 100644
--- a/src/app/datasources/rest/model.rest.ts
+++ b/src/app/datasources/rest/model.rest.ts
@@ -6,7 +6,6 @@
 
 export class ModelRest implements IXosResourceService {
   static $inject = ['$resource'];
-  private resource: angular.resource.IResourceClass<any>;
 
   /** @ngInject */
   constructor(
@@ -16,6 +15,18 @@
   }
 
   public getResource(url: string): ng.resource.IResourceClass<ng.resource.IResource<any>> {
-    return this.resource = this.$resource(`${AppConfig.apiEndpoint}${url}/:id/`, {id: '@id'});
+    const resource: angular.resource.IResourceClass<any> = this.$resource(`${AppConfig.apiEndpoint}${url}/:id/`, {id: '@id'}, {
+      update: { method: 'PUT' }
+    });
+
+    resource.prototype.$save = function() {
+      if (this.id) {
+        return this.$update();
+      } else {
+        return resource.save(this).$promise;
+      }
+    };
+
+    return resource;
   }
 }
diff --git a/src/app/datasources/stores/model.store.spec.ts b/src/app/datasources/stores/model.store.spec.ts
index dd19c27..5bdc498 100644
--- a/src/app/datasources/stores/model.store.spec.ts
+++ b/src/app/datasources/stores/model.store.spec.ts
@@ -8,6 +8,7 @@
 import {ModelRest} from '../rest/model.rest';
 import {AppConfig} from '../../config/app.config';
 import {ConfigHelpers} from '../../core/services/helpers/config.helpers';
+import {AuthService} from '../rest/auth.rest';
 
 let service: IModelStoreService;
 let httpBackend: ng.IHttpBackendService;
@@ -37,12 +38,13 @@
 
   beforeEach(() => {
     angular
-      .module('ModelStore', ['ngResource', 'toastr'])
+      .module('ModelStore', ['ngResource', 'toastr', 'ngCookies'])
       .service('WebSocket', MockWs)
       .service('StoreHelpers', StoreHelpers) // TODO mock
       .service('ModelRest', ModelRest) // TODO mock
       .service('ModelStore', ModelStore)
-      .service('ConfigHelpers', ConfigHelpers); // TODO mock
+      .service('ConfigHelpers', ConfigHelpers) // TODO mock
+      .service('AuthService', AuthService);
 
     angular.mock.module('ModelStore');
   });