forked from angular/angular.js
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathaSpec.js
69 lines (48 loc) · 1.77 KB
/
aSpec.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
'use strict';
describe('a', function() {
var element, $compile, $rootScope;
beforeEach(inject(function(_$compile_, _$rootScope_) {
$compile = _$compile_;
$rootScope = _$rootScope_;
}));
afterEach(function(){
dealoc(element);
});
it('should prevent default action to be executed when href is empty', function() {
var orgLocation = document.location.href,
preventDefaultCalled = false,
event;
element = $compile('<a href="">empty link</a>')($rootScope);
if (msie < 9) {
event = document.createEventObject();
expect(event.returnValue).not.toBeDefined();
element[0].fireEvent('onclick', event);
expect(event.returnValue).toEqual(false);
} else {
event = document.createEvent('MouseEvent');
event.initMouseEvent(
'click', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
event.preventDefaultOrg = event.preventDefault;
event.preventDefault = function() {
preventDefaultCalled = true;
if (this.preventDefaultOrg) this.preventDefaultOrg();
};
element[0].dispatchEvent(event);
expect(preventDefaultCalled).toEqual(true);
}
expect(document.location.href).toEqual(orgLocation);
});
it('should prevent IE for changing text content when setting attribute', function() {
// see issue #1949
element = jqLite('<a href="">hello@you</a>');
$compile(element);
element.attr('href', 'bye@me');
expect(element.text()).toBe('hello@you');
});
it('should not cause failures with triggerHandler', function() {
element = jqLite('<a href="" ng-click="foo=\'bar\'">link</a>"');
element = $compile(element)($rootScope);
element.triggerHandler('click');
expect($rootScope.foo).toEqual('bar');
});
});