ember-source 1.8.0.beta.2 → 1.8.0.beta.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/VERSION +1 -1
- data/dist/ember-runtime.js +354 -190
- data/dist/ember-tests.js +507 -64
- data/dist/ember-tests.prod.js +507 -64
- data/dist/ember.js +853 -519
- data/dist/ember.min.js +12 -12
- data/dist/ember.prod.js +851 -519
- metadata +2 -2
data/dist/ember-tests.prod.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.8.0-beta.
|
8
|
+
* @version 1.8.0-beta.3
|
9
9
|
*/
|
10
10
|
|
11
11
|
(function() {
|
@@ -13358,9 +13358,8 @@ define("ember-metal-views/tests/main_test",
|
|
13358
13358
|
["ember-metal-views/tests/test_helpers"],
|
13359
13359
|
function(__dependency1__) {
|
13360
13360
|
"use strict";
|
13361
|
-
/*globals HTMLElement */
|
13362
|
-
|
13363
13361
|
var testsFor = __dependency1__.testsFor;
|
13362
|
+
var setElementText = __dependency1__.setElementText;
|
13364
13363
|
var equalHTML = __dependency1__.equalHTML;
|
13365
13364
|
var appendTo = __dependency1__.appendTo;
|
13366
13365
|
|
@@ -13373,6 +13372,7 @@ define("ember-metal-views/tests/main_test",
|
|
13373
13372
|
}
|
13374
13373
|
});
|
13375
13374
|
|
13375
|
+
// Test the behavior of the helper createElement stub
|
13376
13376
|
test("by default, view renders as a div", function() {
|
13377
13377
|
view = {isView: true};
|
13378
13378
|
|
@@ -13380,6 +13380,7 @@ define("ember-metal-views/tests/main_test",
|
|
13380
13380
|
equalHTML('qunit-fixture', "<div></div>");
|
13381
13381
|
});
|
13382
13382
|
|
13383
|
+
// Test the behavior of the helper createElement stub
|
13383
13384
|
test("tagName can be specified", function() {
|
13384
13385
|
view = {
|
13385
13386
|
isView: true,
|
@@ -13391,6 +13392,7 @@ define("ember-metal-views/tests/main_test",
|
|
13391
13392
|
equalHTML('qunit-fixture', "<span></span>");
|
13392
13393
|
});
|
13393
13394
|
|
13395
|
+
// Test the behavior of the helper createElement stub
|
13394
13396
|
test("textContent can be specified", function() {
|
13395
13397
|
view = {
|
13396
13398
|
isView: true,
|
@@ -13402,6 +13404,7 @@ define("ember-metal-views/tests/main_test",
|
|
13402
13404
|
equalHTML('qunit-fixture', "<div>ohai <a>derp</a></div>");
|
13403
13405
|
});
|
13404
13406
|
|
13407
|
+
// Test the behavior of the helper createElement stub
|
13405
13408
|
test("innerHTML can be specified", function() {
|
13406
13409
|
view = {
|
13407
13410
|
isView: true,
|
@@ -13413,6 +13416,20 @@ define("ember-metal-views/tests/main_test",
|
|
13413
13416
|
equalHTML('qunit-fixture', "<div>ohai <a>derp</a></div>");
|
13414
13417
|
});
|
13415
13418
|
|
13419
|
+
// Test the behavior of the helper createElement stub
|
13420
|
+
test("innerHTML tr can be specified", function() {
|
13421
|
+
view = {
|
13422
|
+
isView: true,
|
13423
|
+
tagName: 'table',
|
13424
|
+
innerHTML: '<tr><td>ohai</td></tr>'
|
13425
|
+
};
|
13426
|
+
|
13427
|
+
appendTo(view);
|
13428
|
+
|
13429
|
+
equalHTML('qunit-fixture', "<table><tr><td>ohai</td></tr></table>");
|
13430
|
+
});
|
13431
|
+
|
13432
|
+
// Test the behavior of the helper createElement stub
|
13416
13433
|
test("element can be specified", function() {
|
13417
13434
|
view = {
|
13418
13435
|
isView: true,
|
@@ -13431,9 +13448,9 @@ define("ember-metal-views/tests/main_test",
|
|
13431
13448
|
isView: true,
|
13432
13449
|
|
13433
13450
|
willInsertElement: function(el) {
|
13434
|
-
ok(this.element
|
13451
|
+
ok(this.element && this.element.nodeType === 1, "We have an element");
|
13435
13452
|
equal(this.element.parentElement, null, "The element is parentless");
|
13436
|
-
this.element
|
13453
|
+
setElementText(this.element, 'you gone and done inserted that element');
|
13437
13454
|
}
|
13438
13455
|
};
|
13439
13456
|
|
@@ -13449,9 +13466,9 @@ define("ember-metal-views/tests/main_test",
|
|
13449
13466
|
isView: true,
|
13450
13467
|
|
13451
13468
|
didInsertElement: function() {
|
13452
|
-
ok(this.element
|
13469
|
+
ok(this.element && this.element.nodeType === 1, "We have an element");
|
13453
13470
|
equal(this.element.parentElement, document.getElementById('qunit-fixture'), "The element's parent is correct");
|
13454
|
-
this.element
|
13471
|
+
setElementText(this.element, 'you gone and done inserted that element');
|
13455
13472
|
}
|
13456
13473
|
};
|
13457
13474
|
|
@@ -13501,9 +13518,9 @@ define("ember-metal-views/tests/test_helpers",
|
|
13501
13518
|
var renderer;
|
13502
13519
|
|
13503
13520
|
function MetalRenderer () {
|
13504
|
-
MetalRenderer
|
13521
|
+
MetalRenderer._super.call(this);
|
13505
13522
|
}
|
13506
|
-
MetalRenderer
|
13523
|
+
MetalRenderer._super = Renderer;
|
13507
13524
|
MetalRenderer.prototype = Object.create(Renderer.prototype, {
|
13508
13525
|
constructor: {
|
13509
13526
|
value: MetalRenderer,
|
@@ -13518,12 +13535,12 @@ define("ember-metal-views/tests/test_helpers",
|
|
13518
13535
|
};
|
13519
13536
|
MetalRenderer.prototype.willCreateElement = function(view) {
|
13520
13537
|
};
|
13521
|
-
MetalRenderer.prototype.createElement = function (view) {
|
13538
|
+
MetalRenderer.prototype.createElement = function (view, contextualElement) {
|
13522
13539
|
var el;
|
13523
13540
|
if (view.element) {
|
13524
13541
|
el = view.element;
|
13525
13542
|
} else {
|
13526
|
-
el = view.element =
|
13543
|
+
el = view.element = this._dom.createElement(view.tagName || 'div');
|
13527
13544
|
}
|
13528
13545
|
var classNames = view.classNames;
|
13529
13546
|
if (typeof classNames === 'string') {
|
@@ -13546,9 +13563,12 @@ define("ember-metal-views/tests/test_helpers",
|
|
13546
13563
|
if (view.childViews) {
|
13547
13564
|
view._childViewsMorph = this._dom.createMorph(el, null, null);
|
13548
13565
|
} else if (view.textContent) {
|
13549
|
-
el
|
13566
|
+
setElementText(el, view.textContent);
|
13550
13567
|
} else if (view.innerHTML) {
|
13551
|
-
|
13568
|
+
var nodes = this._dom.parseHTML(view.innerHTML, el);
|
13569
|
+
while (nodes[0]) {
|
13570
|
+
el.appendChild(nodes[0]);
|
13571
|
+
}
|
13552
13572
|
}
|
13553
13573
|
return el;
|
13554
13574
|
};
|
@@ -13586,15 +13606,41 @@ define("ember-metal-views/tests/test_helpers",
|
|
13586
13606
|
return renderer;
|
13587
13607
|
}
|
13588
13608
|
|
13589
|
-
__exports__.subject = subject;
|
13609
|
+
__exports__.subject = subject;var supportsTextContent = ('textContent' in document.createElement('div'));
|
13610
|
+
var setElementText;
|
13611
|
+
if (supportsTextContent) {
|
13612
|
+
setElementText = function setElementText(element, text) {
|
13613
|
+
element.textContent = text;
|
13614
|
+
};
|
13615
|
+
} else {
|
13616
|
+
setElementText = function setElementText(element, text) {
|
13617
|
+
element.innerText = text;
|
13618
|
+
};
|
13619
|
+
}
|
13620
|
+
__exports__.setElementText = setElementText;
|
13621
|
+
|
13622
|
+
function equalHTML(element, expectedHTML, message) {
|
13590
13623
|
var html;
|
13591
13624
|
if (typeof element === 'string') {
|
13592
13625
|
html = document.getElementById(element).innerHTML;
|
13593
13626
|
} else {
|
13594
|
-
|
13627
|
+
if (element instanceof window.NodeList) {
|
13628
|
+
var fragment = document.createElement('div');
|
13629
|
+
while (element[0]) {
|
13630
|
+
fragment.appendChild(element[0]);
|
13631
|
+
}
|
13632
|
+
html = fragment.innerHTML;
|
13633
|
+
} else {
|
13634
|
+
html = element.outerHTML;
|
13635
|
+
}
|
13595
13636
|
}
|
13596
13637
|
|
13597
13638
|
var actualHTML = html.replace(/ id="[^"]+"/gmi, '');
|
13639
|
+
actualHTML = actualHTML.replace(/<\/?([A-Z]+)/gi, function(tag){
|
13640
|
+
return tag.toLowerCase();
|
13641
|
+
});
|
13642
|
+
actualHTML = actualHTML.replace(/\r\n/gm, '');
|
13643
|
+
actualHTML = actualHTML.replace(/ $/, '');
|
13598
13644
|
equal(actualHTML, expectedHTML, message || "HTML matches");
|
13599
13645
|
}
|
13600
13646
|
|
@@ -17456,7 +17502,13 @@ define("ember-metal/tests/map_test",
|
|
17456
17502
|
mapHasLength(entries.length, theMap);
|
17457
17503
|
};
|
17458
17504
|
|
17459
|
-
|
17505
|
+
var unboundThis;
|
17506
|
+
|
17507
|
+
(function() {
|
17508
|
+
unboundThis = this;
|
17509
|
+
}());
|
17510
|
+
|
17511
|
+
test("set", function() {
|
17460
17512
|
map.set(object, "winning");
|
17461
17513
|
map.set(number, "winning");
|
17462
17514
|
map.set(string, "winning");
|
@@ -17477,8 +17529,46 @@ define("ember-metal/tests/map_test",
|
|
17477
17529
|
[ string, "losing" ]
|
17478
17530
|
]);
|
17479
17531
|
|
17480
|
-
equal(map.has("nope"), false);
|
17481
|
-
equal(map.has({}), false);
|
17532
|
+
equal(map.has("nope"), false, "expected the key `nope` to not be present");
|
17533
|
+
equal(map.has({}), false, "expected they key `{}` to not be present");
|
17534
|
+
});
|
17535
|
+
|
17536
|
+
test("set chaining", function() {
|
17537
|
+
map.set(object, "winning").
|
17538
|
+
set(number, "winning").
|
17539
|
+
set(string, "winning");
|
17540
|
+
|
17541
|
+
mapHasEntries([
|
17542
|
+
[ object, "winning" ],
|
17543
|
+
[ number, "winning" ],
|
17544
|
+
[ string, "winning" ]
|
17545
|
+
]);
|
17546
|
+
|
17547
|
+
map.set(object, "losing").
|
17548
|
+
set(number, "losing").
|
17549
|
+
set(string, "losing");
|
17550
|
+
|
17551
|
+
mapHasEntries([
|
17552
|
+
[ object, "losing" ],
|
17553
|
+
[ number, "losing" ],
|
17554
|
+
[ string, "losing" ]
|
17555
|
+
]);
|
17556
|
+
|
17557
|
+
equal(map.has("nope"), false, "expected the key `nope` to not be present");
|
17558
|
+
equal(map.has({}), false, "expected they key `{}` to not be present");
|
17559
|
+
});
|
17560
|
+
|
17561
|
+
test("with key with undefined value", function() {
|
17562
|
+
map.set("foo", undefined);
|
17563
|
+
|
17564
|
+
map.forEach(function(value, key) {
|
17565
|
+
equal(value, undefined);
|
17566
|
+
equal(key, 'foo');
|
17567
|
+
});
|
17568
|
+
|
17569
|
+
ok(map.has("foo"), "has key foo, even with undefined value");
|
17570
|
+
|
17571
|
+
equal(map.size, 1);
|
17482
17572
|
});
|
17483
17573
|
|
17484
17574
|
test("remove", function() {
|
@@ -17540,37 +17630,169 @@ define("ember-metal/tests/map_test",
|
|
17540
17630
|
mapHasEntries([ ], map2);
|
17541
17631
|
});
|
17542
17632
|
|
17543
|
-
test("
|
17633
|
+
test("size", function() {
|
17544
17634
|
//Add a key twice
|
17545
|
-
equal(map.
|
17635
|
+
equal(map.size, 0);
|
17546
17636
|
map.set(string, "a string");
|
17547
|
-
equal(map.
|
17637
|
+
equal(map.size, 1);
|
17548
17638
|
map.set(string, "the same string");
|
17549
|
-
equal(map.
|
17639
|
+
equal(map.size, 1);
|
17550
17640
|
|
17551
17641
|
//Add another
|
17552
17642
|
map.set(number, "a number");
|
17553
|
-
equal(map.
|
17643
|
+
equal(map.size, 2);
|
17554
17644
|
|
17555
17645
|
//Remove one that doesn't exist
|
17556
17646
|
map.remove('does not exist');
|
17557
|
-
equal(map.
|
17647
|
+
equal(map.size, 2);
|
17558
17648
|
|
17559
17649
|
//Check copy
|
17560
17650
|
var copy = map.copy();
|
17561
|
-
equal(copy.
|
17651
|
+
equal(copy.size, 2);
|
17562
17652
|
|
17563
17653
|
//Remove a key twice
|
17564
17654
|
map.remove(number);
|
17565
|
-
equal(map.
|
17655
|
+
equal(map.size, 1);
|
17566
17656
|
map.remove(number);
|
17567
|
-
equal(map.
|
17657
|
+
equal(map.size, 1);
|
17568
17658
|
|
17569
17659
|
//Remove the last key
|
17570
17660
|
map.remove(string);
|
17571
|
-
equal(map.
|
17661
|
+
equal(map.size, 0);
|
17572
17662
|
map.remove(string);
|
17573
|
-
equal(map.
|
17663
|
+
equal(map.size, 0);
|
17664
|
+
});
|
17665
|
+
|
17666
|
+
test("forEach without proper callback", function() {
|
17667
|
+
QUnit["throws"](function() {
|
17668
|
+
map.forEach();
|
17669
|
+
}, '[object Undefined] is not a function');
|
17670
|
+
|
17671
|
+
QUnit["throws"](function() {
|
17672
|
+
map.forEach(undefined);
|
17673
|
+
}, '[object Undefined] is not a function');
|
17674
|
+
|
17675
|
+
QUnit["throws"](function() {
|
17676
|
+
map.forEach(1);
|
17677
|
+
}, '[object Number] is not a function');
|
17678
|
+
|
17679
|
+
QUnit["throws"](function() {
|
17680
|
+
map.forEach({});
|
17681
|
+
}, '[object Object] is not a function');
|
17682
|
+
});
|
17683
|
+
|
17684
|
+
test("forEach basic", function() {
|
17685
|
+
map.set("a", 1);
|
17686
|
+
map.set("b", 2);
|
17687
|
+
map.set("c", 3);
|
17688
|
+
|
17689
|
+
var iteration = 0;
|
17690
|
+
|
17691
|
+
var expectations = [
|
17692
|
+
{ value: 1, key: "a", context: unboundThis },
|
17693
|
+
{ value: 2, key: "b", context: unboundThis },
|
17694
|
+
{ value: 3, key: "c", context: unboundThis },
|
17695
|
+
];
|
17696
|
+
|
17697
|
+
map.forEach(function(value, key) {
|
17698
|
+
var expectation = expectations[iteration];
|
17699
|
+
|
17700
|
+
equal(value, expectation.value, 'value should be correct');
|
17701
|
+
equal(key, expectation.key, 'key should be correct');
|
17702
|
+
equal(this, expectation.context, 'context should be as if it was unbound');
|
17703
|
+
|
17704
|
+
iteration++;
|
17705
|
+
});
|
17706
|
+
|
17707
|
+
equal(iteration, 3, 'expected 3 iterations');
|
17708
|
+
|
17709
|
+
});
|
17710
|
+
|
17711
|
+
test("forEach basic /w context", function() {
|
17712
|
+
map.set("a", 1);
|
17713
|
+
map.set("b", 2);
|
17714
|
+
map.set("c", 3);
|
17715
|
+
|
17716
|
+
var iteration = 0;
|
17717
|
+
var context = {};
|
17718
|
+
var expectations = [
|
17719
|
+
{ value: 1, key: "a", context: context },
|
17720
|
+
{ value: 2, key: "b", context: context },
|
17721
|
+
{ value: 3, key: "c", context: context },
|
17722
|
+
];
|
17723
|
+
|
17724
|
+
map.forEach(function(value, key) {
|
17725
|
+
var expectation = expectations[iteration];
|
17726
|
+
|
17727
|
+
equal(value, expectation.value, 'value should be correct');
|
17728
|
+
equal(key, expectation.key, 'key should be correct');
|
17729
|
+
equal(this, expectation.context, 'context should be as if it was unbound');
|
17730
|
+
|
17731
|
+
iteration++;
|
17732
|
+
|
17733
|
+
}, context);
|
17734
|
+
|
17735
|
+
equal(iteration, 3, 'expected 3 iterations');
|
17736
|
+
});
|
17737
|
+
|
17738
|
+
test("forEach basic /w deletion while enumerating", function() {
|
17739
|
+
map.set("a", 1);
|
17740
|
+
map.set("b", 2);
|
17741
|
+
map.set("c", 3);
|
17742
|
+
|
17743
|
+
var iteration = 0;
|
17744
|
+
|
17745
|
+
var expectations = [
|
17746
|
+
{ value: 1, key: "a", context: unboundThis },
|
17747
|
+
{ value: 2, key: "b", context: unboundThis }
|
17748
|
+
];
|
17749
|
+
|
17750
|
+
map.forEach(function(value, key) {
|
17751
|
+
if (iteration === 0) {
|
17752
|
+
map["delete"]("c");
|
17753
|
+
}
|
17754
|
+
|
17755
|
+
var expectation = expectations[iteration];
|
17756
|
+
|
17757
|
+
equal(value, expectation.value, 'value should be correct');
|
17758
|
+
equal(key, expectation.key, 'key should be correct');
|
17759
|
+
equal(this, expectation.context, 'context should be as if it was unbound');
|
17760
|
+
|
17761
|
+
iteration++;
|
17762
|
+
});
|
17763
|
+
|
17764
|
+
equal(iteration, 2, 'expected 3 iterations');
|
17765
|
+
});
|
17766
|
+
|
17767
|
+
test("forEach basic /w addition while enumerating", function() {
|
17768
|
+
map.set("a", 1);
|
17769
|
+
map.set("b", 2);
|
17770
|
+
map.set("c", 3);
|
17771
|
+
|
17772
|
+
var iteration = 0;
|
17773
|
+
|
17774
|
+
var expectations = [
|
17775
|
+
{ value: 1, key: "a", context: unboundThis },
|
17776
|
+
{ value: 2, key: "b", context: unboundThis },
|
17777
|
+
{ value: 3, key: "c", context: unboundThis },
|
17778
|
+
{ value: 4, key: "d", context: unboundThis },
|
17779
|
+
];
|
17780
|
+
|
17781
|
+
map.forEach(function(value, key) {
|
17782
|
+
if (iteration === 0) {
|
17783
|
+
map.set('d', 4);
|
17784
|
+
}
|
17785
|
+
|
17786
|
+
var expectation = expectations[iteration];
|
17787
|
+
|
17788
|
+
equal(value, expectation.value, 'value should be correct');
|
17789
|
+
equal(key, expectation.key, 'key should be correct');
|
17790
|
+
equal(this, expectation.context, 'context should be as if it was unbound');
|
17791
|
+
|
17792
|
+
iteration++;
|
17793
|
+
});
|
17794
|
+
|
17795
|
+
equal(iteration, 4, 'expected 3 iterations');
|
17574
17796
|
});
|
17575
17797
|
}
|
17576
17798
|
|
@@ -21631,19 +21853,8 @@ define("ember-metal/tests/utils/meta_test",
|
|
21631
21853
|
});
|
21632
21854
|
|
21633
21855
|
QUnit.module("Ember.meta enumerable");
|
21634
|
-
|
21635
|
-
// This is primarily for older browsers such as IE8
|
21856
|
+
|
21636
21857
|
if (canDefineNonEnumerableProperties) {
|
21637
|
-
if (Ember.imports.jQuery) {
|
21638
|
-
test("meta is not jQuery.isPlainObject", function () {
|
21639
|
-
var proto, obj;
|
21640
|
-
proto = {foo: 'bar'};
|
21641
|
-
equal(jQuery.isPlainObject(meta(proto)), false, 'meta should not be isPlainObject when meta property cannot be marked as enumerable: false');
|
21642
|
-
obj = create(proto);
|
21643
|
-
equal(jQuery.isPlainObject(meta(obj)), false, 'meta should not be isPlainObject when meta property cannot be marked as enumerable: false');
|
21644
|
-
});
|
21645
|
-
}
|
21646
|
-
} else {
|
21647
21858
|
test("meta is not enumerable", function () {
|
21648
21859
|
var proto, obj, props, prop;
|
21649
21860
|
proto = {foo: 'bar'};
|
@@ -21664,6 +21875,18 @@ define("ember-metal/tests/utils/meta_test",
|
|
21664
21875
|
}
|
21665
21876
|
}
|
21666
21877
|
});
|
21878
|
+
} else {
|
21879
|
+
// Tests fix for https://github.com/emberjs/ember.js/issues/344
|
21880
|
+
// This is primarily for older browsers such as IE8
|
21881
|
+
if (Ember.imports.jQuery) {
|
21882
|
+
test("meta is not jQuery.isPlainObject", function () {
|
21883
|
+
var proto, obj;
|
21884
|
+
proto = {foo: 'bar'};
|
21885
|
+
equal(jQuery.isPlainObject(meta(proto)), false, 'meta should not be isPlainObject when meta property cannot be marked as enumerable: false');
|
21886
|
+
obj = create(proto);
|
21887
|
+
equal(jQuery.isPlainObject(meta(obj)), false, 'meta should not be isPlainObject when meta property cannot be marked as enumerable: false');
|
21888
|
+
});
|
21889
|
+
}
|
21667
21890
|
}
|
21668
21891
|
});
|
21669
21892
|
define("ember-metal/tests/utils/meta_test.jshint",
|
@@ -22713,7 +22936,7 @@ define("ember-routing-handlebars/tests/helpers/action_test",
|
|
22713
22936
|
boundText: "inner",
|
22714
22937
|
truthy: true,
|
22715
22938
|
obj: {},
|
22716
|
-
layout: EmberHandlebars.compile("<
|
22939
|
+
layout: EmberHandlebars.compile("<div>{{boundText}}</div><div>{{#if truthy}}{{#with obj}}{{yield}}{{/with}}{{/if}}</div>")
|
22717
22940
|
});
|
22718
22941
|
|
22719
22942
|
view = EmberView.create({
|
@@ -22729,7 +22952,7 @@ define("ember-routing-handlebars/tests/helpers/action_test",
|
|
22729
22952
|
boundText: 'insideWith'
|
22730
22953
|
}
|
22731
22954
|
},
|
22732
|
-
template: EmberHandlebars.compile('{{#with obj}}{{#if truthy}}{{#view component}}{{#if truthy}}<
|
22955
|
+
template: EmberHandlebars.compile('{{#with obj}}{{#if truthy}}{{#view component}}{{#if truthy}}<div {{action "wat"}} class="wat">{{boundText}}</div>{{/if}}{{/view}}{{/if}}{{/with}}')
|
22733
22956
|
});
|
22734
22957
|
|
22735
22958
|
appendView();
|
@@ -24602,7 +24825,7 @@ define("ember-routing-handlebars/tests/helpers/render_test",
|
|
24602
24825
|
run(function() {
|
24603
24826
|
view.connectOutlet('main', EmberView.create({
|
24604
24827
|
controller: controller.create(),
|
24605
|
-
template: compile("<
|
24828
|
+
template: compile("<div>1{{render 'home'}}</div>")
|
24606
24829
|
}));
|
24607
24830
|
});
|
24608
24831
|
|
@@ -24611,7 +24834,7 @@ define("ember-routing-handlebars/tests/helpers/render_test",
|
|
24611
24834
|
run(function() {
|
24612
24835
|
view.connectOutlet('main', EmberView.create({
|
24613
24836
|
controller: controller.create(),
|
24614
|
-
template: compile("<
|
24837
|
+
template: compile("<div>2{{render 'home'}}</div>")
|
24615
24838
|
}));
|
24616
24839
|
});
|
24617
24840
|
|
@@ -40318,8 +40541,8 @@ define("ember-runtime/tests/system/object/computed_test.jshint",
|
|
40318
40541
|
});
|
40319
40542
|
});
|
40320
40543
|
define("ember-runtime/tests/system/object/create_test",
|
40321
|
-
["ember-metal/core","ember-metal/property_get","ember-metal/property_set","ember-metal/utils","ember-metal/computed","ember-metal/mixin","ember-metal/run_loop","ember-metal/events","ember-runtime/system/object"],
|
40322
|
-
function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __dependency5__, __dependency6__, __dependency7__, __dependency8__, __dependency9__) {
|
40544
|
+
["ember-metal/core","ember-metal/property_get","ember-metal/property_set","ember-metal/utils","ember-metal/computed","ember-metal/mixin","ember-metal/run_loop","ember-metal/events","ember-runtime/system/object","ember-metal/keys"],
|
40545
|
+
function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __dependency5__, __dependency6__, __dependency7__, __dependency8__, __dependency9__, __dependency10__) {
|
40323
40546
|
"use strict";
|
40324
40547
|
var Ember = __dependency1__["default"];
|
40325
40548
|
var get = __dependency2__.get;
|
@@ -40332,6 +40555,7 @@ define("ember-runtime/tests/system/object/create_test",
|
|
40332
40555
|
var run = __dependency7__["default"];
|
40333
40556
|
var on = __dependency8__.on;
|
40334
40557
|
var EmberObject = __dependency9__["default"];
|
40558
|
+
var keys = __dependency10__["default"];
|
40335
40559
|
|
40336
40560
|
var moduleOptions, originalLookup;
|
40337
40561
|
|
@@ -41388,6 +41612,36 @@ define("ember-runtime/tests/system/object/observer_test",
|
|
41388
41612
|
equal(get(obj1, 'count'), 1, 'should not invoke again');
|
41389
41613
|
equal(get(obj2, 'count'), 1, 'should invoke observer on obj2');
|
41390
41614
|
});
|
41615
|
+
|
41616
|
+
testBoth('chain observer on class that has a reference to an uninitialized object will finish chains that reference it', function(get, set) {
|
41617
|
+
var changed = false;
|
41618
|
+
|
41619
|
+
var ChildClass = EmberObject.extend({
|
41620
|
+
parent: null,
|
41621
|
+
parentOneTwoDidChange: observer('parent.one.two', function() {
|
41622
|
+
changed = true;
|
41623
|
+
})
|
41624
|
+
});
|
41625
|
+
|
41626
|
+
var ParentClass = EmberObject.extend({
|
41627
|
+
one: {
|
41628
|
+
two: "old"
|
41629
|
+
},
|
41630
|
+
init: function () {
|
41631
|
+
this.child = ChildClass.create({
|
41632
|
+
parent: this
|
41633
|
+
});
|
41634
|
+
}
|
41635
|
+
});
|
41636
|
+
|
41637
|
+
var parent = new ParentClass();
|
41638
|
+
|
41639
|
+
equal(changed, false, 'precond');
|
41640
|
+
|
41641
|
+
parent.set('one.two', 'new');
|
41642
|
+
|
41643
|
+
equal(changed, true, 'child should have been notified of change to path');
|
41644
|
+
});
|
41391
41645
|
});
|
41392
41646
|
define("ember-runtime/tests/system/object/observer_test.jshint",
|
41393
41647
|
[],
|
@@ -45428,9 +45682,28 @@ define("ember-views/tests/system/render_buffer_test",
|
|
45428
45682
|
//
|
45429
45683
|
QUnit.module("RenderBuffer");
|
45430
45684
|
|
45431
|
-
test("RenderBuffers
|
45685
|
+
test("RenderBuffers raise a deprecation warning without a contextualElement", function() {
|
45432
45686
|
var buffer = new RenderBuffer('div');
|
45433
45687
|
buffer.generateElement();
|
45688
|
+
expectDeprecation(function(){
|
45689
|
+
var el = buffer.element();
|
45690
|
+
equal(el.tagName.toLowerCase(), 'div');
|
45691
|
+
}, /buffer.element expects a contextualElement to exist/);
|
45692
|
+
});
|
45693
|
+
|
45694
|
+
test("reset RenderBuffers raise a deprecation warning without a contextualElement", function() {
|
45695
|
+
var buffer = new RenderBuffer('div', document.body);
|
45696
|
+
buffer.reset('span');
|
45697
|
+
buffer.generateElement();
|
45698
|
+
expectDeprecation(function(){
|
45699
|
+
var el = buffer.element();
|
45700
|
+
equal(el.tagName.toLowerCase(), 'span');
|
45701
|
+
}, /buffer.element expects a contextualElement to exist/);
|
45702
|
+
});
|
45703
|
+
|
45704
|
+
test("RenderBuffers combine strings", function() {
|
45705
|
+
var buffer = new RenderBuffer('div', document.body);
|
45706
|
+
buffer.generateElement();
|
45434
45707
|
|
45435
45708
|
buffer.push('a');
|
45436
45709
|
buffer.push('b');
|
@@ -45442,7 +45715,7 @@ define("ember-views/tests/system/render_buffer_test",
|
|
45442
45715
|
|
45443
45716
|
test("value of 0 is included in output", function() {
|
45444
45717
|
var buffer, el;
|
45445
|
-
buffer = new RenderBuffer('input');
|
45718
|
+
buffer = new RenderBuffer('input', document.body);
|
45446
45719
|
buffer.prop('value', 0);
|
45447
45720
|
buffer.generateElement();
|
45448
45721
|
el = buffer.element();
|
@@ -45450,7 +45723,7 @@ define("ember-views/tests/system/render_buffer_test",
|
|
45450
45723
|
});
|
45451
45724
|
|
45452
45725
|
test("prevents XSS injection via `id`", function() {
|
45453
|
-
var buffer = new RenderBuffer('div');
|
45726
|
+
var buffer = new RenderBuffer('div', document.body);
|
45454
45727
|
|
45455
45728
|
buffer.id('hacked" megahax="yes');
|
45456
45729
|
buffer.generateElement();
|
@@ -45460,7 +45733,7 @@ define("ember-views/tests/system/render_buffer_test",
|
|
45460
45733
|
});
|
45461
45734
|
|
45462
45735
|
test("prevents XSS injection via `attr`", function() {
|
45463
|
-
var buffer = new RenderBuffer('div');
|
45736
|
+
var buffer = new RenderBuffer('div', document.body);
|
45464
45737
|
|
45465
45738
|
buffer.attr('id', 'trololol" onmouseover="pwn()');
|
45466
45739
|
buffer.attr('class', "hax><img src=\"trollface.png\"");
|
@@ -45474,7 +45747,7 @@ define("ember-views/tests/system/render_buffer_test",
|
|
45474
45747
|
});
|
45475
45748
|
|
45476
45749
|
test("prevents XSS injection via `addClass`", function() {
|
45477
|
-
var buffer = new RenderBuffer('div');
|
45750
|
+
var buffer = new RenderBuffer('div', document.body);
|
45478
45751
|
|
45479
45752
|
buffer.addClass('megahax" xss="true');
|
45480
45753
|
buffer.generateElement();
|
@@ -45484,7 +45757,7 @@ define("ember-views/tests/system/render_buffer_test",
|
|
45484
45757
|
});
|
45485
45758
|
|
45486
45759
|
test("prevents XSS injection via `style`", function() {
|
45487
|
-
var buffer = new RenderBuffer('div');
|
45760
|
+
var buffer = new RenderBuffer('div', document.body);
|
45488
45761
|
|
45489
45762
|
buffer.style('color', 'blue;" xss="true" style="color:red');
|
45490
45763
|
buffer.generateElement();
|
@@ -45503,25 +45776,25 @@ define("ember-views/tests/system/render_buffer_test",
|
|
45503
45776
|
});
|
45504
45777
|
|
45505
45778
|
test("prevents XSS injection via `tagName`", function() {
|
45506
|
-
var buffer = new RenderBuffer('cool-div><div xss="true"');
|
45779
|
+
var buffer = new RenderBuffer('cool-div><div xss="true"', document.body);
|
45507
45780
|
try {
|
45508
45781
|
buffer.generateElement();
|
45509
|
-
equal(buffer.
|
45782
|
+
equal(buffer.element().childNodes.length, 0, 'no extra nodes created');
|
45510
45783
|
} catch (e) {
|
45511
45784
|
ok(true, 'dom exception');
|
45512
45785
|
}
|
45513
45786
|
});
|
45514
45787
|
|
45515
45788
|
test("handles null props - Issue #2019", function() {
|
45516
|
-
var buffer = new RenderBuffer('div');
|
45789
|
+
var buffer = new RenderBuffer('div', document.body);
|
45517
45790
|
|
45518
45791
|
buffer.prop('value', null);
|
45519
45792
|
buffer.generateElement();
|
45520
|
-
equal(buffer.
|
45793
|
+
equal(buffer.element().tagName, 'DIV', 'div exists');
|
45521
45794
|
});
|
45522
45795
|
|
45523
45796
|
test("handles browsers like Firefox < 11 that don't support outerHTML Issue #1952", function() {
|
45524
|
-
var buffer = new RenderBuffer('div');
|
45797
|
+
var buffer = new RenderBuffer('div', document.body);
|
45525
45798
|
buffer.generateElement();
|
45526
45799
|
// Make sure element.outerHTML is falsy to trigger the fallback.
|
45527
45800
|
var elementStub = '<div></div>';
|
@@ -45531,20 +45804,78 @@ define("ember-views/tests/system/render_buffer_test",
|
|
45531
45804
|
});
|
45532
45805
|
|
45533
45806
|
test("lets `setClasses` and `addClass` work together", function() {
|
45534
|
-
var buffer = new RenderBuffer('div');
|
45807
|
+
var buffer = new RenderBuffer('div', document.body);
|
45535
45808
|
buffer.setClasses(['foo', 'bar']);
|
45536
45809
|
buffer.addClass('baz');
|
45537
45810
|
buffer.generateElement();
|
45538
45811
|
|
45539
45812
|
var el = buffer.element();
|
45540
|
-
equal(el.tagName
|
45813
|
+
equal(el.tagName, 'DIV');
|
45541
45814
|
equal(el.getAttribute('class'), 'foo bar baz');
|
45542
45815
|
});
|
45543
45816
|
|
45817
|
+
test("generates text and a div and text", function() {
|
45818
|
+
var div = document.createElement('div');
|
45819
|
+
var buffer = new RenderBuffer(undefined, div);
|
45820
|
+
buffer.buffer = 'Howdy<div>Nick</div>Cage';
|
45821
|
+
|
45822
|
+
var el = buffer.element();
|
45823
|
+
equal(el.childNodes[0].data, 'Howdy');
|
45824
|
+
equal(el.childNodes[1].tagName, 'DIV');
|
45825
|
+
equal(el.childNodes[1].childNodes[0].data, 'Nick');
|
45826
|
+
equal(el.childNodes[2].data, 'Cage');
|
45827
|
+
});
|
45828
|
+
|
45829
|
+
|
45830
|
+
test("generates a tr from a tr innerString", function() {
|
45831
|
+
var table = document.createElement('table');
|
45832
|
+
var buffer = new RenderBuffer(undefined, table);
|
45833
|
+
buffer.buffer = '<tr></tr>';
|
45834
|
+
|
45835
|
+
var el = buffer.element();
|
45836
|
+
equal(el.childNodes[0].tagName.toLowerCase(), 'tr');
|
45837
|
+
});
|
45838
|
+
|
45839
|
+
test("generates a tr from a tr innerString with leading <script", function() {
|
45840
|
+
var table = document.createElement('table');
|
45841
|
+
var buffer = new RenderBuffer(undefined, table);
|
45842
|
+
buffer.buffer = '<script></script><tr></tr>';
|
45843
|
+
|
45844
|
+
var el = buffer.element();
|
45845
|
+
equal(el.childNodes[1].tagName.toLowerCase(), 'tr');
|
45846
|
+
});
|
45847
|
+
|
45848
|
+
test("generates a tr from a tr innerString with leading comment", function() {
|
45849
|
+
var table = document.createElement('table');
|
45850
|
+
var buffer = new RenderBuffer(undefined, table);
|
45851
|
+
buffer.buffer = '<!-- blargh! --><tr></tr>';
|
45852
|
+
|
45853
|
+
var el = buffer.element();
|
45854
|
+
equal(el.childNodes[1].tagName, 'TR');
|
45855
|
+
});
|
45856
|
+
|
45857
|
+
test("generates a tbody from a tbody innerString", function() {
|
45858
|
+
var table = document.createElement('table');
|
45859
|
+
var buffer = new RenderBuffer(undefined, table);
|
45860
|
+
buffer.buffer = '<tbody><tr></tr></tbody>';
|
45861
|
+
|
45862
|
+
var el = buffer.element();
|
45863
|
+
equal(el.childNodes[0].tagName, 'TBODY');
|
45864
|
+
});
|
45865
|
+
|
45866
|
+
test("generates a col from a col innerString", function() {
|
45867
|
+
var table = document.createElement('table');
|
45868
|
+
var buffer = new RenderBuffer(undefined, table);
|
45869
|
+
buffer.buffer = '<col></col>';
|
45870
|
+
|
45871
|
+
var el = buffer.element();
|
45872
|
+
equal(el.childNodes[0].tagName, 'COL');
|
45873
|
+
});
|
45874
|
+
|
45544
45875
|
QUnit.module("RenderBuffer - without tagName");
|
45545
45876
|
|
45546
45877
|
test("It is possible to create a RenderBuffer without a tagName", function() {
|
45547
|
-
var buffer = new RenderBuffer();
|
45878
|
+
var buffer = new RenderBuffer(undefined, document.body);
|
45548
45879
|
buffer.push('a');
|
45549
45880
|
buffer.push('b');
|
45550
45881
|
buffer.push('c');
|
@@ -45559,7 +45890,7 @@ define("ember-views/tests/system/render_buffer_test",
|
|
45559
45890
|
QUnit.module("RenderBuffer#element");
|
45560
45891
|
|
45561
45892
|
test("properly handles old IE's zero-scope bug", function() {
|
45562
|
-
var buffer = new RenderBuffer('div');
|
45893
|
+
var buffer = new RenderBuffer('div', document.body);
|
45563
45894
|
buffer.generateElement();
|
45564
45895
|
buffer.push('<script></script>foo');
|
45565
45896
|
|
@@ -48794,13 +49125,14 @@ define("ember-views/tests/views/view/create_child_view_test.jshint",
|
|
48794
49125
|
});
|
48795
49126
|
});
|
48796
49127
|
define("ember-views/tests/views/view/create_element_test",
|
48797
|
-
["ember-metal/property_get","ember-metal/run_loop","ember-views/views/view","ember-views/views/container_view"],
|
48798
|
-
function(__dependency1__, __dependency2__, __dependency3__, __dependency4__) {
|
49128
|
+
["ember-metal/property_get","ember-metal/run_loop","ember-views/views/view","ember-views/views/container_view","ember-metal-views/tests/test_helpers"],
|
49129
|
+
function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __dependency5__) {
|
48799
49130
|
"use strict";
|
48800
49131
|
var get = __dependency1__.get;
|
48801
49132
|
var run = __dependency2__["default"];
|
48802
49133
|
var EmberView = __dependency3__["default"];
|
48803
49134
|
var ContainerView = __dependency4__["default"];
|
49135
|
+
var equalHTML = __dependency5__.equalHTML;
|
48804
49136
|
|
48805
49137
|
var view;
|
48806
49138
|
|
@@ -48845,6 +49177,61 @@ define("ember-views/tests/views/view/create_element_test",
|
|
48845
49177
|
equal(elem.tagName.toString().toLowerCase(), 'span', 'has tagName from view');
|
48846
49178
|
});
|
48847
49179
|
|
49180
|
+
test("calls render and parses the buffer string in the right context", function() {
|
49181
|
+
view = ContainerView.create({
|
49182
|
+
tagName: 'table',
|
49183
|
+
childViews: [ EmberView.create({
|
49184
|
+
tagName: '',
|
49185
|
+
render: function(buffer) {
|
49186
|
+
// Emulate a metamorph
|
49187
|
+
buffer.push("<script></script><tr><td>snorfblax</td></tr>");
|
49188
|
+
}
|
49189
|
+
})]
|
49190
|
+
});
|
49191
|
+
|
49192
|
+
equal(get(view, 'element'), null, 'precondition - has no element');
|
49193
|
+
run(function() {
|
49194
|
+
view.createElement();
|
49195
|
+
});
|
49196
|
+
|
49197
|
+
|
49198
|
+
var elem = get(view, 'element');
|
49199
|
+
ok(elem, 'has element now');
|
49200
|
+
equalHTML(elem.childNodes, '<script></script><tr><td>snorfblax</td></tr>', 'has innerHTML from context');
|
49201
|
+
equal(elem.tagName.toString().toLowerCase(), 'table', 'has tagName from view');
|
49202
|
+
});
|
49203
|
+
|
49204
|
+
test("does not wrap many tr children in tbody elements", function() {
|
49205
|
+
view = ContainerView.create({
|
49206
|
+
tagName: 'table',
|
49207
|
+
childViews: [
|
49208
|
+
EmberView.create({
|
49209
|
+
tagName: '',
|
49210
|
+
render: function(buffer) {
|
49211
|
+
// Emulate a metamorph
|
49212
|
+
buffer.push("<script></script><tr><td>snorfblax</td></tr>");
|
49213
|
+
} }),
|
49214
|
+
EmberView.create({
|
49215
|
+
tagName: '',
|
49216
|
+
render: function(buffer) {
|
49217
|
+
// Emulate a metamorph
|
49218
|
+
buffer.push("<script></script><tr><td>snorfblax</td></tr>");
|
49219
|
+
} })
|
49220
|
+
]
|
49221
|
+
});
|
49222
|
+
|
49223
|
+
equal(get(view, 'element'), null, 'precondition - has no element');
|
49224
|
+
run(function() {
|
49225
|
+
view.createElement();
|
49226
|
+
});
|
49227
|
+
|
49228
|
+
|
49229
|
+
var elem = get(view, 'element');
|
49230
|
+
ok(elem, 'has element now');
|
49231
|
+
equalHTML(elem.childNodes, '<script></script><tr><td>snorfblax</td></tr><script></script><tr><td>snorfblax</td></tr>', 'has innerHTML from context');
|
49232
|
+
equal(elem.tagName.toString().toLowerCase(), 'table', 'has tagName from view');
|
49233
|
+
});
|
49234
|
+
|
48848
49235
|
test("generated element include HTML from child views as well", function() {
|
48849
49236
|
view = ContainerView.create({
|
48850
49237
|
childViews: [ EmberView.create({ elementId: "foo" })]
|
@@ -49744,6 +50131,62 @@ define("ember-views/tests/views/view/nearest_of_type_test.jshint",
|
|
49744
50131
|
ok(true, 'ember-views/tests/views/view/nearest_of_type_test.js should pass jshint.');
|
49745
50132
|
});
|
49746
50133
|
});
|
50134
|
+
define("ember-views/tests/views/view/nested_view_ordering_test",
|
50135
|
+
["container","ember-metal/run_loop","ember-views/views/view","ember-handlebars-compiler"],
|
50136
|
+
function(__dependency1__, __dependency2__, __dependency3__, __dependency4__) {
|
50137
|
+
"use strict";
|
50138
|
+
var Container = __dependency1__["default"];
|
50139
|
+
var run = __dependency2__["default"];
|
50140
|
+
|
50141
|
+
var EmberView = __dependency3__["default"];
|
50142
|
+
var EmberHandlebars = __dependency4__["default"];
|
50143
|
+
|
50144
|
+
var container, view;
|
50145
|
+
|
50146
|
+
QUnit.module("EmberView - Nested View Ordering", {
|
50147
|
+
setup: function() {
|
50148
|
+
container = new Container();
|
50149
|
+
},
|
50150
|
+
teardown: function() {
|
50151
|
+
run(function() {
|
50152
|
+
if (view) { view.destroy(); }
|
50153
|
+
});
|
50154
|
+
}
|
50155
|
+
});
|
50156
|
+
|
50157
|
+
test("should call didInsertElement on child views before parent", function() {
|
50158
|
+
var insertedLast;
|
50159
|
+
|
50160
|
+
view = EmberView.create({
|
50161
|
+
didInsertElement: function(){
|
50162
|
+
insertedLast = "outer";
|
50163
|
+
},
|
50164
|
+
container: container,
|
50165
|
+
template: EmberHandlebars.compile("{{view \"inner\"}}")
|
50166
|
+
});
|
50167
|
+
|
50168
|
+
container.register("view:inner", EmberView.extend({
|
50169
|
+
didInsertElement: function(){
|
50170
|
+
insertedLast = "inner";
|
50171
|
+
}
|
50172
|
+
}));
|
50173
|
+
|
50174
|
+
run(function() {
|
50175
|
+
view.append();
|
50176
|
+
});
|
50177
|
+
|
50178
|
+
equal(insertedLast, "outer", "didInsertElement called on outer view after inner view");
|
50179
|
+
});
|
50180
|
+
});
|
50181
|
+
define("ember-views/tests/views/view/nested_view_ordering_test.jshint",
|
50182
|
+
[],
|
50183
|
+
function() {
|
50184
|
+
"use strict";
|
50185
|
+
module('JSHint - ember-views/tests/views/view');
|
50186
|
+
test('ember-views/tests/views/view/nested_view_ordering_test.js should pass jshint', function() {
|
50187
|
+
ok(true, 'ember-views/tests/views/view/nested_view_ordering_test.js should pass jshint.');
|
50188
|
+
});
|
50189
|
+
});
|
49747
50190
|
define("ember-views/tests/views/view/parse_property_path_test",
|
49748
50191
|
["ember-views/views/view"],
|
49749
50192
|
function(__dependency1__) {
|