ember-source 1.10.0.beta.4 → 1.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of ember-source might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/VERSION +1 -1
- data/dist/ember-runtime.js +32 -25
- data/dist/ember-template-compiler.js +219 -68
- data/dist/ember-testing.js +12 -12
- data/dist/ember-tests.js +508 -73
- data/dist/ember-tests.prod.js +396 -73
- data/dist/ember.debug.js +564 -6494
- data/dist/ember.js +564 -6494
- data/dist/ember.min.js +12 -15
- data/dist/ember.prod.js +550 -6482
- metadata +4 -4
data/dist/ember-testing.js
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
* Portions Copyright 2008-2011 Apple Inc. All rights reserved.
|
6
6
|
* @license Licensed under MIT license
|
7
7
|
* See https://raw.github.com/emberjs/ember.js/master/LICENSE
|
8
|
-
* @version 1.10.0
|
8
|
+
* @version 1.10.0
|
9
9
|
*/
|
10
10
|
|
11
11
|
(function() {
|
@@ -530,7 +530,7 @@ enifed("ember-testing/helpers",
|
|
530
530
|
var $el = app.testHelpers.findWithAssert(selector, context);
|
531
531
|
run($el, 'mousedown');
|
532
532
|
|
533
|
-
if ($el.is(':input')) {
|
533
|
+
if ($el.is(':input, [contenteditable=true]')) {
|
534
534
|
var type = $el.prop('type');
|
535
535
|
if (type !== 'checkbox' && type !== 'radio' && type !== 'hidden') {
|
536
536
|
run($el, function(){
|
@@ -648,8 +648,10 @@ enifed("ember-testing/helpers",
|
|
648
648
|
|
649
649
|
// Every 10ms, poll for the async thing to have finished
|
650
650
|
var watcher = setInterval(function() {
|
651
|
+
var router = app.__container__.lookup('router:main');
|
652
|
+
|
651
653
|
// 1. If the router is loading, keep polling
|
652
|
-
var routerIsLoading =
|
654
|
+
var routerIsLoading = router.router && !!router.router.activeTransition;
|
653
655
|
if (routerIsLoading) { return; }
|
654
656
|
|
655
657
|
// 2. If there are pending Ajax requests, keep polling
|
@@ -885,6 +887,7 @@ enifed("ember-testing/helpers",
|
|
885
887
|
click('.btn');
|
886
888
|
```
|
887
889
|
|
890
|
+
@since 1.9.0
|
888
891
|
@method pauseTest
|
889
892
|
@return {Object} A promise that will never resolve
|
890
893
|
*/
|
@@ -1055,16 +1058,15 @@ enifed("ember-testing/support",
|
|
1055
1058
|
});
|
1056
1059
|
});
|
1057
1060
|
enifed("ember-testing/test",
|
1058
|
-
["ember-metal/core","ember-metal/run_loop","ember-metal/platform","ember-runtime/
|
1059
|
-
function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __dependency5__, __dependency6__,
|
1061
|
+
["ember-metal/core","ember-metal/run_loop","ember-metal/platform","ember-runtime/ext/rsvp","ember-testing/setup_for_testing","ember-application/system/application","exports"],
|
1062
|
+
function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __dependency5__, __dependency6__, __exports__) {
|
1060
1063
|
"use strict";
|
1061
1064
|
var Ember = __dependency1__["default"];
|
1062
1065
|
var emberRun = __dependency2__["default"];
|
1063
1066
|
var create = __dependency3__.create;
|
1064
|
-
var
|
1065
|
-
var
|
1066
|
-
var
|
1067
|
-
var EmberApplication = __dependency7__["default"];
|
1067
|
+
var RSVP = __dependency4__["default"];
|
1068
|
+
var setupForTesting = __dependency5__["default"];
|
1069
|
+
var EmberApplication = __dependency6__["default"];
|
1068
1070
|
|
1069
1071
|
/**
|
1070
1072
|
@module ember
|
@@ -1325,15 +1327,13 @@ enifed("ember-testing/test",
|
|
1325
1327
|
@since 1.2.0
|
1326
1328
|
*/
|
1327
1329
|
unregisterWaiter: function(context, callback) {
|
1328
|
-
var pair;
|
1329
1330
|
if (!this.waiters) { return; }
|
1330
1331
|
if (arguments.length === 1) {
|
1331
1332
|
callback = context;
|
1332
1333
|
context = null;
|
1333
1334
|
}
|
1334
|
-
pair = [context, callback];
|
1335
1335
|
this.waiters = Ember.A(this.waiters.filter(function(elt) {
|
1336
|
-
return
|
1336
|
+
return !(elt[0] === context && elt[1] === callback);
|
1337
1337
|
}));
|
1338
1338
|
}
|
1339
1339
|
};
|
data/dist/ember-tests.js
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
* Portions Copyright 2008-2011 Apple Inc. All rights reserved.
|
6
6
|
* @license Licensed under MIT license
|
7
7
|
* See https://raw.github.com/emberjs/ember.js/master/LICENSE
|
8
|
-
* @version 1.10.0
|
8
|
+
* @version 1.10.0
|
9
9
|
*/
|
10
10
|
|
11
11
|
(function() {
|
@@ -4034,7 +4034,7 @@ enifed("ember-htmlbars.jshint",
|
|
4034
4034
|
"use strict";
|
4035
4035
|
module('JSHint - .');
|
4036
4036
|
test('ember-htmlbars.js should pass jshint', function() {
|
4037
|
-
ok(
|
4037
|
+
ok(true, 'ember-htmlbars.js should pass jshint.');
|
4038
4038
|
});
|
4039
4039
|
});
|
4040
4040
|
enifed("ember-htmlbars/compat.jshint",
|
@@ -4073,15 +4073,6 @@ enifed("ember-htmlbars/compat/make-bound-helper.jshint",
|
|
4073
4073
|
ok(true, 'ember-htmlbars/compat/make-bound-helper.js should pass jshint.');
|
4074
4074
|
});
|
4075
4075
|
});
|
4076
|
-
enifed("ember-htmlbars/compat/precompile.jshint",
|
4077
|
-
[],
|
4078
|
-
function() {
|
4079
|
-
"use strict";
|
4080
|
-
module('JSHint - ember-htmlbars/compat');
|
4081
|
-
test('ember-htmlbars/compat/precompile.js should pass jshint', function() {
|
4082
|
-
ok(true, 'ember-htmlbars/compat/precompile.js should pass jshint.');
|
4083
|
-
});
|
4084
|
-
});
|
4085
4076
|
enifed("ember-htmlbars/compat/register-bound-helper.jshint",
|
4086
4077
|
[],
|
4087
4078
|
function() {
|
@@ -4482,14 +4473,13 @@ enifed("ember-htmlbars/tests/attr_nodes/href_test.jshint",
|
|
4482
4473
|
ok(true, 'ember-htmlbars/tests/attr_nodes/href_test.js should pass jshint.');
|
4483
4474
|
});
|
4484
4475
|
});
|
4485
|
-
enifed("ember-htmlbars/tests/attr_nodes/
|
4486
|
-
["ember-views/views/view","ember-metal/run_loop","ember-template-compiler/system/compile"
|
4487
|
-
function(__dependency1__, __dependency2__, __dependency3__
|
4476
|
+
enifed("ember-htmlbars/tests/attr_nodes/property_test",
|
4477
|
+
["ember-views/views/view","ember-metal/run_loop","ember-template-compiler/system/compile"],
|
4478
|
+
function(__dependency1__, __dependency2__, __dependency3__) {
|
4488
4479
|
"use strict";
|
4489
4480
|
var EmberView = __dependency1__["default"];
|
4490
4481
|
var run = __dependency2__["default"];
|
4491
4482
|
var compile = __dependency3__["default"];
|
4492
|
-
var equalInnerHTML = __dependency4__.equalInnerHTML;
|
4493
4483
|
|
4494
4484
|
var view;
|
4495
4485
|
|
@@ -4505,13 +4495,13 @@ enifed("ember-htmlbars/tests/attr_nodes/nonmatching_reflection_test",
|
|
4505
4495
|
}
|
4506
4496
|
|
4507
4497
|
});
|
4508
|
-
enifed("ember-htmlbars/tests/attr_nodes/
|
4498
|
+
enifed("ember-htmlbars/tests/attr_nodes/property_test.jshint",
|
4509
4499
|
[],
|
4510
4500
|
function() {
|
4511
4501
|
"use strict";
|
4512
4502
|
module('JSHint - ember-htmlbars/tests/attr_nodes');
|
4513
|
-
test('ember-htmlbars/tests/attr_nodes/
|
4514
|
-
ok(true, 'ember-htmlbars/tests/attr_nodes/
|
4503
|
+
test('ember-htmlbars/tests/attr_nodes/property_test.js should pass jshint', function() {
|
4504
|
+
ok(true, 'ember-htmlbars/tests/attr_nodes/property_test.js should pass jshint.');
|
4515
4505
|
});
|
4516
4506
|
});
|
4517
4507
|
enifed("ember-htmlbars/tests/attr_nodes/sanitized_test",
|
@@ -4570,13 +4560,12 @@ enifed("ember-htmlbars/tests/attr_nodes/svg_test.jshint",
|
|
4570
4560
|
});
|
4571
4561
|
});
|
4572
4562
|
enifed("ember-htmlbars/tests/attr_nodes/value_test",
|
4573
|
-
["ember-views/views/view","ember-metal/run_loop","ember-template-compiler/system/compile"
|
4574
|
-
function(__dependency1__, __dependency2__, __dependency3__
|
4563
|
+
["ember-views/views/view","ember-metal/run_loop","ember-template-compiler/system/compile"],
|
4564
|
+
function(__dependency1__, __dependency2__, __dependency3__) {
|
4575
4565
|
"use strict";
|
4576
4566
|
var EmberView = __dependency1__["default"];
|
4577
4567
|
var run = __dependency2__["default"];
|
4578
4568
|
var compile = __dependency3__["default"];
|
4579
|
-
var equalInnerHTML = __dependency4__.equalInnerHTML;
|
4580
4569
|
|
4581
4570
|
var view;
|
4582
4571
|
|
@@ -4857,6 +4846,32 @@ enifed("ember-htmlbars/tests/compat/helper_test",
|
|
4857
4846
|
runAppend(view);
|
4858
4847
|
});
|
4859
4848
|
|
4849
|
+
test('allows unbound usage within an element', function() {
|
4850
|
+
expect(4);
|
4851
|
+
|
4852
|
+
function someHelper(param1, param2, options) {
|
4853
|
+
equal(param1, 'blammo');
|
4854
|
+
equal(param2, 'blazzico');
|
4855
|
+
|
4856
|
+
return "class='foo'";
|
4857
|
+
}
|
4858
|
+
|
4859
|
+
registerHandlebarsCompatibleHelper('test', someHelper);
|
4860
|
+
|
4861
|
+
view = EmberView.create({
|
4862
|
+
controller: {
|
4863
|
+
value: 'foo'
|
4864
|
+
},
|
4865
|
+
template: compile('<div {{test "blammo" "blazzico"}}>Bar</div>')
|
4866
|
+
});
|
4867
|
+
|
4868
|
+
expectDeprecation(function() {
|
4869
|
+
runAppend(view);
|
4870
|
+
}, 'Returning a string of attributes from a helper inside an element is deprecated.');
|
4871
|
+
|
4872
|
+
equal(view.$('.foo').length, 1, 'class attribute was added by helper');
|
4873
|
+
});
|
4874
|
+
|
4860
4875
|
test('registering a helper created from `Ember.Handlebars.makeViewHelper` does not double wrap the helper', function() {
|
4861
4876
|
expect(1);
|
4862
4877
|
|
@@ -4876,6 +4891,111 @@ enifed("ember-htmlbars/tests/compat/helper_test",
|
|
4876
4891
|
equal(view.$().text(), 'woot!');
|
4877
4892
|
});
|
4878
4893
|
|
4894
|
+
test('does not add `options.fn` if no block was specified', function() {
|
4895
|
+
expect(1);
|
4896
|
+
|
4897
|
+
function someHelper(options) {
|
4898
|
+
ok(!options.fn, '`options.fn` is not present when block is not specified');
|
4899
|
+
}
|
4900
|
+
|
4901
|
+
registerHandlebarsCompatibleHelper('test', someHelper);
|
4902
|
+
|
4903
|
+
view = EmberView.create({
|
4904
|
+
controller: {
|
4905
|
+
value: 'foo'
|
4906
|
+
},
|
4907
|
+
template: compile('{{test}}')
|
4908
|
+
});
|
4909
|
+
|
4910
|
+
runAppend(view);
|
4911
|
+
});
|
4912
|
+
|
4913
|
+
test('does not return helper result if block was specified', function() {
|
4914
|
+
expect(1);
|
4915
|
+
|
4916
|
+
function someHelper(options) {
|
4917
|
+
return 'asdf';
|
4918
|
+
}
|
4919
|
+
|
4920
|
+
registerHandlebarsCompatibleHelper('test', someHelper);
|
4921
|
+
|
4922
|
+
view = EmberView.create({
|
4923
|
+
controller: {
|
4924
|
+
value: 'foo'
|
4925
|
+
},
|
4926
|
+
template: compile('{{#test}}lkj;{{/test}}')
|
4927
|
+
});
|
4928
|
+
|
4929
|
+
runAppend(view);
|
4930
|
+
|
4931
|
+
equal(view.$().text(), '');
|
4932
|
+
});
|
4933
|
+
|
4934
|
+
test('allows usage of the template fn', function() {
|
4935
|
+
expect(1);
|
4936
|
+
|
4937
|
+
function someHelper(options) {
|
4938
|
+
options.fn();
|
4939
|
+
}
|
4940
|
+
|
4941
|
+
registerHandlebarsCompatibleHelper('test', someHelper);
|
4942
|
+
|
4943
|
+
view = EmberView.create({
|
4944
|
+
controller: {
|
4945
|
+
value: 'foo'
|
4946
|
+
},
|
4947
|
+
template: compile('{{#test}}foo{{/test}}')
|
4948
|
+
});
|
4949
|
+
|
4950
|
+
runAppend(view);
|
4951
|
+
|
4952
|
+
equal(view.$().text(), 'foo');
|
4953
|
+
});
|
4954
|
+
|
4955
|
+
QUnit.test('ordered param types are added to options.types', function() {
|
4956
|
+
expect(3);
|
4957
|
+
|
4958
|
+
function someHelper(param1, param2, param3, options) {
|
4959
|
+
equal(options.types[0], 'NUMBER');
|
4960
|
+
equal(options.types[1], 'ID');
|
4961
|
+
equal(options.types[2], 'STRING');
|
4962
|
+
}
|
4963
|
+
|
4964
|
+
registerHandlebarsCompatibleHelper('test', someHelper);
|
4965
|
+
|
4966
|
+
view = EmberView.create({
|
4967
|
+
controller: {
|
4968
|
+
first: 'blammo',
|
4969
|
+
second: 'blazzico'
|
4970
|
+
},
|
4971
|
+
template: compile('{{test 1 two "3"}}')
|
4972
|
+
});
|
4973
|
+
|
4974
|
+
runAppend(view);
|
4975
|
+
});
|
4976
|
+
|
4977
|
+
QUnit.test('`hash` params are to options.hashTypes', function() {
|
4978
|
+
expect(3);
|
4979
|
+
|
4980
|
+
function someHelper(options) {
|
4981
|
+
equal(options.hashTypes.string, 'STRING');
|
4982
|
+
equal(options.hashTypes.number, 'NUMBER');
|
4983
|
+
equal(options.hashTypes.id, 'ID');
|
4984
|
+
}
|
4985
|
+
|
4986
|
+
registerHandlebarsCompatibleHelper('test', someHelper);
|
4987
|
+
|
4988
|
+
view = EmberView.create({
|
4989
|
+
controller: {
|
4990
|
+
value: 'Jacquie'
|
4991
|
+
},
|
4992
|
+
template: compile('{{test string="foo" number=42 id=someBoundThing}}')
|
4993
|
+
});
|
4994
|
+
|
4995
|
+
runAppend(view);
|
4996
|
+
});
|
4997
|
+
|
4998
|
+
// jscs:enable validateIndentation
|
4879
4999
|
|
4880
5000
|
});
|
4881
5001
|
enifed("ember-htmlbars/tests/compat/helper_test.jshint",
|
@@ -5585,8 +5705,8 @@ enifed("ember-htmlbars/tests/compat/precompile_test.jshint",
|
|
5585
5705
|
});
|
5586
5706
|
});
|
5587
5707
|
enifed("ember-htmlbars/tests/helpers/bind_attr_test",
|
5588
|
-
["ember-metal/core","ember-metal/run_loop","ember-runtime/system/namespace","ember-views/views/view","ember-views/views/metamorph_view","ember-runtime/system/object","ember-runtime/system/native_array","ember-metal/computed","ember-metal/observer","ember-runtime/system/container","ember-metal/property_set","ember-runtime/tests/utils","
|
5589
|
-
function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __dependency5__, __dependency6__, __dependency7__, __dependency8__, __dependency9__, __dependency10__, __dependency11__, __dependency12__, __dependency13__, __dependency14__
|
5708
|
+
["ember-metal/core","ember-metal/run_loop","ember-runtime/system/namespace","ember-views/views/view","ember-views/views/metamorph_view","ember-runtime/system/object","ember-runtime/system/native_array","ember-metal/computed","ember-metal/observer","ember-runtime/system/container","ember-metal/property_set","ember-runtime/tests/utils","ember-htmlbars/helpers","ember-template-compiler/system/compile"],
|
5709
|
+
function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __dependency5__, __dependency6__, __dependency7__, __dependency8__, __dependency9__, __dependency10__, __dependency11__, __dependency12__, __dependency13__, __dependency14__) {
|
5590
5710
|
"use strict";
|
5591
5711
|
/*jshint newcap:false*/
|
5592
5712
|
var Ember = __dependency1__["default"];
|
@@ -5603,10 +5723,9 @@ enifed("ember-htmlbars/tests/helpers/bind_attr_test",
|
|
5603
5723
|
var set = __dependency11__.set;
|
5604
5724
|
var runAppend = __dependency12__.runAppend;
|
5605
5725
|
var runDestroy = __dependency12__.runDestroy;
|
5606
|
-
var equalInnerHTML = __dependency13__.equalInnerHTML;
|
5607
5726
|
|
5608
|
-
var helpers =
|
5609
|
-
var compile =
|
5727
|
+
var helpers = __dependency13__["default"];
|
5728
|
+
var compile = __dependency14__["default"];
|
5610
5729
|
var view;
|
5611
5730
|
|
5612
5731
|
var originalLookup = Ember.lookup;
|
@@ -5872,13 +5991,13 @@ enifed("ember-htmlbars/tests/helpers/bind_attr_test",
|
|
5872
5991
|
|
5873
5992
|
runAppend(view);
|
5874
5993
|
|
5875
|
-
|
5994
|
+
equal(view.element.firstChild.className, 'bar', 'renders class');
|
5876
5995
|
|
5877
5996
|
run(function() {
|
5878
5997
|
set(view, 'foo', 'baz');
|
5879
5998
|
});
|
5880
5999
|
|
5881
|
-
|
6000
|
+
equal(view.element.firstChild.className, 'baz', 'updates rendered class');
|
5882
6001
|
});
|
5883
6002
|
|
5884
6003
|
test("should be able to bind unquoted class attribute with {{bind-attr}}", function() {
|
@@ -5910,13 +6029,13 @@ enifed("ember-htmlbars/tests/helpers/bind_attr_test",
|
|
5910
6029
|
|
5911
6030
|
runAppend(view);
|
5912
6031
|
|
5913
|
-
|
6032
|
+
equal(view.element.firstChild.className, 'is-truthy', 'renders class');
|
5914
6033
|
|
5915
6034
|
run(function() {
|
5916
6035
|
set(view, 'isNumber', 0);
|
5917
6036
|
});
|
5918
6037
|
|
5919
|
-
|
6038
|
+
ok(view.element.firstChild.className !== 'is-truthy', 'removes class');
|
5920
6039
|
});
|
5921
6040
|
|
5922
6041
|
test("should be able to bind class to view attribute with {{bind-attr}}", function() {
|
@@ -9583,6 +9702,9 @@ enifed("ember-htmlbars/tests/helpers/sanitized_bind_attr_test",
|
|
9583
9702
|
{ tag: 'a', attr: 'href',
|
9584
9703
|
template: compile('<a {{bind-attr href=view.badValue}}></a>') },
|
9585
9704
|
{ tag: 'body', attr: 'background',
|
9705
|
+
// IE8 crashes when setting background with
|
9706
|
+
// a javascript: protocol
|
9707
|
+
skip: (document.documentMode && document.documentMode <= 8),
|
9586
9708
|
template: compile('<body {{bind-attr background=view.badValue}}></body>') },
|
9587
9709
|
{ tag: 'link', attr: 'href',
|
9588
9710
|
template: compile('<link {{bind-attr href=view.badValue}}>') },
|
@@ -9596,6 +9718,10 @@ enifed("ember-htmlbars/tests/helpers/sanitized_bind_attr_test",
|
|
9596
9718
|
var attr = badTags[i].attr;
|
9597
9719
|
var template = badTags[i].template;
|
9598
9720
|
|
9721
|
+
if (badTags[i].skip) {
|
9722
|
+
return;
|
9723
|
+
}
|
9724
|
+
|
9599
9725
|
test("XSS - should not bind unsafe "+tagName+" "+attr+" values", function() {
|
9600
9726
|
view = EmberView.create({
|
9601
9727
|
template: template,
|
@@ -10230,7 +10356,7 @@ enifed("ember-htmlbars/tests/helpers/unbound_test.jshint",
|
|
10230
10356
|
});
|
10231
10357
|
});
|
10232
10358
|
enifed("ember-htmlbars/tests/helpers/view_test",
|
10233
|
-
["ember-metal/property_set","ember-views/views/view","container/container","ember-metal/run_loop","ember-views/system/jquery","ember-views/views/text_field","ember-runtime/system/namespace","ember-runtime/system/object","ember-views/views/container_view","ember-views/views/metamorph_view","htmlbars-util/safe-string","ember-
|
10359
|
+
["ember-metal/property_set","ember-views/views/view","container/container","ember-metal/run_loop","ember-views/system/jquery","ember-views/views/text_field","ember-runtime/system/namespace","ember-runtime/system/object","ember-views/views/container_view","ember-views/views/metamorph_view","htmlbars-util/safe-string","ember-template-compiler/compat/precompile","ember-template-compiler/system/compile","ember-template-compiler/system/template","ember-metal/observer","ember-runtime/controllers/object_controller","ember-runtime/tests/utils","ember-metal/property_get","ember-metal/computed"],
|
10234
10360
|
function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __dependency5__, __dependency6__, __dependency7__, __dependency8__, __dependency9__, __dependency10__, __dependency11__, __dependency12__, __dependency13__, __dependency14__, __dependency15__, __dependency16__, __dependency17__, __dependency18__, __dependency19__) {
|
10235
10361
|
"use strict";
|
10236
10362
|
/*globals EmberDev */
|
@@ -12517,6 +12643,95 @@ enifed("ember-htmlbars/tests/hooks/component_test.jshint",
|
|
12517
12643
|
ok(true, 'ember-htmlbars/tests/hooks/component_test.js should pass jshint.');
|
12518
12644
|
});
|
12519
12645
|
});
|
12646
|
+
enifed("ember-htmlbars/tests/hooks/element_test",
|
12647
|
+
["ember-views/views/view","ember-htmlbars/helpers","ember-runtime/tests/utils","ember-template-compiler/system/compile"],
|
12648
|
+
function(__dependency1__, __dependency2__, __dependency3__, __dependency4__) {
|
12649
|
+
"use strict";
|
12650
|
+
var EmberView = __dependency1__["default"];
|
12651
|
+
var helpers = __dependency2__["default"];
|
12652
|
+
var registerHelper = __dependency2__.registerHelper;
|
12653
|
+
var runAppend = __dependency3__.runAppend;
|
12654
|
+
var runDestroy = __dependency3__.runDestroy;
|
12655
|
+
var compile = __dependency4__["default"];
|
12656
|
+
|
12657
|
+
var view;
|
12658
|
+
|
12659
|
+
QUnit.module('ember-htmlbars: element hook', {
|
12660
|
+
teardown: function() {
|
12661
|
+
runDestroy(view);
|
12662
|
+
delete helpers.test;
|
12663
|
+
}
|
12664
|
+
});
|
12665
|
+
|
12666
|
+
test('allows unbound usage within an element', function() {
|
12667
|
+
expect(4);
|
12668
|
+
|
12669
|
+
function someHelper(params, hash, options, env) {
|
12670
|
+
equal(params[0], 'blammo');
|
12671
|
+
equal(params[1], 'blazzico');
|
12672
|
+
|
12673
|
+
return "class='foo'";
|
12674
|
+
}
|
12675
|
+
|
12676
|
+
registerHelper('test', someHelper);
|
12677
|
+
|
12678
|
+
view = EmberView.create({
|
12679
|
+
controller: {
|
12680
|
+
value: 'foo'
|
12681
|
+
},
|
12682
|
+
template: compile('<div {{test "blammo" "blazzico"}}>Bar</div>')
|
12683
|
+
});
|
12684
|
+
|
12685
|
+
expectDeprecation(function() {
|
12686
|
+
runAppend(view);
|
12687
|
+
}, 'Returning a string of attributes from a helper inside an element is deprecated.');
|
12688
|
+
|
12689
|
+
equal(view.$('.foo').length, 1, 'class attribute was added by helper');
|
12690
|
+
});
|
12691
|
+
|
12692
|
+
test('allows unbound usage within an element from property', function() {
|
12693
|
+
expect(2);
|
12694
|
+
|
12695
|
+
view = EmberView.create({
|
12696
|
+
controller: {
|
12697
|
+
someProp: 'class="foo"'
|
12698
|
+
},
|
12699
|
+
template: compile('<div {{someProp}}>Bar</div>')
|
12700
|
+
});
|
12701
|
+
|
12702
|
+
expectDeprecation(function() {
|
12703
|
+
runAppend(view);
|
12704
|
+
}, 'Returning a string of attributes from a helper inside an element is deprecated.');
|
12705
|
+
|
12706
|
+
equal(view.$('.foo').length, 1, 'class attribute was added by helper');
|
12707
|
+
});
|
12708
|
+
|
12709
|
+
test('allows unbound usage within an element creating multiple attributes', function() {
|
12710
|
+
expect(2);
|
12711
|
+
|
12712
|
+
view = EmberView.create({
|
12713
|
+
controller: {
|
12714
|
+
someProp: 'class="foo" data-foo="bar"'
|
12715
|
+
},
|
12716
|
+
template: compile('<div {{someProp}}>Bar</div>')
|
12717
|
+
});
|
12718
|
+
|
12719
|
+
expectDeprecation(function() {
|
12720
|
+
runAppend(view);
|
12721
|
+
}, 'Returning a string of attributes from a helper inside an element is deprecated.');
|
12722
|
+
|
12723
|
+
equal(view.$('.foo[data-foo="bar"]').length, 1, 'attributes added by helper');
|
12724
|
+
});
|
12725
|
+
});
|
12726
|
+
enifed("ember-htmlbars/tests/hooks/element_test.jshint",
|
12727
|
+
[],
|
12728
|
+
function() {
|
12729
|
+
"use strict";
|
12730
|
+
module('JSHint - ember-htmlbars/tests/hooks');
|
12731
|
+
test('ember-htmlbars/tests/hooks/element_test.js should pass jshint', function() {
|
12732
|
+
ok(true, 'ember-htmlbars/tests/hooks/element_test.js should pass jshint.');
|
12733
|
+
});
|
12734
|
+
});
|
12520
12735
|
enifed("ember-htmlbars/tests/hooks/text_node_test",
|
12521
12736
|
["ember-views/views/view","ember-metal/run_loop","ember-runtime/system/object","ember-template-compiler/system/compile","htmlbars-test-helpers","ember-runtime/tests/utils"],
|
12522
12737
|
function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __dependency5__, __dependency6__) {
|
@@ -12854,7 +13069,18 @@ enifed("ember-htmlbars/tests/integration/block_params_test",
|
|
12854
13069
|
}
|
12855
13070
|
});
|
12856
13071
|
|
12857
|
-
test("
|
13072
|
+
QUnit.test("should raise error if helper not available", function() {
|
13073
|
+
view = View.create({
|
13074
|
+
template: compile('{{#shouldfail}}{{/shouldfail}}')
|
13075
|
+
});
|
13076
|
+
|
13077
|
+
expectAssertion(function() {
|
13078
|
+
runAppend(view);
|
13079
|
+
}, 'A helper named `shouldfail` could not be found');
|
13080
|
+
|
13081
|
+
});
|
13082
|
+
|
13083
|
+
QUnit.test("basic block params usage", function() {
|
12858
13084
|
view = View.create({
|
12859
13085
|
committer: { name: "rwjblue" },
|
12860
13086
|
template: compile('{{#alias view.committer.name as |name|}}name: {{name}}, length: {{name.length}}{{/alias}}')
|
@@ -23342,12 +23568,12 @@ enifed("ember-metal/tests/run_loop/schedule_test",
|
|
23342
23568
|
test('makes sure it does not trigger an autorun during testing', function() {
|
23343
23569
|
expectAssertion(function() {
|
23344
23570
|
run.schedule('actions', function() {});
|
23345
|
-
}, /wrap any code with asynchronous side-effects in
|
23571
|
+
}, /wrap any code with asynchronous side-effects in a run/);
|
23346
23572
|
|
23347
23573
|
// make sure not just the first violation is asserted.
|
23348
23574
|
expectAssertion(function() {
|
23349
23575
|
run.schedule('actions', function() {});
|
23350
|
-
}, /wrap any code with asynchronous side-effects in
|
23576
|
+
}, /wrap any code with asynchronous side-effects in a run/);
|
23351
23577
|
});
|
23352
23578
|
});
|
23353
23579
|
enifed("ember-metal/tests/run_loop/schedule_test.jshint",
|
@@ -33249,6 +33475,32 @@ enifed("ember-runtime/tests/ext/rsvp_test",
|
|
33249
33475
|
Ember.testing = wasEmberTesting ;
|
33250
33476
|
}
|
33251
33477
|
});
|
33478
|
+
|
33479
|
+
|
33480
|
+
test('rejections where the errorThrown is a string should wrap the sting in an error object', function() {
|
33481
|
+
expect(2);
|
33482
|
+
|
33483
|
+
var wasEmberTesting = Ember.testing;
|
33484
|
+
var wasOnError = Ember.onerror;
|
33485
|
+
|
33486
|
+
try {
|
33487
|
+
Ember.testing = false;
|
33488
|
+
Ember.onerror = function(error) {
|
33489
|
+
equal(error.message, actualError, 'expected the real error on the jqXHR');
|
33490
|
+
equal(error.__reason_with_error_thrown__, jqXHR, 'also retains a helpful reference to the rejection reason');
|
33491
|
+
};
|
33492
|
+
|
33493
|
+
var actualError = "OMG what really happened";
|
33494
|
+
var jqXHR = {
|
33495
|
+
errorThrown: actualError
|
33496
|
+
};
|
33497
|
+
|
33498
|
+
run(RSVP, 'reject', jqXHR);
|
33499
|
+
} finally {
|
33500
|
+
Ember.onerror = wasOnError;
|
33501
|
+
Ember.testing = wasEmberTesting;
|
33502
|
+
}
|
33503
|
+
});
|
33252
33504
|
});
|
33253
33505
|
enifed("ember-runtime/tests/ext/rsvp_test.jshint",
|
33254
33506
|
[],
|
@@ -46214,6 +46466,24 @@ enifed("ember-template-compiler.jshint",
|
|
46214
46466
|
ok(true, 'ember-template-compiler.js should pass jshint.');
|
46215
46467
|
});
|
46216
46468
|
});
|
46469
|
+
enifed("ember-template-compiler/compat.jshint",
|
46470
|
+
[],
|
46471
|
+
function() {
|
46472
|
+
"use strict";
|
46473
|
+
module('JSHint - ember-template-compiler');
|
46474
|
+
test('ember-template-compiler/compat.js should pass jshint', function() {
|
46475
|
+
ok(true, 'ember-template-compiler/compat.js should pass jshint.');
|
46476
|
+
});
|
46477
|
+
});
|
46478
|
+
enifed("ember-template-compiler/compat/precompile.jshint",
|
46479
|
+
[],
|
46480
|
+
function() {
|
46481
|
+
"use strict";
|
46482
|
+
module('JSHint - ember-template-compiler/compat');
|
46483
|
+
test('ember-template-compiler/compat/precompile.js should pass jshint', function() {
|
46484
|
+
ok(true, 'ember-template-compiler/compat/precompile.js should pass jshint.');
|
46485
|
+
});
|
46486
|
+
});
|
46217
46487
|
enifed("ember-template-compiler/plugins.jshint",
|
46218
46488
|
[],
|
46219
46489
|
function() {
|
@@ -47160,6 +47430,7 @@ enifed("ember-testing/tests/helpers_test",
|
|
47160
47430
|
jQuery(document).off('ajaxComplete');
|
47161
47431
|
});
|
47162
47432
|
Test.pendingAjaxRequests = null;
|
47433
|
+
Test.waiters = null;
|
47163
47434
|
|
47164
47435
|
// Other cleanup
|
47165
47436
|
|
@@ -47379,25 +47650,34 @@ enifed("ember-testing/tests/helpers_test",
|
|
47379
47650
|
});
|
47380
47651
|
|
47381
47652
|
test("`wait` respects registerWaiters", function() {
|
47382
|
-
expect(
|
47653
|
+
expect(3);
|
47383
47654
|
|
47384
47655
|
var counter=0;
|
47385
47656
|
function waiter() {
|
47386
47657
|
return ++counter > 2;
|
47387
47658
|
}
|
47388
47659
|
|
47660
|
+
var other=0;
|
47661
|
+
function otherWaiter() {
|
47662
|
+
return ++other > 2;
|
47663
|
+
}
|
47664
|
+
|
47389
47665
|
run(App, App.advanceReadiness);
|
47390
47666
|
Test.registerWaiter(waiter);
|
47667
|
+
Test.registerWaiter(otherWaiter);
|
47391
47668
|
|
47392
47669
|
App.testHelpers.wait().then(function() {
|
47393
47670
|
equal(waiter(), true, 'should not resolve until our waiter is ready');
|
47394
47671
|
Test.unregisterWaiter(waiter);
|
47395
|
-
equal(Test.waiters.length,
|
47672
|
+
equal(Test.waiters.length, 1, 'should not leave the waiter registered');
|
47673
|
+
other = 0;
|
47674
|
+
return App.testHelpers.wait();
|
47675
|
+
}).then(function() {
|
47676
|
+
equal(otherWaiter(), true, 'other waiter is still registered');
|
47396
47677
|
});
|
47397
47678
|
});
|
47398
47679
|
|
47399
|
-
|
47400
|
-
test("`visit` advances readiness.", function(){
|
47680
|
+
test("`visit` advances readiness.", function() {
|
47401
47681
|
expect(2);
|
47402
47682
|
|
47403
47683
|
equal(App._readinessDeferrals, 1, "App is in deferred state after setupForTesting.");
|
@@ -47436,7 +47716,7 @@ enifed("ember-testing/tests/helpers_test",
|
|
47436
47716
|
});
|
47437
47717
|
|
47438
47718
|
test("`click` triggers appropriate events in order", function() {
|
47439
|
-
expect(
|
47719
|
+
expect(5);
|
47440
47720
|
|
47441
47721
|
var click, wait, events;
|
47442
47722
|
|
@@ -47460,7 +47740,7 @@ enifed("ember-testing/tests/helpers_test",
|
|
47460
47740
|
})
|
47461
47741
|
});
|
47462
47742
|
|
47463
|
-
Ember.TEMPLATES.index = compile('{{input type="text"}} {{view view.Checkbox}} {{textarea}}');
|
47743
|
+
Ember.TEMPLATES.index = compile('{{input type="text"}} {{view view.Checkbox}} {{textarea}} <div contenteditable="true"> </div>');
|
47464
47744
|
|
47465
47745
|
run(App, App.advanceReadiness);
|
47466
47746
|
|
@@ -47488,6 +47768,13 @@ enifed("ember-testing/tests/helpers_test",
|
|
47488
47768
|
deepEqual(events,
|
47489
47769
|
['mousedown', 'focusin', 'mouseup', 'click'],
|
47490
47770
|
'fires focus events on textareas');
|
47771
|
+
}).then(function() {
|
47772
|
+
events = [];
|
47773
|
+
return click('.index-view div');
|
47774
|
+
}).then(function() {
|
47775
|
+
deepEqual(events,
|
47776
|
+
['mousedown', 'focusin', 'mouseup', 'click'],
|
47777
|
+
'fires focus events on contenteditable');
|
47491
47778
|
}).then(function() {
|
47492
47779
|
// In IE (< 8), the change event only fires when the value changes before element focused.
|
47493
47780
|
jQuery('.index-view input[type=checkbox]').focus();
|
@@ -47519,7 +47806,7 @@ enifed("ember-testing/tests/helpers_test",
|
|
47519
47806
|
|
47520
47807
|
|
47521
47808
|
test("`wait` respects registerWaiters with optional context", function() {
|
47522
|
-
expect(
|
47809
|
+
expect(3);
|
47523
47810
|
|
47524
47811
|
var obj = {
|
47525
47812
|
counter: 0,
|
@@ -47528,17 +47815,34 @@ enifed("ember-testing/tests/helpers_test",
|
|
47528
47815
|
}
|
47529
47816
|
};
|
47530
47817
|
|
47818
|
+
var other=0;
|
47819
|
+
function otherWaiter() {
|
47820
|
+
return ++other > 2;
|
47821
|
+
}
|
47822
|
+
|
47531
47823
|
run(App, App.advanceReadiness);
|
47532
47824
|
Test.registerWaiter(obj, obj.ready);
|
47825
|
+
Test.registerWaiter(otherWaiter);
|
47533
47826
|
|
47534
47827
|
App.testHelpers.wait().then(function() {
|
47535
47828
|
equal(obj.ready(), true, 'should not resolve until our waiter is ready');
|
47536
47829
|
Test.unregisterWaiter(obj, obj.ready);
|
47537
|
-
equal(Test.waiters.length,
|
47830
|
+
equal(Test.waiters.length, 1, 'should not leave the waiter registered');
|
47831
|
+
return App.testHelpers.wait();
|
47832
|
+
}).then(function() {
|
47833
|
+
equal(otherWaiter(), true, 'other waiter should still be registered');
|
47834
|
+
});
|
47835
|
+
});
|
47836
|
+
|
47837
|
+
test("`wait` does not error if routing has not begun", function() {
|
47838
|
+
expect(1);
|
47839
|
+
|
47840
|
+
App.testHelpers.wait().then(function() {
|
47841
|
+
ok(true, 'should not error without `visit`');
|
47538
47842
|
});
|
47539
47843
|
});
|
47540
47844
|
|
47541
|
-
test("`triggerEvent accepts an optional options hash without context", function(){
|
47845
|
+
test("`triggerEvent accepts an optional options hash without context", function() {
|
47542
47846
|
expect(3);
|
47543
47847
|
|
47544
47848
|
var triggerEvent, wait, event;
|
@@ -50690,17 +50994,18 @@ enifed("ember-views/tests/views/component_test.jshint",
|
|
50690
50994
|
});
|
50691
50995
|
});
|
50692
50996
|
enifed("ember-views/tests/views/container_view_test",
|
50693
|
-
["ember-metal/property_get","ember-metal/property_set","ember-metal/run_loop","ember-metal/computed","ember-runtime/controllers/controller","ember-views/system/jquery","ember-views/views/view","ember-views/views/container_view"],
|
50694
|
-
function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __dependency5__, __dependency6__, __dependency7__, __dependency8__) {
|
50997
|
+
["ember-metal/property_get","ember-metal/property_set","ember-metal/run_loop","ember-metal/computed","ember-metal/streams/utils","ember-runtime/controllers/controller","ember-views/system/jquery","ember-views/views/view","ember-views/views/container_view"],
|
50998
|
+
function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __dependency5__, __dependency6__, __dependency7__, __dependency8__, __dependency9__) {
|
50695
50999
|
"use strict";
|
50696
51000
|
var get = __dependency1__.get;
|
50697
51001
|
var set = __dependency2__.set;
|
50698
51002
|
var run = __dependency3__["default"];
|
50699
51003
|
var computed = __dependency4__.computed;
|
50700
|
-
var
|
50701
|
-
var
|
50702
|
-
var
|
50703
|
-
var
|
51004
|
+
var read = __dependency5__.read;
|
51005
|
+
var Controller = __dependency6__["default"];
|
51006
|
+
var jQuery = __dependency7__["default"];
|
51007
|
+
var View = __dependency8__["default"];
|
51008
|
+
var ContainerView = __dependency9__["default"];
|
50704
51009
|
|
50705
51010
|
var trim = jQuery.trim;
|
50706
51011
|
var container, view, otherContainer;
|
@@ -50995,8 +51300,8 @@ enifed("ember-views/tests/views/container_view_test",
|
|
50995
51300
|
equal(container.objectAt(0), mainView, "should have the currentView as the only child view");
|
50996
51301
|
equal(mainView.get('parentView'), container, "parentView is setup");
|
50997
51302
|
equal(context, container.get('context'), 'context preserved');
|
50998
|
-
equal(mainView._keywords.controller
|
50999
|
-
equal(mainView._keywords.view
|
51303
|
+
equal(read(mainView._keywords.controller), controller, 'controller keyword is setup');
|
51304
|
+
equal(read(mainView._keywords.view), mainView, 'view keyword is setup');
|
51000
51305
|
});
|
51001
51306
|
|
51002
51307
|
test("if a ContainerView is created with a currentView, it is rendered as a child view", function() {
|
@@ -51024,8 +51329,8 @@ enifed("ember-views/tests/views/container_view_test",
|
|
51024
51329
|
equal(container.objectAt(0), mainView, "should have the currentView as the only child view");
|
51025
51330
|
equal(mainView.get('parentView'), container, "parentView is setup");
|
51026
51331
|
equal(context, container.get('context'), 'context preserved');
|
51027
|
-
equal(mainView._keywords.controller
|
51028
|
-
equal(mainView._keywords.view
|
51332
|
+
equal(read(mainView._keywords.controller), controller, 'controller keyword is setup');
|
51333
|
+
equal(read(mainView._keywords.view), mainView, 'view keyword is setup');
|
51029
51334
|
});
|
51030
51335
|
|
51031
51336
|
test("if a ContainerView starts with no currentView and then one is set, the ContainerView is updated", function() {
|
@@ -51059,8 +51364,8 @@ enifed("ember-views/tests/views/container_view_test",
|
|
51059
51364
|
equal(container.objectAt(0), mainView, "should have the currentView as the only child view");
|
51060
51365
|
equal(mainView.get('parentView'), container, "parentView is setup");
|
51061
51366
|
equal(context, container.get('context'), 'context preserved');
|
51062
|
-
equal(mainView._keywords.controller
|
51063
|
-
equal(mainView._keywords.view
|
51367
|
+
equal(read(mainView._keywords.controller), controller, 'controller keyword is setup');
|
51368
|
+
equal(read(mainView._keywords.view), mainView, 'view keyword is setup');
|
51064
51369
|
});
|
51065
51370
|
|
51066
51371
|
test("if a ContainerView starts with a currentView and then is set to null, the ContainerView is updated", function() {
|
@@ -51089,8 +51394,8 @@ enifed("ember-views/tests/views/container_view_test",
|
|
51089
51394
|
equal(container.objectAt(0), mainView, "should have the currentView as the only child view");
|
51090
51395
|
equal(mainView.get('parentView'), container, "parentView is setup");
|
51091
51396
|
equal(context, container.get('context'), 'context preserved');
|
51092
|
-
equal(mainView._keywords.controller
|
51093
|
-
equal(mainView._keywords.view
|
51397
|
+
equal(read(mainView._keywords.controller), controller, 'controller keyword is setup');
|
51398
|
+
equal(read(mainView._keywords.view), mainView, 'view keyword is setup');
|
51094
51399
|
|
51095
51400
|
run(function() {
|
51096
51401
|
set(container, 'currentView', null);
|
@@ -51126,8 +51431,8 @@ enifed("ember-views/tests/views/container_view_test",
|
|
51126
51431
|
equal(container.objectAt(0), mainView, "should have the currentView as the only child view");
|
51127
51432
|
equal(mainView.get('parentView'), container, "parentView is setup");
|
51128
51433
|
equal(context, container.get('context'), 'context preserved');
|
51129
|
-
equal(mainView._keywords.controller
|
51130
|
-
equal(mainView._keywords.view
|
51434
|
+
equal(read(mainView._keywords.controller), controller, 'controller keyword is setup');
|
51435
|
+
equal(read(mainView._keywords.view), mainView, 'view keyword is setup');
|
51131
51436
|
|
51132
51437
|
run(function() {
|
51133
51438
|
set(container, 'currentView', null);
|
@@ -51865,23 +52170,26 @@ enifed("ember-views/tests/views/select_test",
|
|
51865
52170
|
ok(select.$().is(":disabled"));
|
51866
52171
|
});
|
51867
52172
|
|
51868
|
-
|
51869
|
-
|
51870
|
-
|
52173
|
+
// Browsers before IE10 do not support the required property.
|
52174
|
+
if (document && ('required' in document.createElement('input'))) {
|
52175
|
+
test("should begin required if the required attribute is true", function() {
|
52176
|
+
select.set('required', true);
|
52177
|
+
append();
|
51871
52178
|
|
51872
|
-
|
51873
|
-
|
52179
|
+
ok(select.element.required, 'required property is truthy');
|
52180
|
+
});
|
51874
52181
|
|
51875
|
-
|
51876
|
-
|
51877
|
-
|
52182
|
+
test("should become required if the required attribute is changed", function() {
|
52183
|
+
append();
|
52184
|
+
ok(!select.element.required, 'required property is falsy');
|
51878
52185
|
|
51879
|
-
|
51880
|
-
|
52186
|
+
run(function() { select.set('required', true); });
|
52187
|
+
ok(select.element.required, 'required property is truthy');
|
51881
52188
|
|
51882
|
-
|
51883
|
-
|
51884
|
-
|
52189
|
+
run(function() { select.set('required', false); });
|
52190
|
+
ok(!select.element.required, 'required property is falsy');
|
52191
|
+
});
|
52192
|
+
}
|
51885
52193
|
|
51886
52194
|
test("should become disabled if the disabled attribute is changed", function() {
|
51887
52195
|
append();
|
@@ -52922,7 +53230,7 @@ enifed("ember-views/tests/views/text_field_test",
|
|
52922
53230
|
}
|
52923
53231
|
});
|
52924
53232
|
|
52925
|
-
test("should become disabled if the disabled attribute is true", function() {
|
53233
|
+
test("should become disabled if the disabled attribute is true before append", function() {
|
52926
53234
|
textField.set('disabled', true);
|
52927
53235
|
append();
|
52928
53236
|
|
@@ -53887,6 +54195,21 @@ enifed("ember-views/tests/views/view/attribute_bindings_test",
|
|
53887
54195
|
ok(!view.$().attr('notNumber'), "removes notNumber attribute when NaN");
|
53888
54196
|
});
|
53889
54197
|
|
54198
|
+
test("should normalize case for attribute bindings", function() {
|
54199
|
+
view = EmberView.create({
|
54200
|
+
tagName: 'input',
|
54201
|
+
attributeBindings: ['disAbled'],
|
54202
|
+
|
54203
|
+
disAbled: true
|
54204
|
+
});
|
54205
|
+
|
54206
|
+
run(function() {
|
54207
|
+
view.createElement();
|
54208
|
+
});
|
54209
|
+
|
54210
|
+
ok(view.$().prop('disabled'), "sets property with correct case");
|
54211
|
+
});
|
54212
|
+
|
53890
54213
|
test("should update attribute bindings", function() {
|
53891
54214
|
view = EmberView.create({
|
53892
54215
|
classNameBindings: ['priority', 'isUrgent', 'isClassified:classified', 'canIgnore'],
|
@@ -65639,4 +65962,116 @@ enifed("ember/tests/routing/substates_test.jshint",
|
|
65639
65962
|
ok(true, 'ember/tests/routing/substates_test.js should pass jshint.');
|
65640
65963
|
});
|
65641
65964
|
});
|
65965
|
+
enifed("htmlbars-test-helpers",
|
65966
|
+
["exports"],
|
65967
|
+
function(__exports__) {
|
65968
|
+
"use strict";
|
65969
|
+
function equalInnerHTML(fragment, html) {
|
65970
|
+
var actualHTML = normalizeInnerHTML(fragment.innerHTML);
|
65971
|
+
QUnit.push(actualHTML === html, actualHTML, html);
|
65972
|
+
}
|
65973
|
+
|
65974
|
+
__exports__.equalInnerHTML = equalInnerHTML;function equalHTML(node, html) {
|
65975
|
+
var fragment;
|
65976
|
+
if (!node.nodeType && node.length) {
|
65977
|
+
fragment = document.createDocumentFragment();
|
65978
|
+
while (node[0]) {
|
65979
|
+
fragment.appendChild(node[0]);
|
65980
|
+
}
|
65981
|
+
} else {
|
65982
|
+
fragment = node;
|
65983
|
+
}
|
65984
|
+
|
65985
|
+
var div = document.createElement("div");
|
65986
|
+
div.appendChild(fragment.cloneNode(true));
|
65987
|
+
|
65988
|
+
equalInnerHTML(div, html);
|
65989
|
+
}
|
65990
|
+
|
65991
|
+
__exports__.equalHTML = equalHTML;// detect weird IE8 html strings
|
65992
|
+
var ie8InnerHTMLTestElement = document.createElement('div');
|
65993
|
+
ie8InnerHTMLTestElement.setAttribute('id', 'womp');
|
65994
|
+
var ie8InnerHTML = (ie8InnerHTMLTestElement.outerHTML.indexOf('id=womp') > -1);
|
65995
|
+
|
65996
|
+
// detect side-effects of cloning svg elements in IE9-11
|
65997
|
+
var ieSVGInnerHTML = (function () {
|
65998
|
+
if (!document.createElementNS) {
|
65999
|
+
return false;
|
66000
|
+
}
|
66001
|
+
var div = document.createElement('div');
|
66002
|
+
var node = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
|
66003
|
+
div.appendChild(node);
|
66004
|
+
var clone = div.cloneNode(true);
|
66005
|
+
return clone.innerHTML === '<svg xmlns="http://www.w3.org/2000/svg" />';
|
66006
|
+
})();
|
66007
|
+
|
66008
|
+
function normalizeInnerHTML(actualHTML) {
|
66009
|
+
if (ie8InnerHTML) {
|
66010
|
+
// drop newlines in IE8
|
66011
|
+
actualHTML = actualHTML.replace(/\r\n/gm, '');
|
66012
|
+
// downcase ALLCAPS tags in IE8
|
66013
|
+
actualHTML = actualHTML.replace(/<\/?[A-Z\-]+/gi, function(tag){
|
66014
|
+
return tag.toLowerCase();
|
66015
|
+
});
|
66016
|
+
// quote ids in IE8
|
66017
|
+
actualHTML = actualHTML.replace(/id=([^ >]+)/gi, function(match, id){
|
66018
|
+
return 'id="'+id+'"';
|
66019
|
+
});
|
66020
|
+
// IE8 adds ':' to some tags
|
66021
|
+
// <keygen> becomes <:keygen>
|
66022
|
+
actualHTML = actualHTML.replace(/<(\/?):([^ >]+)/gi, function(match, slash, tag){
|
66023
|
+
return '<'+slash+tag;
|
66024
|
+
});
|
66025
|
+
|
66026
|
+
// Normalize the style attribute
|
66027
|
+
actualHTML = actualHTML.replace(/style="(.+?)"/gi, function(match, val){
|
66028
|
+
return 'style="'+val.toLowerCase()+';"';
|
66029
|
+
});
|
66030
|
+
|
66031
|
+
}
|
66032
|
+
if (ieSVGInnerHTML) {
|
66033
|
+
// Replace `<svg xmlns="http://www.w3.org/2000/svg" height="50%" />` with `<svg height="50%"></svg>`, etc.
|
66034
|
+
// drop namespace attribute
|
66035
|
+
actualHTML = actualHTML.replace(/ xmlns="[^"]+"/, '');
|
66036
|
+
// replace self-closing elements
|
66037
|
+
actualHTML = actualHTML.replace(/<([^ >]+) [^\/>]*\/>/gi, function(tag, tagName) {
|
66038
|
+
return tag.slice(0, tag.length - 3) + '></' + tagName + '>';
|
66039
|
+
});
|
66040
|
+
}
|
66041
|
+
|
66042
|
+
return actualHTML;
|
66043
|
+
}
|
66044
|
+
|
66045
|
+
__exports__.normalizeInnerHTML = normalizeInnerHTML;// detect weird IE8 checked element string
|
66046
|
+
var checkedInput = document.createElement('input');
|
66047
|
+
checkedInput.setAttribute('checked', 'checked');
|
66048
|
+
var checkedInputString = checkedInput.outerHTML;
|
66049
|
+
function isCheckedInputHTML(element) {
|
66050
|
+
equal(element.outerHTML, checkedInputString);
|
66051
|
+
}
|
66052
|
+
|
66053
|
+
__exports__.isCheckedInputHTML = isCheckedInputHTML;// check which property has the node's text content
|
66054
|
+
var textProperty = document.createElement('div').textContent === undefined ? 'innerText' : 'textContent';
|
66055
|
+
function getTextContent(el) {
|
66056
|
+
// textNode
|
66057
|
+
if (el.nodeType === 3) {
|
66058
|
+
return el.nodeValue;
|
66059
|
+
} else {
|
66060
|
+
return el[textProperty];
|
66061
|
+
}
|
66062
|
+
}
|
66063
|
+
|
66064
|
+
__exports__.getTextContent = getTextContent;// IE8 does not have Object.create, so use a polyfill if needed.
|
66065
|
+
// Polyfill based on Mozilla's (MDN)
|
66066
|
+
function createObject(obj) {
|
66067
|
+
if (typeof Object.create === 'function') {
|
66068
|
+
return Object.create(obj);
|
66069
|
+
} else {
|
66070
|
+
var Temp = function() {};
|
66071
|
+
Temp.prototype = obj;
|
66072
|
+
return new Temp();
|
66073
|
+
}
|
66074
|
+
}
|
66075
|
+
__exports__.createObject = createObject;
|
66076
|
+
});
|
65642
66077
|
})();
|