(function () {
  'use strict';

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

      let scope, element, isolatedScope;
      let cb = jasmine.createSpy('callback')

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

      beforeEach(inject(function ($compile, $rootScope) {
        scope = $rootScope.$new();

        scope.pageSize = 2;

        scope.totalElements = 5;

        scope.change = cb;

        element = angular.element('<xos-pagination page-size="pageSize" total-elements="totalElements" change="change"></xos-table>');
        $compile(element)(scope);
        scope.$digest();
        isolatedScope = element.isolateScope().vm;
      }));

      it('should contain 3 pages', function() {
        const li = element[0].getElementsByTagName('li');
        expect(li.length).toEqual(5);
      });

      it('should call the change function', () => {
        const li = element[0].getElementsByTagName('li')[3];
        let link = li.getElementsByTagName('a')[0];
        link.click();
        expect(cb).toHaveBeenCalledWith(2);
      });

      describe('when elements number is less than page size', () => {
        beforeEach(() => {
          isolatedScope.pageSize = 10;
          isolatedScope.totalElements = 9;
          scope.$digest();
        });

        it('should not be rendered', () => {
          const pagination = element[0].getElementsByClassName('pagination');
          expect(pagination.length).toEqual(0);
        });
      });
    });
  });
})();