salix/front/core/directives/specs/focus.spec.js

52 lines
1.6 KiB
JavaScript

describe('Directive focus', () => {
let $scope;
let $element;
let compile;
beforeEach(ngModule('vnCore'));
compile = (_element, _childElement) => {
inject(($compile, $rootScope) => {
$scope = $rootScope.$new();
$element = angular.element(_element);
if (_childElement)
$element[0].firstChild.focus = jasmine.createSpy(focus);
$element[0].focus = jasmine.createSpy('focus');
$element[0].select = jasmine.createSpy('select');
$compile($element)($scope);
$scope.$digest();
});
};
it('should call the querySelector function upon the input to redefine it with the expected selector then call focus', () => {
let html = `<div vn-focus><input></input></div>`;
let childHtml = '<input></input>';
compile(html, childHtml);
expect($element[0].firstChild.focus).toHaveBeenCalled();
});
it('should print a warning message on console', () => {
let html = `<potato vn-focus></potato>`;
console.warn = jasmine.createSpy('warn');
compile(html);
expect(console.warn).toHaveBeenCalledWith(`vnFocus: Can't find a focusable element`);
});
it('should call focus function on the element', () => {
let html = `<input vn-focus></input>`;
compile(html);
expect($element[0].focus).toHaveBeenCalledWith();
});
it('should call select function on the element', () => {
let html = `<input vn-focus></input>`;
compile(html);
expect($element[0].select).toHaveBeenCalledWith();
});
});