/* MMigreringsbeslut: denna test behöver Chrome headless eller PhantomJs + es6-shim för att kunna köras */ describe("fbFormTextarea", function () { var element: ng.IAugmentedJQuery; var $scope: any; var attrs: any; var link: any; var DOM: string; var jTextarea; beforeEach(angular.mock.module('fasit', 'fbMocks')); afterEach(function () { $scope.$destroy(); }); beforeEach(inject(function ($compile, $rootScope) { $scope = $rootScope; $scope.textForTextArea = { dirty: null, originalValue: 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.', valid: null, value: 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.' }; DOM = ''; element = angular.element(DOM); link = $compile(element)($scope); $scope.$digest(); })); describe('fb-form-textarea elementet', function () { var div, textarea; 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 () { it('borde ha klassen "form-group"', function () { div = angular.element(angular.element(element).find('div')); var hasClass = div.hasClass('form-group'); expect(hasClass).toBe(true); }); it('borde ha en label', function () { div = angular.element(angular.element(element).find('div')); var label = div.find('label'); expect(label).not.toBe(null); }); it('borde ha en textarea', function () { div = angular.element(angular.element(element).find('div')); var textarea = div.find('textarea'); expect(textarea).not.toBe(null); }); }); describe("textarea", function () { var textarea; beforeEach(function () { textarea = angular.element(div.find('textarea')); }); it('borde ha klassen fb-form-control', function () { var hasClass = textarea.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 jLabel; it('label borde sättas till modelnamnet om ingen label attribut finns', function () { DOM = ''; inject(function ($compile, $rootScope) { $scope = $rootScope; $scope.model = { dirty: null, originalValue: 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.', valid: null, value: 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.' }; element = angular.element(DOM); link = $compile(element)($scope); }); $scope.$digest(); jLabel = angular.element(angular.element(element).find('label')); expect(jLabel.attr('alt')).toBe('textForTextArea'.toLocaleLowerCase()); }); it('label borde sättas till label attributet om label attributet finns', function () { DOM = ''; inject(function ($compile, $rootScope) { $scope = $rootScope; $scope.model = { dirty: null, originalValue: 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.', valid: null, value: 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.' }; element = angular.element(DOM); link = $compile(element)($scope); }); $scope.$digest(); jLabel = angular.element(angular.element(element).find('label')); expect(jLabel.attr('alt')).toBe('another'); }); }); describe('textarea', function () { DOM = ''; describe('name', function () { var requiredAttr; it('borde ha en "name" attribut som motsvarar det som angivits', function () { DOM = ''; inject(function ($compile, $rootScope) { $scope = $rootScope; element = angular.element(DOM); $scope.model = { dirty: null, originalValue: 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.', valid: null, value: 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.' }; link = $compile(element)($scope); }); $scope.$digest(); jTextarea = jQuery(element.find('textarea')); expect(jTextarea.attr('name')).toBe('place'); }); }); 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); $scope.model = { dirty: null, originalValue: 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.', valid: null, value: 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.' }; link = $compile(element)($scope); }); $scope.$digest(); jTextarea = jQuery(element.find('textarea')); expect(jTextarea.attr('required')).toBeUndefined(); }); it('borde ha en "required" attribut om detta angivits', function () { DOM = ''; inject(function ($compile, $rootScope) { $scope = $rootScope; element = angular.element(DOM); $scope.model = { dirty: null, originalValue: 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.', valid: null, value: 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.' }; link = $compile(element)($scope); }); $scope.$digest(); jTextarea = jQuery(element.find('textarea')); expect(jTextarea.attr('required')).toBeDefined(); }); }); describe('placeholder', function () { it('borde ha rätt placeholder', function () { DOM = ''; inject(function ($compile, $rootScope) { $scope = $rootScope; element = angular.element(DOM); $scope.model = { dirty: null, originalValue: 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.', valid: null, value: 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.' }; link = $compile(element)($scope); }); $scope.$digest(); jTextarea = jQuery(element.find('textarea')); expect(jTextarea.attr('placeholder')).not.toBe(''); expect(jTextarea.attr('placeholder')).toBe('waiting'); }); }); describe('autofocus', function () { var requiredAttr; it('borde inte ha en "autofocus" attribut om inte detta angivits', function () { DOM = ''; inject(function ($compile, $rootScope) { $scope = $rootScope; element = angular.element(DOM); $scope.model = { dirty: null, originalValue: 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.', valid: null, value: 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.' }; link = $compile(element)($scope); }); $scope.$digest(); jTextarea = jQuery(element.find('textarea')); expect(jTextarea.attr('autofocus')).toBeUndefined(); }); it('borde ha en "autofocus" attribut om detta angivits', function () { DOM = ''; inject(function ($compile, $rootScope) { $scope = $rootScope; element = angular.element(DOM); $scope.model = { dirty: null, originalValue: 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.', valid: null, value: 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.' }; link = $compile(element)($scope); }); $scope.$digest(); jTextarea = jQuery(element.find('textarea')); expect(jTextarea.attr('autofocus')).toBeDefined(); }); }); describe('disable', function () { var requiredAttr; it('borde ha en "disabled" attribut om detta angivits', function () { DOM = ''; inject(function ($compile, $rootScope) { $scope = $rootScope; element = angular.element(DOM); $scope.model = { dirty: null, originalValue: 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.', valid: null, value: 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.' }; $scope.disableForm = true; link = $compile(element)($scope); }); $scope.$digest(); jTextarea = jQuery(element.find('textarea')); expect(jTextarea.attr('disabled')).toBeDefined(); }); }); describe('maxlength ', function () { var requiredAttr; it('borde inte ha en "maxlength" attribut om inte detta angivits', function () { DOM = ''; //(function () { //inject(function ($compile, $rootScope) { // $scope = $rootScope; // element = angular.element(DOM); // $scope.model = { // dirty: null, // originalValue: 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.', // valid: null, // value: 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.' // }; // link = $compile(element)($scope); //}); //$scope.$digest(); //} ()); jTextarea = jQuery(element.find('textarea')); expect(jTextarea.attr('disabled')).toBeUndefined(); }); it('borde ha en "maxlength" attribut om detta angivits', function () { //(function () { DOM = ''; inject(function ($compile, $rootScope) { $scope = $rootScope; element = angular.element(DOM); $scope.model = { dirty: null, originalValue: 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.', valid: null, value: 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.' }; link = $compile(element)($scope); }); $scope.$digest(); jTextarea = jQuery(element.find('textarea')); expect(jTextarea.attr('maxlength')).toBeDefined(); }); }); describe('readonly ', function () { var requiredAttr; it('borde inte ha en "readonly" attribut om inte detta angivits', function () { DOM = ''; //(function () { //inject(function ($compile, $rootScope) { // $scope = $rootScope; // element = angular.element(DOM); // $scope.model = { // dirty: null, // originalValue: 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.', // valid: null, // value: 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.' // }; // link = $compile(element)($scope); //}); //$scope.$digest(); //} ()); jTextarea = jQuery(element.find('textarea')); expect(jTextarea.attr('readonly')).toBeUndefined(); }); it('borde ha en "readonly" attribut om detta angivits', function () { DOM = ''; inject(function ($compile, $rootScope) { $scope = $rootScope; element = angular.element(DOM); $scope.model = { dirty: null, originalValue: 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.', valid: null, value: 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.' }; link = $compile(element)($scope); }); $scope.$digest(); jTextarea = jQuery(element.find('textarea')); expect(jTextarea.attr('readonly')).toBeDefined(); }); }); describe('rows ', function () { var requiredAttr; it('borde inte ha en "rows" attribut om inte detta angivits', function () { DOM = ''; jTextarea = jQuery(element.find('textarea')); expect(jTextarea.attr('rows')).toBeUndefined(); }); it('borde ha en "rows" attribut om detta angivits, och attributet borde ha rätt värde', function () { DOM = ''; inject(function ($compile, $rootScope) { $scope = $rootScope; element = angular.element(DOM); $scope.model = { dirty: null, originalValue: 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.', valid: null, value: 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.' }; link = $compile(element)($scope); }); $scope.$digest(); jTextarea = jQuery(element.find('textarea')); expect(jTextarea.attr('rows')).toBeDefined(); expect(jTextarea.attr('rows')).toBe('20'); }); }); describe('spellcheck ', function () { var requiredAttr; it('borde inte ha en "spellcheck" attribut om inte detta angivits', function () { DOM = ''; jTextarea = jQuery(element.find('textarea')); expect(jTextarea.attr('spellcheck')).toBeUndefined(); }); it('borde ha en "spellcheck" attribut om detta angivits', function () { DOM = ''; inject(function ($compile, $rootScope) { $scope = $rootScope; element = angular.element(DOM); $scope.model = { dirty: null, originalValue: 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.', valid: null, value: 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.' }; link = $compile(element)($scope); }); $scope.$digest(); jTextarea = jQuery(element.find('textarea')); expect(jTextarea.attr('spellcheck')).toBeDefined(); }); }); describe('wrap ', function () { var requiredAttr; it('borde inte ha en "wrap " attribut om inte detta angivits', function () { DOM = ''; jTextarea = jQuery(element.find('textarea')); expect(jTextarea.attr('wrap ')).toBeUndefined(); }); it('borde ha en "wrap" attribut om detta angivits', function () { DOM = ''; inject(function ($compile, $rootScope) { $scope = $rootScope; element = angular.element(DOM); $scope.model = { dirty: null, originalValue: 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.', valid: null, value: 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.' }; link = $compile(element)($scope); }); $scope.$digest(); jTextarea = jQuery(element.find('textarea')); expect(jTextarea.attr('wrap')).toBeDefined(); }); it('borde rätt värde på attributet', function () { DOM = ''; inject(function ($compile, $rootScope) { $scope = $rootScope; element = angular.element(DOM); $scope.model = { dirty: null, originalValue: 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.', valid: null, value: 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.' }; link = $compile(element)($scope); }); $scope.$digest(); jTextarea = jQuery(element.find('textarea')); expect(jTextarea.attr('wrap')).toBeDefined(); expect(jTextarea.attr('wrap')).toBe('hard'); }); }); //describe('no-label', function () { // var requiredAttr; // it('borde ta bort en label om no-label har angivits', function () { // var jLabel; // DOM = ''; // inject(function ($compile, $rootScope) { // $scope = $rootScope; // element = angular.element(DOM); // $scope.model = { // dirty: null, // originalValue: 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.', // valid: null, // value: 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.' // }; // 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(); //})); }); });