/* MMigreringsbeslut: denna test behöver Chrome headless eller PhantomJs + es6-shim för att kunna köras */ describe("fbFormInput", function () { var element: JQuery; var $scope: fb.IFbFormInputScope; var attrs: any; var link: any; var DOM = ''; var jInput; beforeEach(angular.mock.module('fasit', 'fbMocks')); afterEach(function () { $scope.$destroy(); }); beforeEach(inject(function ($compile, $rootScope) { $scope = $rootScope; $scope.model = new fb.ChangeTrack('Adresstexten'); $scope.model.value = 'Adresstextenss' DOM = ''; element = angular.element(DOM); link = $compile(element)($scope); $scope.$digest(); })); describe('fb-form-input elementet', function () { var div, input; beforeEach(function () { div = angular.element(angular.element(element).find('div')); }); it('borde finnas', function () { expect(element).not.toBe(null); }); it('borde ha en div', function () { div = angular.element(element).find('div'); expect(div).not.toBe(null); }); describe("div", function () { div = angular.element(element).find('div'); it('borde ha klassen "form-group"', function () { var hasClass = div.hasClass('form-group'); expect(hasClass).toBe(true); }); it('borde ha en label', function () { var label = div.find('label'); expect(label).not.toBe(null); }); it('borde ha en input', function () { var input = div.find('input'); expect(input).not.toBe(null); }); }); describe("input", function () { var input; beforeEach(function () { input = angular.element(div.find('input')); }); it('borde ha klassen fb-form-control', function () { var hasClass = input.hasClass('fb-form-control'); expect(hasClass).toBe(true); }); }); }); it('borde ha en model', function () { $scope.$digest(); expect($scope.model).not.toBe(null); describe("scope", function () { }); }); describe('label', function () { var DOM = '', jLabel; inject(function ($compile, $rootScope) { element = angular.element(DOM); link = $compile(element)($scope); }); //it('borde ha en label', function () { it('label borde sättas till modelnamnet om ingen label attribut finns', function () { jLabel = angular.element(angular.element(element).find('label')); expect(jLabel.attr('alt')).toBe('address'); }); it('label borde sättas till label attributet om label attributet finns', function () { DOM = ''; inject(function ($compile, $rootScope) { $scope = $rootScope; $scope.model = new fb.ChangeTrack('Adresstexten'); $scope.model.value = 'Adresstextenss' element = angular.element(DOM); link = $compile(element)($scope); }); $scope.$digest(); jLabel = angular.element(angular.element(element).find('label')); expect(jLabel.attr('alt')).toBe('another'); }); //}); }); //it('borde ha en input', function () { //}); describe('input', function () { DOM = ''; describe('name', function () { var requiredAttr; it('borde ha en "name" attribut som motsvarar det som angivits', function () { DOM = ''; //(function () { inject(function ($compile, $rootScope) { $scope = $rootScope; element = angular.element(DOM); $scope.model = new fb.ChangeTrack('Adresstexten'); $scope.model.value = 'Adresstextenss' link = $compile(element)($scope); }); $scope.$digest(); //} ()); jInput = jQuery(element.find('input')); expect(jInput.attr('name')).toBe('place'); }); }); describe('type', function () { it('borde ha "text" som default type ', function () { //(function () { inject(function ($compile, $rootScope) { $scope = $rootScope; element = angular.element(DOM); $scope.model = new fb.ChangeTrack('Adresstexten'); $scope.model.value = 'Adresstextenss' link = $compile(element)($scope); }); $scope.$digest(); //} ()); jInput = jQuery(element.find('input')); expect(jInput.attr('type')).toBe('text'); }); it('borde ha annan type om sådant anges', function () { //(function () { DOM = ''; inject(function ($compile, $rootScope) { $scope = $rootScope; element = angular.element(DOM); $scope.model = new fb.ChangeTrack('Adresstexten'); $scope.model.value = 'Adresstextenss' link = $compile(element)($scope); }); $scope.$digest(); jInput = jQuery(element.find('input')); expect(jInput.attr('type')).not.toBe('text'); expect(jInput.attr('type')).toBe('number'); }); }); describe('required', function () { var requiredAttr; it('borde inte ha en "required" attribut om inte detta angivits', function () { DOM = ''; inject(function ($compile, $rootScope) { $scope = $rootScope; element = angular.element(DOM); var innerScope = ($scope).$$childHead; innerScope.model = new fb.ChangeTrack('Adresstexten'); innerScope.model.required = false; innerScope.model.value = 'Adresstextenss'; link = $compile(element)($scope); }); $scope.$digest(); var jIcon = jQuery(element.find('.fa-asterisk')); expect(jIcon.hasClass('fa-asterisk')).toBe(false); }); it('borde ha en "required" attribit om detta angivits', function () { DOM = ''; inject(function ($compile, $rootScope) { $scope = $rootScope; element = angular.element(DOM); var innerScope = ($scope).$$childHead; innerScope.model = new fb.ChangeTrack(''); innerScope.model.required = true; innerScope.model.value = ''; innerScope.model.required = true; link = $compile(element)($scope); }); $scope.$digest(); var jIcon = jQuery(element.find('i')); expect(jIcon.hasClass('fa-asterisk')).toBe(true); }); }); describe('no-label', function () { var requiredAttr; it('borde ta bort en label om no-label har angivits', function () { //(function () { var jLabel; DOM = ''; inject(function ($compile, $rootScope) { $scope = $rootScope; element = angular.element(DOM); $scope.model = new fb.ChangeTrack('Adresstexten'); $scope.model.value = 'Adresstextenss' link = $compile(element)($scope); }); $scope.$digest(); jLabel = jQuery(element.find('label')); expect(jLabel.length).toBe(0); }); }); }); describe('med ogiltiga attribut', function () { var tmpConsoleError; beforeEach(function () { tmpConsoleError = console.error; console.error = function (str: string) { }; }); afterEach(function () { console.error = tmpConsoleError; }); //it('borde logga ifall ingen modell givits', inject(function ($compile, $rootScope, logService: fb.ILogService) { // $scope = $rootScope; // spyOn(logService, 'addLog'); // spyOn(logService, 'sendLog'); // DOM = ''; // element = angular.element(DOM); // link = $compile(element)($scope); // $scope.$digest(); // expect(logService.log).toHaveBeenCalled(); // expect(logService.sendLog).toHaveBeenCalled(); //})); }); });