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.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__) {
|