Added linting rules to ngXosLib and cleaned code
diff --git a/views/ngXosLib/xosHelpers/spec/ui/form.test.js b/views/ngXosLib/xosHelpers/spec/ui/form.test.js
index c1387ff..dc9c957 100644
--- a/views/ngXosLib/xosHelpers/spec/ui/form.test.js
+++ b/views/ngXosLib/xosHelpers/spec/ui/form.test.js
@@ -259,15 +259,25 @@
       });
       describe('when correctly configured for feedback', () => {
 
-        let cb = jasmine.createSpy('callback');
+        let fb = jasmine.createSpy('feedback').and.callFake(function(statusFlag) {
+          if(statusFlag){
+            scope.config.feedback.show = true;
+            scope.config.feedback.message = 'Form Submitted';
+            scope.config.feedback.type = 'success';
+          }
+          else {
+            scope.config.feedback.show = true;
+            scope.config.feedback.message = 'Error';
+            scope.config.feedback.type = 'danger';
 
-        beforeEach(inject(($rootScope) => {
+          }
+        });
 
-          scope = $rootScope.$new();
+        beforeEach(()=> {
+          scope = rootScope.$new();
+          scope.config =
+          {
 
-          scope.config = {
-            exclude: ['excludedField'],
-            formName: 'testForm',
             feedback: {
               show: false,
               message: 'Form submitted successfully !!!',
@@ -277,259 +287,33 @@
               {
                 label: 'Save',
                 icon: 'ok', // refers to bootstraps glyphicon
-                cb: cb,
+                cb: () => {},
                 class: 'success'
               }
-            ],
-            fields: {
-              first_name: {
-                label: 'Custom Label'
-              }
-            }
+            ]
           };
-
-          scope.model = {
-            id: 1,
-            first_name: 'Jhon',
-            last_name: 'Snow',
-            age: 25,
-            email: 'test@onlab.us',
-            birthDate: '2016-04-18T23:44:16.883181Z',
-            enabled: true,
-            role: 'user', //select
-            a_permissions: [
-            ],
-            object_field: {
-              string: 'bar',
-              number: 1,
-              email: 'teo@onlab.us'
-            }
-          };
-
+          scope.model={};
           compileElement();
-        }));
-
-        it('should add excluded properties to the list', () => {
-          let expected = ['id', 'validators', 'created', 'updated', 'deleted', 'backend_status', 'excludedField'];
-          expect(isolatedScope.excludedField).toEqual(expected);
         });
 
-        it('should render 10 input field', () => {
-          // boolean are in the form model, but are not input
-          expect(Object.keys(isolatedScope.formField).length).toEqual(9);
-          var field = element[0].getElementsByTagName('input');
-          expect(field.length).toEqual(10);
+        it('should not show feedback when loaded', () => {
+          expect($(element).find('xos-alert > div')).toHaveClass('alert alert-success ng-hide');
         });
 
-        it('should render 1 boolean field', () => {
-          expect($(element).find('.boolean-field > a').length).toEqual(2)
+        it('should show a success feedback', () => {
+          fb(true);
+          scope.$digest();
+          expect(isolatedScope.config.feedback.type).toEqual('success');
+          expect(fb).toHaveBeenCalledWith(true);
+          expect($(element).find('xos-alert > div')).toHaveClass('alert alert-success');
         });
 
-        it('when clicking on action should invoke callback', () => {
-          var link = $(element).find('[role="button"]');
-          //console.log(link);
-          link.click();
-          // TODO : Check correct parameters
-          expect(cb).toHaveBeenCalled();
-
-        });
-
-        it('should set a custom label', () => {
-          let nameField = element[0].getElementsByClassName('form-group')[0];
-          let label = angular.element(nameField.getElementsByTagName('label')[0]).text()
-          expect(label).toEqual('Custom Label:');
-        });
-
-        it('should use the correct input type', () => {
-          expect($(element).find('[name="age"]')).toHaveAttr('type', 'number');
-          expect($(element).find('[name="birthDate"]')).toHaveAttr('type', 'date');
-          expect($(element).find('[name="email"]')).toHaveAttr('type', 'email');
-        });
-
-
-
-        describe('A spy,configured with an alternate config implementation for Feedback', function() {
-          var feedbackParams, statusFlag, fetchedBar;
-
-          let fb = jasmine.createSpy('feedback').and.callFake(function(statusFlag) {
-            //console.log(statusFlag , '------------------------------------------------------');
-            if(statusFlag){
-              scope.config.feedback.show = true;
-              scope.config.feedback.message = 'Form Submitted';
-              scope.config.feedback.type = 'success';
-            }
-            else {
-              scope.config.feedback.show = true;
-              scope.config.feedback.message = 'Error';
-              scope.config.feedback.type = 'danger';
-
-            }
-            console.log(scope.config.feedback, '################################');
-
-
-
-          });
-
-          beforeEach(()=> {
-            scope = rootScope.$new();
-            scope.config =
-            {
-
-              feedback: {
-                show: false,
-                message: 'Form submitted successfully !!!',
-                type: 'success'
-              },
-              actions: [
-                {
-                  label: 'Save',
-                  icon: 'ok', // refers to bootstraps glyphicon
-                  cb: cb,
-                  class: 'success'
-                }
-              ]
-            };
-            scope.model={};
-            compileElement();
-          })
-
-          it('tracks that the spy was called', function() {
-            expect($(element).find('xos-alert > div')).toHaveClass('alert alert-success ng-hide');
-            scope.$digest();
-            fb(true);
-            scope.$digest();
-            expect(isolatedScope.config.feedback.type).toEqual('success');
-            expect(fb).toHaveBeenCalledWith(true);
-            expect($(element).find('xos-alert > div')).toHaveClass('alert alert-success');
-            fb(false);
-            scope.$digest();
-            expect(isolatedScope.config.feedback.type).toEqual('danger');
-            expect(fb).toHaveBeenCalledWith(false);
-            expect($(element).find('xos-alert > div')).toHaveClass('alert alert-danger');
-          });
-        });
-        xdescribe('the boolean field test', () => {
-
-          let setFalse, setTrue;
-
-          beforeEach(() => {
-            setFalse= $(element).find('.boolean-field > button:first-child');
-            setTrue = $(element).find('.boolean-field > button:last-child');
-          });
-
-          it('should change value to false', () => {
-            expect(isolatedScope.ngModel.enabled).toEqual(true);
-            setFalse.click();
-            expect(isolatedScope.ngModel.enabled).toEqual(false);
-          });
-
-          it('should change value to true', () => {
-            isolatedScope.ngModel.enabled = false;
-            scope.$apply();
-            expect(isolatedScope.ngModel.enabled).toEqual(false);
-            setTrue.click()
-            expect(isolatedScope.ngModel.enabled).toEqual(true);
-          });
-        });
-
-        // NOTE not sure why this tests are failing
-        xdescribe('the custom validation options', () => {
-          beforeEach(() => {
-            scope.config.fields.first_name.validators = {
-              minlength: 10,
-              maxlength: 15,
-              required: true
-            };
-
-            scope.config.fields.age = {
-              validators: {
-                min: 10,
-                max: 20
-              }
-            };
-
-            scope.$digest();
-          });
-
-          it('should validate required', () => {
-            scope.model.first_name = null;
-            scope.$digest();
-
-            expect(isolatedScope.testForm.first_name.$valid).toBeFalsy();
-            expect(isolatedScope.testForm.first_name.$error.required).toBeTruthy();
-          });
-
-          it('should validate minlength', () => {
-            scope.model.first_name = 'short';
-            scope.$digest();
-
-            expect(isolatedScope.testForm.first_name.$valid).toBeFalsy();
-            expect(isolatedScope.testForm.first_name.$error.minlength).toBeTruthy();
-          });
-
-          it('should validate maxlength', () => {
-            scope.model.first_name = 'this is way too long!';
-            scope.$digest();
-
-            expect(isolatedScope.testForm.first_name.$valid).toBeFalsy();
-            expect(isolatedScope.testForm.first_name.$error.maxlength).toBeTruthy();
-          });
-
-          it('should validate min', () => {
-            // not validating min and max for now
-            scope.model.age = 8;
-            scope.$digest();
-
-            expect(isolatedScope.testForm.age.$valid).toBeFalsy();
-            expect(isolatedScope.testForm.age.$error.min).toBeTruthy();
-          });
-        });
-
-        describe('when a deep model is passed', () => {
-
-          beforeEach(inject(($rootScope) => {
-
-            scope = $rootScope.$new();
-
-            scope.config = {
-              exclude: ['excludedField'],
-              formName: 'testForm',
-              actions: [
-                {
-                  label: 'Save',
-                  icon: 'ok', // refers to bootstraps glyphicon
-                  cb: cb,
-                  class: 'success'
-                }
-              ],
-              fields: {
-                object_field: {
-                  field_one: {
-                    label: 'Custom Label'
-                  }
-                }
-              }
-            };
-
-            scope.model = {
-              object_field: {
-                field_one: 'bar',
-                number: 1,
-                email: 'teo@onlab.us'
-              }
-            };
-
-            compileElement();
-          }));
-
-          it('should print nested field', () => {
-            expect($(element).find('input').length).toBe(3);
-          });
-
-          xit('should configure nested fields', () => {
-            let custom_label = $(element).find('input[name=field_one]').parent().find('label');
-            expect(custom_label.text()).toBe('Custom Label');
-          });
+        it('should show an error feedback', function() {
+          fb(false);
+          scope.$digest();
+          expect(isolatedScope.config.feedback.type).toEqual('danger');
+          expect(fb).toHaveBeenCalledWith(false);
+          expect($(element).find('xos-alert > div')).toHaveClass('alert alert-danger');
         });
       });