/**
 * © OpenCORD
 *
 * Created by teone on 4/15/16.
 */

(function () {
  'use strict';

  describe('The xos.helper module', function(){
    describe('The xos-validation component', () => {

      let element, scope, isolatedScope;

      beforeEach(module('xos.helpers'));

      beforeEach(inject(($compile, $rootScope) => {

        scope = $rootScope.$new();

        scope.errors = {};

        element = angular.element(`<xos-validation errors="errors"></xos-validation>`);
        $compile(element)(scope);
        scope.$digest();
        isolatedScope = element.isolateScope().vm;
      }));

      it('should not show an alert', () => {
        expect($(element).find('xos-alert > .alert')[0]).toHaveClass('ng-hide');
      });

      let availableErrors = [
        {
          type: 'email',
          message: 'This is not a valid email'
        },
        {
          type: 'minlength',
          message: 'Too short'
        },
        {
          type: 'maxlength',
          message: 'Too long'
        },
        {
          type: 'custom',
          message: 'Field invalid'
        },
      ];

      // use a loop to generate similar test
      availableErrors.forEach((e, i) => {
        it(`should show an alert for ${e.type} errors`, () => {
          scope.errors[e.type] = true;
          scope.$digest();
          let alert = $(element).find('xos-alert > .alert')[i];
          expect(alert).not.toHaveClass('ng-hide');
          expect(alert).toHaveText(e.message);
        });
      });
    });
  });
})();