/* 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();
//}));
});
});