ember-source 1.8.0.beta.2 → 1.8.0.beta.3
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.
- 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.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
|
|
@@ -41414,6 +41638,36 @@ define("ember-runtime/tests/system/object/observer_test",
|
|
41414
41638
|
equal(get(obj1, 'count'), 1, 'should not invoke again');
|
41415
41639
|
equal(get(obj2, 'count'), 1, 'should invoke observer on obj2');
|
41416
41640
|
});
|
41641
|
+
|
41642
|
+
testBoth('chain observer on class that has a reference to an uninitialized object will finish chains that reference it', function(get, set) {
|
41643
|
+
var changed = false;
|
41644
|
+
|
41645
|
+
var ChildClass = EmberObject.extend({
|
41646
|
+
parent: null,
|
41647
|
+
parentOneTwoDidChange: observer('parent.one.two', function() {
|
41648
|
+
changed = true;
|
41649
|
+
})
|
41650
|
+
});
|
41651
|
+
|
41652
|
+
var ParentClass = EmberObject.extend({
|
41653
|
+
one: {
|
41654
|
+
two: "old"
|
41655
|
+
},
|
41656
|
+
init: function () {
|
41657
|
+
this.child = ChildClass.create({
|
41658
|
+
parent: this
|
41659
|
+
});
|
41660
|
+
}
|
41661
|
+
});
|
41662
|
+
|
41663
|
+
var parent = new ParentClass();
|
41664
|
+
|
41665
|
+
equal(changed, false, 'precond');
|
41666
|
+
|
41667
|
+
parent.set('one.two', 'new');
|
41668
|
+
|
41669
|
+
equal(changed, true, 'child should have been notified of change to path');
|
41670
|
+
});
|
41417
41671
|
});
|
41418
41672
|
define("ember-runtime/tests/system/object/observer_test.jshint",
|
41419
41673
|
[],
|
@@ -45454,9 +45708,28 @@ define("ember-views/tests/system/render_buffer_test",
|
|
45454
45708
|
//
|
45455
45709
|
QUnit.module("RenderBuffer");
|
45456
45710
|
|
45457
|
-
test("RenderBuffers
|
45711
|
+
test("RenderBuffers raise a deprecation warning without a contextualElement", function() {
|
45458
45712
|
var buffer = new RenderBuffer('div');
|
45459
45713
|
buffer.generateElement();
|
45714
|
+
expectDeprecation(function(){
|
45715
|
+
var el = buffer.element();
|
45716
|
+
equal(el.tagName.toLowerCase(), 'div');
|
45717
|
+
}, /buffer.element expects a contextualElement to exist/);
|
45718
|
+
});
|
45719
|
+
|
45720
|
+
test("reset RenderBuffers raise a deprecation warning without a contextualElement", function() {
|
45721
|
+
var buffer = new RenderBuffer('div', document.body);
|
45722
|
+
buffer.reset('span');
|
45723
|
+
buffer.generateElement();
|
45724
|
+
expectDeprecation(function(){
|
45725
|
+
var el = buffer.element();
|
45726
|
+
equal(el.tagName.toLowerCase(), 'span');
|
45727
|
+
}, /buffer.element expects a contextualElement to exist/);
|
45728
|
+
});
|
45729
|
+
|
45730
|
+
test("RenderBuffers combine strings", function() {
|
45731
|
+
var buffer = new RenderBuffer('div', document.body);
|
45732
|
+
buffer.generateElement();
|
45460
45733
|
|
45461
45734
|
buffer.push('a');
|
45462
45735
|
buffer.push('b');
|
@@ -45468,7 +45741,7 @@ define("ember-views/tests/system/render_buffer_test",
|
|
45468
45741
|
|
45469
45742
|
test("value of 0 is included in output", function() {
|
45470
45743
|
var buffer, el;
|
45471
|
-
buffer = new RenderBuffer('input');
|
45744
|
+
buffer = new RenderBuffer('input', document.body);
|
45472
45745
|
buffer.prop('value', 0);
|
45473
45746
|
buffer.generateElement();
|
45474
45747
|
el = buffer.element();
|
@@ -45476,7 +45749,7 @@ define("ember-views/tests/system/render_buffer_test",
|
|
45476
45749
|
});
|
45477
45750
|
|
45478
45751
|
test("prevents XSS injection via `id`", function() {
|
45479
|
-
var buffer = new RenderBuffer('div');
|
45752
|
+
var buffer = new RenderBuffer('div', document.body);
|
45480
45753
|
|
45481
45754
|
buffer.id('hacked" megahax="yes');
|
45482
45755
|
buffer.generateElement();
|
@@ -45486,7 +45759,7 @@ define("ember-views/tests/system/render_buffer_test",
|
|
45486
45759
|
});
|
45487
45760
|
|
45488
45761
|
test("prevents XSS injection via `attr`", function() {
|
45489
|
-
var buffer = new RenderBuffer('div');
|
45762
|
+
var buffer = new RenderBuffer('div', document.body);
|
45490
45763
|
|
45491
45764
|
buffer.attr('id', 'trololol" onmouseover="pwn()');
|
45492
45765
|
buffer.attr('class', "hax><img src=\"trollface.png\"");
|
@@ -45500,7 +45773,7 @@ define("ember-views/tests/system/render_buffer_test",
|
|
45500
45773
|
});
|
45501
45774
|
|
45502
45775
|
test("prevents XSS injection via `addClass`", function() {
|
45503
|
-
var buffer = new RenderBuffer('div');
|
45776
|
+
var buffer = new RenderBuffer('div', document.body);
|
45504
45777
|
|
45505
45778
|
buffer.addClass('megahax" xss="true');
|
45506
45779
|
buffer.generateElement();
|
@@ -45510,7 +45783,7 @@ define("ember-views/tests/system/render_buffer_test",
|
|
45510
45783
|
});
|
45511
45784
|
|
45512
45785
|
test("prevents XSS injection via `style`", function() {
|
45513
|
-
var buffer = new RenderBuffer('div');
|
45786
|
+
var buffer = new RenderBuffer('div', document.body);
|
45514
45787
|
|
45515
45788
|
buffer.style('color', 'blue;" xss="true" style="color:red');
|
45516
45789
|
buffer.generateElement();
|
@@ -45529,25 +45802,25 @@ define("ember-views/tests/system/render_buffer_test",
|
|
45529
45802
|
});
|
45530
45803
|
|
45531
45804
|
test("prevents XSS injection via `tagName`", function() {
|
45532
|
-
var buffer = new RenderBuffer('cool-div><div xss="true"');
|
45805
|
+
var buffer = new RenderBuffer('cool-div><div xss="true"', document.body);
|
45533
45806
|
try {
|
45534
45807
|
buffer.generateElement();
|
45535
|
-
equal(buffer.
|
45808
|
+
equal(buffer.element().childNodes.length, 0, 'no extra nodes created');
|
45536
45809
|
} catch (e) {
|
45537
45810
|
ok(true, 'dom exception');
|
45538
45811
|
}
|
45539
45812
|
});
|
45540
45813
|
|
45541
45814
|
test("handles null props - Issue #2019", function() {
|
45542
|
-
var buffer = new RenderBuffer('div');
|
45815
|
+
var buffer = new RenderBuffer('div', document.body);
|
45543
45816
|
|
45544
45817
|
buffer.prop('value', null);
|
45545
45818
|
buffer.generateElement();
|
45546
|
-
equal(buffer.
|
45819
|
+
equal(buffer.element().tagName, 'DIV', 'div exists');
|
45547
45820
|
});
|
45548
45821
|
|
45549
45822
|
test("handles browsers like Firefox < 11 that don't support outerHTML Issue #1952", function() {
|
45550
|
-
var buffer = new RenderBuffer('div');
|
45823
|
+
var buffer = new RenderBuffer('div', document.body);
|
45551
45824
|
buffer.generateElement();
|
45552
45825
|
// Make sure element.outerHTML is falsy to trigger the fallback.
|
45553
45826
|
var elementStub = '<div></div>';
|
@@ -45557,20 +45830,78 @@ define("ember-views/tests/system/render_buffer_test",
|
|
45557
45830
|
});
|
45558
45831
|
|
45559
45832
|
test("lets `setClasses` and `addClass` work together", function() {
|
45560
|
-
var buffer = new RenderBuffer('div');
|
45833
|
+
var buffer = new RenderBuffer('div', document.body);
|
45561
45834
|
buffer.setClasses(['foo', 'bar']);
|
45562
45835
|
buffer.addClass('baz');
|
45563
45836
|
buffer.generateElement();
|
45564
45837
|
|
45565
45838
|
var el = buffer.element();
|
45566
|
-
equal(el.tagName
|
45839
|
+
equal(el.tagName, 'DIV');
|
45567
45840
|
equal(el.getAttribute('class'), 'foo bar baz');
|
45568
45841
|
});
|
45569
45842
|
|
45843
|
+
test("generates text and a div and text", function() {
|
45844
|
+
var div = document.createElement('div');
|
45845
|
+
var buffer = new RenderBuffer(undefined, div);
|
45846
|
+
buffer.buffer = 'Howdy<div>Nick</div>Cage';
|
45847
|
+
|
45848
|
+
var el = buffer.element();
|
45849
|
+
equal(el.childNodes[0].data, 'Howdy');
|
45850
|
+
equal(el.childNodes[1].tagName, 'DIV');
|
45851
|
+
equal(el.childNodes[1].childNodes[0].data, 'Nick');
|
45852
|
+
equal(el.childNodes[2].data, 'Cage');
|
45853
|
+
});
|
45854
|
+
|
45855
|
+
|
45856
|
+
test("generates a tr from a tr innerString", function() {
|
45857
|
+
var table = document.createElement('table');
|
45858
|
+
var buffer = new RenderBuffer(undefined, table);
|
45859
|
+
buffer.buffer = '<tr></tr>';
|
45860
|
+
|
45861
|
+
var el = buffer.element();
|
45862
|
+
equal(el.childNodes[0].tagName.toLowerCase(), 'tr');
|
45863
|
+
});
|
45864
|
+
|
45865
|
+
test("generates a tr from a tr innerString with leading <script", function() {
|
45866
|
+
var table = document.createElement('table');
|
45867
|
+
var buffer = new RenderBuffer(undefined, table);
|
45868
|
+
buffer.buffer = '<script></script><tr></tr>';
|
45869
|
+
|
45870
|
+
var el = buffer.element();
|
45871
|
+
equal(el.childNodes[1].tagName.toLowerCase(), 'tr');
|
45872
|
+
});
|
45873
|
+
|
45874
|
+
test("generates a tr from a tr innerString with leading comment", function() {
|
45875
|
+
var table = document.createElement('table');
|
45876
|
+
var buffer = new RenderBuffer(undefined, table);
|
45877
|
+
buffer.buffer = '<!-- blargh! --><tr></tr>';
|
45878
|
+
|
45879
|
+
var el = buffer.element();
|
45880
|
+
equal(el.childNodes[1].tagName, 'TR');
|
45881
|
+
});
|
45882
|
+
|
45883
|
+
test("generates a tbody from a tbody innerString", function() {
|
45884
|
+
var table = document.createElement('table');
|
45885
|
+
var buffer = new RenderBuffer(undefined, table);
|
45886
|
+
buffer.buffer = '<tbody><tr></tr></tbody>';
|
45887
|
+
|
45888
|
+
var el = buffer.element();
|
45889
|
+
equal(el.childNodes[0].tagName, 'TBODY');
|
45890
|
+
});
|
45891
|
+
|
45892
|
+
test("generates a col from a col innerString", function() {
|
45893
|
+
var table = document.createElement('table');
|
45894
|
+
var buffer = new RenderBuffer(undefined, table);
|
45895
|
+
buffer.buffer = '<col></col>';
|
45896
|
+
|
45897
|
+
var el = buffer.element();
|
45898
|
+
equal(el.childNodes[0].tagName, 'COL');
|
45899
|
+
});
|
45900
|
+
|
45570
45901
|
QUnit.module("RenderBuffer - without tagName");
|
45571
45902
|
|
45572
45903
|
test("It is possible to create a RenderBuffer without a tagName", function() {
|
45573
|
-
var buffer = new RenderBuffer();
|
45904
|
+
var buffer = new RenderBuffer(undefined, document.body);
|
45574
45905
|
buffer.push('a');
|
45575
45906
|
buffer.push('b');
|
45576
45907
|
buffer.push('c');
|
@@ -45585,7 +45916,7 @@ define("ember-views/tests/system/render_buffer_test",
|
|
45585
45916
|
QUnit.module("RenderBuffer#element");
|
45586
45917
|
|
45587
45918
|
test("properly handles old IE's zero-scope bug", function() {
|
45588
|
-
var buffer = new RenderBuffer('div');
|
45919
|
+
var buffer = new RenderBuffer('div', document.body);
|
45589
45920
|
buffer.generateElement();
|
45590
45921
|
buffer.push('<script></script>foo');
|
45591
45922
|
|
@@ -48820,13 +49151,14 @@ define("ember-views/tests/views/view/create_child_view_test.jshint",
|
|
48820
49151
|
});
|
48821
49152
|
});
|
48822
49153
|
define("ember-views/tests/views/view/create_element_test",
|
48823
|
-
["ember-metal/property_get","ember-metal/run_loop","ember-views/views/view","ember-views/views/container_view"],
|
48824
|
-
function(__dependency1__, __dependency2__, __dependency3__, __dependency4__) {
|
49154
|
+
["ember-metal/property_get","ember-metal/run_loop","ember-views/views/view","ember-views/views/container_view","ember-metal-views/tests/test_helpers"],
|
49155
|
+
function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __dependency5__) {
|
48825
49156
|
"use strict";
|
48826
49157
|
var get = __dependency1__.get;
|
48827
49158
|
var run = __dependency2__["default"];
|
48828
49159
|
var EmberView = __dependency3__["default"];
|
48829
49160
|
var ContainerView = __dependency4__["default"];
|
49161
|
+
var equalHTML = __dependency5__.equalHTML;
|
48830
49162
|
|
48831
49163
|
var view;
|
48832
49164
|
|
@@ -48871,6 +49203,61 @@ define("ember-views/tests/views/view/create_element_test",
|
|
48871
49203
|
equal(elem.tagName.toString().toLowerCase(), 'span', 'has tagName from view');
|
48872
49204
|
});
|
48873
49205
|
|
49206
|
+
test("calls render and parses the buffer string in the right context", function() {
|
49207
|
+
view = ContainerView.create({
|
49208
|
+
tagName: 'table',
|
49209
|
+
childViews: [ EmberView.create({
|
49210
|
+
tagName: '',
|
49211
|
+
render: function(buffer) {
|
49212
|
+
// Emulate a metamorph
|
49213
|
+
buffer.push("<script></script><tr><td>snorfblax</td></tr>");
|
49214
|
+
}
|
49215
|
+
})]
|
49216
|
+
});
|
49217
|
+
|
49218
|
+
equal(get(view, 'element'), null, 'precondition - has no element');
|
49219
|
+
run(function() {
|
49220
|
+
view.createElement();
|
49221
|
+
});
|
49222
|
+
|
49223
|
+
|
49224
|
+
var elem = get(view, 'element');
|
49225
|
+
ok(elem, 'has element now');
|
49226
|
+
equalHTML(elem.childNodes, '<script></script><tr><td>snorfblax</td></tr>', 'has innerHTML from context');
|
49227
|
+
equal(elem.tagName.toString().toLowerCase(), 'table', 'has tagName from view');
|
49228
|
+
});
|
49229
|
+
|
49230
|
+
test("does not wrap many tr children in tbody elements", function() {
|
49231
|
+
view = ContainerView.create({
|
49232
|
+
tagName: 'table',
|
49233
|
+
childViews: [
|
49234
|
+
EmberView.create({
|
49235
|
+
tagName: '',
|
49236
|
+
render: function(buffer) {
|
49237
|
+
// Emulate a metamorph
|
49238
|
+
buffer.push("<script></script><tr><td>snorfblax</td></tr>");
|
49239
|
+
} }),
|
49240
|
+
EmberView.create({
|
49241
|
+
tagName: '',
|
49242
|
+
render: function(buffer) {
|
49243
|
+
// Emulate a metamorph
|
49244
|
+
buffer.push("<script></script><tr><td>snorfblax</td></tr>");
|
49245
|
+
} })
|
49246
|
+
]
|
49247
|
+
});
|
49248
|
+
|
49249
|
+
equal(get(view, 'element'), null, 'precondition - has no element');
|
49250
|
+
run(function() {
|
49251
|
+
view.createElement();
|
49252
|
+
});
|
49253
|
+
|
49254
|
+
|
49255
|
+
var elem = get(view, 'element');
|
49256
|
+
ok(elem, 'has element now');
|
49257
|
+
equalHTML(elem.childNodes, '<script></script><tr><td>snorfblax</td></tr><script></script><tr><td>snorfblax</td></tr>', 'has innerHTML from context');
|
49258
|
+
equal(elem.tagName.toString().toLowerCase(), 'table', 'has tagName from view');
|
49259
|
+
});
|
49260
|
+
|
48874
49261
|
test("generated element include HTML from child views as well", function() {
|
48875
49262
|
view = ContainerView.create({
|
48876
49263
|
childViews: [ EmberView.create({ elementId: "foo" })]
|
@@ -49770,6 +50157,62 @@ define("ember-views/tests/views/view/nearest_of_type_test.jshint",
|
|
49770
50157
|
ok(true, 'ember-views/tests/views/view/nearest_of_type_test.js should pass jshint.');
|
49771
50158
|
});
|
49772
50159
|
});
|
50160
|
+
define("ember-views/tests/views/view/nested_view_ordering_test",
|
50161
|
+
["container","ember-metal/run_loop","ember-views/views/view","ember-handlebars-compiler"],
|
50162
|
+
function(__dependency1__, __dependency2__, __dependency3__, __dependency4__) {
|
50163
|
+
"use strict";
|
50164
|
+
var Container = __dependency1__["default"];
|
50165
|
+
var run = __dependency2__["default"];
|
50166
|
+
|
50167
|
+
var EmberView = __dependency3__["default"];
|
50168
|
+
var EmberHandlebars = __dependency4__["default"];
|
50169
|
+
|
50170
|
+
var container, view;
|
50171
|
+
|
50172
|
+
QUnit.module("EmberView - Nested View Ordering", {
|
50173
|
+
setup: function() {
|
50174
|
+
container = new Container();
|
50175
|
+
},
|
50176
|
+
teardown: function() {
|
50177
|
+
run(function() {
|
50178
|
+
if (view) { view.destroy(); }
|
50179
|
+
});
|
50180
|
+
}
|
50181
|
+
});
|
50182
|
+
|
50183
|
+
test("should call didInsertElement on child views before parent", function() {
|
50184
|
+
var insertedLast;
|
50185
|
+
|
50186
|
+
view = EmberView.create({
|
50187
|
+
didInsertElement: function(){
|
50188
|
+
insertedLast = "outer";
|
50189
|
+
},
|
50190
|
+
container: container,
|
50191
|
+
template: EmberHandlebars.compile("{{view \"inner\"}}")
|
50192
|
+
});
|
50193
|
+
|
50194
|
+
container.register("view:inner", EmberView.extend({
|
50195
|
+
didInsertElement: function(){
|
50196
|
+
insertedLast = "inner";
|
50197
|
+
}
|
50198
|
+
}));
|
50199
|
+
|
50200
|
+
run(function() {
|
50201
|
+
view.append();
|
50202
|
+
});
|
50203
|
+
|
50204
|
+
equal(insertedLast, "outer", "didInsertElement called on outer view after inner view");
|
50205
|
+
});
|
50206
|
+
});
|
50207
|
+
define("ember-views/tests/views/view/nested_view_ordering_test.jshint",
|
50208
|
+
[],
|
50209
|
+
function() {
|
50210
|
+
"use strict";
|
50211
|
+
module('JSHint - ember-views/tests/views/view');
|
50212
|
+
test('ember-views/tests/views/view/nested_view_ordering_test.js should pass jshint', function() {
|
50213
|
+
ok(true, 'ember-views/tests/views/view/nested_view_ordering_test.js should pass jshint.');
|
50214
|
+
});
|
50215
|
+
});
|
49773
50216
|
define("ember-views/tests/views/view/parse_property_path_test",
|
49774
50217
|
["ember-views/views/view"],
|
49775
50218
|
function(__dependency1__) {
|