forked from jquery/jquery-migrate
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathattributes.js
107 lines (87 loc) · 3.66 KB
/
attributes.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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
QUnit.module( "attributes" );
QUnit.test( ".removeAttr( boolean attribute )", function( assert ) {
assert.expect( 14 );
expectNoWarning( assert, "non-boolean attr", function() {
var $div = jQuery( "<div />" )
.attr( "quack", "duck" )
.removeAttr( "quack" );
assert.equal( $div.attr( "quack" ), null, "non-boolean attribute was removed" );
assert.equal( $div.prop( "quack" ), undefined, "property was not set" );
} );
expectWarning( assert, "boolean attr", function() {
var $inp = jQuery( "<input type=checkbox/>" )
.attr( "checked", "checked" )
.prop( "checked", true )
.removeAttr( "checked" );
assert.equal( $inp.attr( "checked" ), null, "boolean attribute was removed" );
assert.equal( $inp.prop( "checked" ), false, "property was changed" );
} );
// One warning per attribute name
expectWarning( assert, "multiple boolean attr", 2, function() {
jQuery( "<input type=checkbox/>" )
.attr( "checked", "checked" )
.attr( "readonly", "readonly" )
.removeAttr( "checked readonly" );
} );
expectWarning( assert, "mixed attr, one boolean", function() {
jQuery( "<input />" )
.attr( "type", "text" )
.attr( "size", "15" )
.attr( "disabled", "disabled" )
.removeAttr( "disabled" )
.removeAttr( "size" );
} );
expectNoWarning( assert, "boolean attr when prop false", function() {
var $inp = jQuery( "<input type=checkbox/>" )
.attr( "checked", "checked" )
.prop( "checked", false )
.removeAttr( "checked" );
assert.equal( $inp.attr( "checked" ), null, "boolean attribute was removed" );
assert.equal( $inp.prop( "checked" ), false, "property was not changed" );
} );
expectWarning( assert, "boolean attr when only some props false", 1, function() {
var $inp = jQuery( "<input type=checkbox/><input type=checkbox/><input type=checkbox/>" )
.attr( "checked", "checked" )
.prop( "checked", false )
.eq( 1 ).prop( "checked", true ).end()
.removeAttr( "checked" );
assert.equal( $inp.attr( "checked" ), null, "boolean attribute was removed" );
assert.equal( $inp.eq( 1 ).prop( "checked" ), false, "property was changed" );
} );
} );
QUnit.test( ".toggleClass( boolean )", function( assert ) {
assert.expect( 14 );
var e = jQuery( "<div />" ).appendTo( "#qunit-fixture" );
expectWarning( assert, "toggling initially empty class", 1, function() {
e.toggleClass( true );
assert.equal( e[ 0 ].className, "", "Assert class is empty (data was empty)" );
} );
expectNoWarning( assert, ".toggleClass( string ) not full className", 1, function() {
e.attr( "class", "" );
e.toggleClass( "classy" );
assert.equal( e.attr( "class" ), "classy", "class was toggle-set" );
e.toggleClass( "classy", false );
assert.equal( e.attr( "class" ), "", "class was toggle-removed" );
} );
expectWarning( assert, ".toggleClass() save and clear", 1, function() {
e.addClass( "testD testE" );
assert.ok( e.is( ".testD.testE" ), "Assert class present" );
e.toggleClass();
assert.ok( !e.is( ".testD.testE" ), "Assert class not present" );
// N.B.: Store should have "testD testE" now, next test will assert that
} );
expectWarning( assert, ".toggleClass() restore", 1, function() {
e.toggleClass();
assert.ok( e.is( ".testD.testE" ), "Assert class present (restored from data)" );
} );
expectWarning( assert, ".toggleClass( boolean )", 5, function() {
e.toggleClass( false );
assert.ok( !e.is( ".testD.testE" ), "Assert class not present" );
e.toggleClass( true );
assert.ok( e.is( ".testD.testE" ), "Assert class present (restored from data)" );
e.toggleClass();
e.toggleClass( false );
e.toggleClass();
assert.ok( e.is( ".testD.testE" ), "Assert class present (restored from data)" );
} );
} );