ember-source 1.11.0.beta.5 → 1.11.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of ember-source might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/VERSION +1 -1
- data/dist/ember-runtime.js +42 -34
- data/dist/ember-template-compiler.js +35 -50
- data/dist/ember-testing.js +23 -41
- data/dist/ember-tests.js +960 -213
- data/dist/ember-tests.prod.js +1012 -244
- data/dist/ember.debug.cjs.js +470 -276
- data/dist/ember.debug.js +470 -276
- data/dist/ember.js +470 -276
- data/dist/ember.min.js +19 -13
- data/dist/ember.prod.js +330 -199
- metadata +4 -4
data/dist/ember-testing.js
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
* Portions Copyright 2008-2011 Apple Inc. All rights reserved.
|
6
6
|
* @license Licensed under MIT license
|
7
7
|
* See https://raw.github.com/emberjs/ember.js/master/LICENSE
|
8
|
-
* @version 1.11.0
|
8
|
+
* @version 1.11.0
|
9
9
|
*/
|
10
10
|
|
11
11
|
(function() {
|
@@ -428,13 +428,12 @@ enifed('ember-testing/adapters/qunit', ['exports', 'ember-testing/adapters/adapt
|
|
428
428
|
});
|
429
429
|
|
430
430
|
});
|
431
|
-
enifed('ember-testing/helpers', ['ember-metal/core', 'ember-metal/property_get', 'ember-metal/error', 'ember-metal/run_loop', 'ember-views/system/jquery', 'ember-testing/test'], function (Ember, property_get, EmberError, run, jQuery, Test) {
|
431
|
+
enifed('ember-testing/helpers', ['ember-metal/core', 'ember-metal/property_get', 'ember-metal/error', 'ember-metal/run_loop', 'ember-views/system/jquery', 'ember-testing/test', 'ember-runtime/ext/rsvp'], function (Ember, property_get, EmberError, run, jQuery, Test, RSVP) {
|
432
432
|
|
433
433
|
'use strict';
|
434
434
|
|
435
435
|
var helper = Test['default'].registerHelper;
|
436
436
|
var asyncHelper = Test['default'].registerAsyncHelper;
|
437
|
-
var countAsync = 0;
|
438
437
|
|
439
438
|
function currentRouteName(app) {
|
440
439
|
var appController = app.__container__.lookup('controller:application');
|
@@ -621,12 +620,7 @@ enifed('ember-testing/helpers', ['ember-metal/core', 'ember-metal/property_get',
|
|
621
620
|
}
|
622
621
|
|
623
622
|
function wait(app, value) {
|
624
|
-
return
|
625
|
-
// If this is the first async promise, kick off the async test
|
626
|
-
if (++countAsync === 1) {
|
627
|
-
Test['default'].adapter.asyncStart();
|
628
|
-
}
|
629
|
-
|
623
|
+
return new RSVP['default'].Promise(function(resolve) {
|
630
624
|
// Every 10ms, poll for the async thing to have finished
|
631
625
|
var watcher = setInterval(function() {
|
632
626
|
var router = app.__container__.lookup('router:main');
|
@@ -650,11 +644,6 @@ enifed('ember-testing/helpers', ['ember-metal/core', 'ember-metal/property_get',
|
|
650
644
|
// Stop polling
|
651
645
|
clearInterval(watcher);
|
652
646
|
|
653
|
-
// If this is the last async promise, end the async test
|
654
|
-
if (--countAsync === 0) {
|
655
|
-
Test['default'].adapter.asyncEnd();
|
656
|
-
}
|
657
|
-
|
658
647
|
// Synchronously resolve the promise
|
659
648
|
run['default'](null, resolve, value);
|
660
649
|
}, 10);
|
@@ -1306,7 +1295,7 @@ enifed('ember-testing/test', ['exports', 'ember-metal/core', 'ember-metal/run_lo
|
|
1306
1295
|
|
1307
1296
|
return function() {
|
1308
1297
|
var args = slice.call(arguments);
|
1309
|
-
var lastPromise
|
1298
|
+
var lastPromise;
|
1310
1299
|
|
1311
1300
|
args.unshift(app);
|
1312
1301
|
|
@@ -1317,35 +1306,28 @@ enifed('ember-testing/test', ['exports', 'ember-metal/core', 'ember-metal/run_lo
|
|
1317
1306
|
return fn.apply(app, args);
|
1318
1307
|
}
|
1319
1308
|
|
1320
|
-
|
1321
|
-
|
1322
|
-
|
1323
|
-
} else {
|
1324
|
-
// wait for last helper's promise to resolve and then
|
1325
|
-
// execute. To be safe, we need to tell the adapter we're going
|
1326
|
-
// asynchronous here, because fn may not be invoked before we
|
1327
|
-
// return.
|
1328
|
-
Test.adapter.asyncStart();
|
1329
|
-
run(function() {
|
1330
|
-
lastPromise = Test.resolve(lastPromise).then(function() {
|
1331
|
-
try {
|
1332
|
-
return fn.apply(app, args);
|
1333
|
-
} finally {
|
1334
|
-
Test.adapter.asyncEnd();
|
1335
|
-
}
|
1336
|
-
});
|
1337
|
-
});
|
1338
|
-
}
|
1309
|
+
lastPromise = run(function() {
|
1310
|
+
return Test.resolve(Test.lastPromise);
|
1311
|
+
});
|
1339
1312
|
|
1340
|
-
|
1313
|
+
// wait for last helper's promise to resolve and then
|
1314
|
+
// execute. To be safe, we need to tell the adapter we're going
|
1315
|
+
// asynchronous here, because fn may not be invoked before we
|
1316
|
+
// return.
|
1317
|
+
Test.adapter.asyncStart();
|
1318
|
+
return lastPromise.then(function() {
|
1319
|
+
return fn.apply(app, args);
|
1320
|
+
})["finally"](function() {
|
1321
|
+
Test.adapter.asyncEnd();
|
1322
|
+
});
|
1341
1323
|
};
|
1342
1324
|
}
|
1343
1325
|
|
1344
1326
|
function run(fn) {
|
1345
1327
|
if (!emberRun['default'].currentRunLoop) {
|
1346
|
-
emberRun['default'](fn);
|
1328
|
+
return emberRun['default'](fn);
|
1347
1329
|
} else {
|
1348
|
-
fn();
|
1330
|
+
return fn();
|
1349
1331
|
}
|
1350
1332
|
}
|
1351
1333
|
|
@@ -1509,6 +1491,7 @@ enifed('ember-testing/test', ['exports', 'ember-metal/core', 'ember-metal/run_lo
|
|
1509
1491
|
|
1510
1492
|
Test.Promise.prototype = create['default'](RSVP['default'].Promise.prototype);
|
1511
1493
|
Test.Promise.prototype.constructor = Test.Promise;
|
1494
|
+
Test.Promise.resolve = Test.resolve;
|
1512
1495
|
|
1513
1496
|
// Patch `then` to isolate async methods
|
1514
1497
|
// specifically `Ember.Test.lastPromise`
|
@@ -1525,7 +1508,6 @@ enifed('ember-testing/test', ['exports', 'ember-metal/core', 'ember-metal/run_lo
|
|
1525
1508
|
// 1. Set `Ember.Test.lastPromise` to null
|
1526
1509
|
// 2. Invoke method
|
1527
1510
|
// 3. Return the last promise created during method
|
1528
|
-
// 4. Restore `Ember.Test.lastPromise` to original value
|
1529
1511
|
function isolate(fn, val) {
|
1530
1512
|
var value, lastPromise;
|
1531
1513
|
|
@@ -1535,6 +1517,7 @@ enifed('ember-testing/test', ['exports', 'ember-metal/core', 'ember-metal/run_lo
|
|
1535
1517
|
value = fn(val);
|
1536
1518
|
|
1537
1519
|
lastPromise = Test.lastPromise;
|
1520
|
+
Test.lastPromise = null;
|
1538
1521
|
|
1539
1522
|
// If the method returned a promise
|
1540
1523
|
// return that promise. If not,
|
@@ -1542,12 +1525,11 @@ enifed('ember-testing/test', ['exports', 'ember-metal/core', 'ember-metal/run_lo
|
|
1542
1525
|
if ((value && (value instanceof Test.Promise)) || !lastPromise) {
|
1543
1526
|
return value;
|
1544
1527
|
} else {
|
1545
|
-
run(function() {
|
1546
|
-
|
1528
|
+
return run(function() {
|
1529
|
+
return Test.resolve(lastPromise).then(function() {
|
1547
1530
|
return value;
|
1548
1531
|
});
|
1549
1532
|
});
|
1550
|
-
return lastPromise;
|
1551
1533
|
}
|
1552
1534
|
}
|
1553
1535
|
|
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.11.0
|
8
|
+
* @version 1.11.0
|
9
9
|
*/
|
10
10
|
|
11
11
|
(function() {
|
@@ -3406,6 +3406,14 @@ enifed('ember-debug/tests/main_test', ['ember-metal/core'], function (Ember) {
|
|
3406
3406
|
|
3407
3407
|
QUnit.module('ember-debug');
|
3408
3408
|
|
3409
|
+
QUnit.test('Ember.deprecate throws deprecation with one argument', function() {
|
3410
|
+
expect(1);
|
3411
|
+
|
3412
|
+
throws(function() {
|
3413
|
+
Ember['default'].deprecate('Deprecation is thrown');
|
3414
|
+
});
|
3415
|
+
});
|
3416
|
+
|
3409
3417
|
QUnit.test('Ember.deprecate throws deprecation if second argument is falsy', function() {
|
3410
3418
|
expect(3);
|
3411
3419
|
|
@@ -5390,8 +5398,8 @@ enifed('ember-htmlbars/tests/attr_nodes/boolean_test', ['ember-views/views/view'
|
|
5390
5398
|
run['default'](function() { view.appendTo('#qunit-fixture'); });
|
5391
5399
|
}
|
5392
5400
|
|
5393
|
-
|
5394
5401
|
// jscs:disable validateIndentation
|
5402
|
+
|
5395
5403
|
|
5396
5404
|
QUnit.module("ember-htmlbars: boolean attribute", {
|
5397
5405
|
teardown: function() {
|
@@ -5475,9 +5483,8 @@ enifed('ember-htmlbars/tests/attr_nodes/boolean_test', ['ember-views/views/view'
|
|
5475
5483
|
'boolean property is set false');
|
5476
5484
|
});
|
5477
5485
|
|
5478
|
-
|
5479
|
-
// jscs:enable validateIndentation
|
5480
5486
|
|
5487
|
+
// jscs:enable validateIndentation
|
5481
5488
|
|
5482
5489
|
});
|
5483
5490
|
enifed('ember-htmlbars/tests/attr_nodes/boolean_test.jscs-test', function () {
|
@@ -5515,8 +5522,8 @@ enifed('ember-htmlbars/tests/attr_nodes/class_test', ['ember-views/views/view',
|
|
5515
5522
|
isInlineIfEnabled = true;
|
5516
5523
|
|
5517
5524
|
|
5518
|
-
|
5519
5525
|
// jscs:disable validateIndentation
|
5526
|
+
|
5520
5527
|
|
5521
5528
|
QUnit.module("ember-htmlbars: class attribute", {
|
5522
5529
|
teardown: function() {
|
@@ -5652,8 +5659,8 @@ enifed('ember-htmlbars/tests/attr_nodes/class_test', ['ember-views/views/view',
|
|
5652
5659
|
ok(view.element.firstChild.className, 'r b a c', 'classes are in the right order');
|
5653
5660
|
});
|
5654
5661
|
|
5655
|
-
// jscs:enable validateIndentation
|
5656
5662
|
|
5663
|
+
// jscs:enable validateIndentation
|
5657
5664
|
|
5658
5665
|
});
|
5659
5666
|
enifed('ember-htmlbars/tests/attr_nodes/class_test.jscs-test', function () {
|
@@ -5965,8 +5972,8 @@ enifed('ember-htmlbars/tests/attr_nodes/href_test', ['ember-views/views/view', '
|
|
5965
5972
|
run['default'](function() { view.appendTo('#qunit-fixture'); });
|
5966
5973
|
}
|
5967
5974
|
|
5968
|
-
|
5969
5975
|
// jscs:disable validateIndentation
|
5976
|
+
|
5970
5977
|
|
5971
5978
|
QUnit.module("ember-htmlbars: href attribute", {
|
5972
5979
|
teardown: function() {
|
@@ -5987,8 +5994,8 @@ enifed('ember-htmlbars/tests/attr_nodes/href_test', ['ember-views/views/view', '
|
|
5987
5994
|
"attribute is output");
|
5988
5995
|
});
|
5989
5996
|
|
5990
|
-
// jscs:enable validateIndentation
|
5991
5997
|
|
5998
|
+
// jscs:enable validateIndentation
|
5992
5999
|
|
5993
6000
|
});
|
5994
6001
|
enifed('ember-htmlbars/tests/attr_nodes/href_test.jscs-test', function () {
|
@@ -6028,8 +6035,8 @@ enifed('ember-htmlbars/tests/attr_nodes/property_test', ['ember-views/views/view
|
|
6028
6035
|
return input.maxLength === 0;
|
6029
6036
|
}
|
6030
6037
|
|
6031
|
-
|
6032
6038
|
// jscs:disable validateIndentation
|
6039
|
+
|
6033
6040
|
|
6034
6041
|
QUnit.module("ember-htmlbars: property", {
|
6035
6042
|
teardown: function() {
|
@@ -6082,8 +6089,8 @@ enifed('ember-htmlbars/tests/attr_nodes/property_test', ['ember-views/views/view
|
|
6082
6089
|
ok(true, "no legacy assertion prohibited setting an array");
|
6083
6090
|
});
|
6084
6091
|
|
6085
|
-
// jscs:enable validateIndentation
|
6086
6092
|
|
6093
|
+
// jscs:enable validateIndentation
|
6087
6094
|
|
6088
6095
|
});
|
6089
6096
|
enifed('ember-htmlbars/tests/attr_nodes/property_test.jscs-test', function () {
|
@@ -6120,26 +6127,41 @@ enifed('ember-htmlbars/tests/attr_nodes/sanitized_test', ['ember-views/views/vie
|
|
6120
6127
|
}
|
6121
6128
|
});
|
6122
6129
|
|
6123
|
-
|
6124
6130
|
// jscs:disable validateIndentation
|
6131
|
+
// jscs:disable disallowTrailingWhitespace
|
6132
|
+
|
6125
6133
|
|
6126
6134
|
var badTags = [
|
6127
6135
|
{ tag: 'a', attr: 'href',
|
6128
6136
|
unquotedTemplate: compile['default']("<a href={{url}}></a>"),
|
6129
6137
|
quotedTemplate: compile['default']("<a href='{{url}}'></a>"),
|
6130
6138
|
multipartTemplate: compile['default']("<a href='{{protocol}}{{path}}'></a>") },
|
6139
|
+
|
6140
|
+
{ tag: 'base', attr: 'href',
|
6141
|
+
unquotedTemplate: compile['default']("<base href={{url}} />"),
|
6142
|
+
quotedTemplate: compile['default']("<base href='{{url}}'/>"),
|
6143
|
+
multipartTemplate: compile['default']("<base href='{{protocol}}{{path}}'/>") },
|
6144
|
+
|
6145
|
+
{ tag: 'embed', attr: 'src',
|
6146
|
+
unquotedTemplate: compile['default']("<embed src={{url}} />"),
|
6147
|
+
quotedTemplate: compile['default']("<embed src='{{url}}'/>"),
|
6148
|
+
multipartTemplate: compile['default']("<embed src='{{protocol}}{{path}}'/>") },
|
6149
|
+
|
6131
6150
|
{ tag: 'body', attr: 'background',
|
6132
6151
|
unquotedTemplate: compile['default']("<body background={{url}}></body>"),
|
6133
6152
|
quotedTemplate: compile['default']("<body background='{{url}}'></body>"),
|
6134
6153
|
multipartTemplate: compile['default']("<body background='{{protocol}}{{path}}'></body>") },
|
6154
|
+
|
6135
6155
|
{ tag: 'link', attr: 'href',
|
6136
6156
|
unquotedTemplate: compile['default']("<link href={{url}}>"),
|
6137
6157
|
quotedTemplate: compile['default']("<link href='{{url}}'>"),
|
6138
6158
|
multipartTemplate: compile['default']("<link href='{{protocol}}{{path}}'>") },
|
6159
|
+
|
6139
6160
|
{ tag: 'img', attr: 'src',
|
6140
6161
|
unquotedTemplate: compile['default']("<img src={{url}}>"),
|
6141
6162
|
quotedTemplate: compile['default']("<img src='{{url}}'>"),
|
6142
6163
|
multipartTemplate: compile['default']("<img src='{{protocol}}{{path}}'>") },
|
6164
|
+
|
6143
6165
|
{ tag: 'iframe', attr: 'src',
|
6144
6166
|
// Setting an iframe with a bad protocol results in the browser
|
6145
6167
|
// being redirected. in IE8. Skip the iframe tests on that platform.
|
@@ -6214,8 +6236,9 @@ enifed('ember-htmlbars/tests/attr_nodes/sanitized_test', ['ember-views/views/vie
|
|
6214
6236
|
})(); //jshint ignore:line
|
6215
6237
|
}
|
6216
6238
|
|
6217
|
-
// jscs:enable validateIndentation
|
6218
6239
|
|
6240
|
+
// jscs:enable disallowTrailingWhitespace
|
6241
|
+
// jscs:enable validateIndentation
|
6219
6242
|
|
6220
6243
|
});
|
6221
6244
|
enifed('ember-htmlbars/tests/attr_nodes/sanitized_test.jscs-test', function () {
|
@@ -6237,6 +6260,104 @@ enifed('ember-htmlbars/tests/attr_nodes/sanitized_test.jshint', function () {
|
|
6237
6260
|
ok(true, 'ember-htmlbars/tests/attr_nodes/sanitized_test.js should pass jshint.');
|
6238
6261
|
});
|
6239
6262
|
|
6263
|
+
});
|
6264
|
+
enifed('ember-htmlbars/tests/attr_nodes/style_test', ['ember-metal/core', 'ember-views/views/view', 'ember-template-compiler/system/compile', 'ember-htmlbars/utils/string', 'ember-runtime/tests/utils', 'ember-views/attr_nodes/attr_node'], function (Ember, EmberView, compile, string, utils, attr_node) {
|
6265
|
+
|
6266
|
+
'use strict';
|
6267
|
+
|
6268
|
+
/* globals EmberDev */
|
6269
|
+
|
6270
|
+
var view, originalWarn, warnings;
|
6271
|
+
|
6272
|
+
QUnit.module("ember-htmlbars: style attribute", {
|
6273
|
+
setup: function() {
|
6274
|
+
warnings = [];
|
6275
|
+
originalWarn = Ember['default'].warn;
|
6276
|
+
Ember['default'].warn = function(message, test) {
|
6277
|
+
if (!test) {
|
6278
|
+
warnings.push(message);
|
6279
|
+
}
|
6280
|
+
};
|
6281
|
+
},
|
6282
|
+
|
6283
|
+
teardown: function() {
|
6284
|
+
utils.runDestroy(view);
|
6285
|
+
Ember['default'].warn = originalWarn;
|
6286
|
+
}
|
6287
|
+
});
|
6288
|
+
|
6289
|
+
// jscs:disable validateIndentation
|
6290
|
+
|
6291
|
+
|
6292
|
+
if (!EmberDev.runningProdBuild) {
|
6293
|
+
QUnit.test('specifying `<div style={{userValue}}></div>` generates a warning', function() {
|
6294
|
+
view = EmberView['default'].create({
|
6295
|
+
userValue: 'width: 42px',
|
6296
|
+
template: compile['default']('<div style={{view.userValue}}></div>')
|
6297
|
+
});
|
6298
|
+
|
6299
|
+
utils.runAppend(view);
|
6300
|
+
|
6301
|
+
deepEqual(warnings, [attr_node.styleWarning]);
|
6302
|
+
});
|
6303
|
+
|
6304
|
+
QUnit.test('specifying `attributeBindings: ["style"]` generates a warning', function() {
|
6305
|
+
view = EmberView['default'].create({
|
6306
|
+
userValue: 'width: 42px',
|
6307
|
+
template: compile['default']('<div style={{view.userValue}}></div>')
|
6308
|
+
});
|
6309
|
+
|
6310
|
+
utils.runAppend(view);
|
6311
|
+
|
6312
|
+
deepEqual(warnings, [attr_node.styleWarning]);
|
6313
|
+
});
|
6314
|
+
}
|
6315
|
+
|
6316
|
+
QUnit.test('specifying `<div style={{{userValue}}}></div>` works properly without a warning', function() {
|
6317
|
+
view = EmberView['default'].create({
|
6318
|
+
userValue: 'width: 42px',
|
6319
|
+
template: compile['default']('<div style={{{view.userValue}}}></div>')
|
6320
|
+
});
|
6321
|
+
|
6322
|
+
utils.runAppend(view);
|
6323
|
+
|
6324
|
+
deepEqual(warnings, [ ]);
|
6325
|
+
});
|
6326
|
+
|
6327
|
+
QUnit.test('specifying `<div style={{userValue}}></div>` works properly with a SafeString', function() {
|
6328
|
+
view = EmberView['default'].create({
|
6329
|
+
userValue: new string.SafeString('width: 42px'),
|
6330
|
+
template: compile['default']('<div style={{view.userValue}}></div>')
|
6331
|
+
});
|
6332
|
+
|
6333
|
+
utils.runAppend(view);
|
6334
|
+
|
6335
|
+
deepEqual(warnings, [ ]);
|
6336
|
+
});
|
6337
|
+
|
6338
|
+
|
6339
|
+
// jscs:enable validateIndentation
|
6340
|
+
|
6341
|
+
});
|
6342
|
+
enifed('ember-htmlbars/tests/attr_nodes/style_test.jscs-test', function () {
|
6343
|
+
|
6344
|
+
'use strict';
|
6345
|
+
|
6346
|
+
module('JSCS - ember-htmlbars/tests/attr_nodes');
|
6347
|
+
test('ember-htmlbars/tests/attr_nodes/style_test.js should pass jscs', function() {
|
6348
|
+
ok(true, 'ember-htmlbars/tests/attr_nodes/style_test.js should pass jscs.');
|
6349
|
+
});
|
6350
|
+
|
6351
|
+
});
|
6352
|
+
enifed('ember-htmlbars/tests/attr_nodes/style_test.jshint', function () {
|
6353
|
+
|
6354
|
+
'use strict';
|
6355
|
+
|
6356
|
+
module('JSHint - ember-htmlbars/tests/attr_nodes');
|
6357
|
+
test('ember-htmlbars/tests/attr_nodes/style_test.js should pass jshint', function() {
|
6358
|
+
ok(true, 'ember-htmlbars/tests/attr_nodes/style_test.js should pass jshint.');
|
6359
|
+
});
|
6360
|
+
|
6240
6361
|
});
|
6241
6362
|
enifed('ember-htmlbars/tests/attr_nodes/svg_test', ['ember-views/views/view', 'ember-metal/run_loop', 'ember-template-compiler/system/compile', 'htmlbars-test-helpers'], function (EmberView, run, compile, htmlbars_test_helpers) {
|
6242
6363
|
|
@@ -6248,8 +6369,8 @@ enifed('ember-htmlbars/tests/attr_nodes/svg_test', ['ember-views/views/view', 'e
|
|
6248
6369
|
run['default'](function() { view.appendTo('#qunit-fixture'); });
|
6249
6370
|
}
|
6250
6371
|
|
6251
|
-
|
6252
6372
|
// jscs:disable validateIndentation
|
6373
|
+
|
6253
6374
|
|
6254
6375
|
QUnit.module("ember-htmlbars: svg attribute", {
|
6255
6376
|
teardown: function() {
|
@@ -6314,8 +6435,8 @@ enifed('ember-htmlbars/tests/attr_nodes/svg_test', ['ember-views/views/view', 'e
|
|
6314
6435
|
htmlbars_test_helpers.equalInnerHTML(view.element, '<svg class="red tall"></svg>', "attribute is output");
|
6315
6436
|
});
|
6316
6437
|
|
6317
|
-
// jscs:enable validateIndentation
|
6318
6438
|
|
6439
|
+
// jscs:enable validateIndentation
|
6319
6440
|
|
6320
6441
|
});
|
6321
6442
|
enifed('ember-htmlbars/tests/attr_nodes/svg_test.jscs-test', function () {
|
@@ -6348,8 +6469,8 @@ enifed('ember-htmlbars/tests/attr_nodes/value_test', ['ember-views/views/view',
|
|
6348
6469
|
run['default'](function() { view.appendTo('#qunit-fixture'); });
|
6349
6470
|
}
|
6350
6471
|
|
6351
|
-
|
6352
6472
|
// jscs:disable validateIndentation
|
6473
|
+
|
6353
6474
|
|
6354
6475
|
QUnit.module("ember-htmlbars: value attribute", {
|
6355
6476
|
teardown: function() {
|
@@ -6395,8 +6516,8 @@ enifed('ember-htmlbars/tests/attr_nodes/value_test', ['ember-views/views/view',
|
|
6395
6516
|
'property is set true');
|
6396
6517
|
});
|
6397
6518
|
|
6398
|
-
// jscs:enable validateIndentation
|
6399
6519
|
|
6520
|
+
// jscs:enable validateIndentation
|
6400
6521
|
|
6401
6522
|
});
|
6402
6523
|
enifed('ember-htmlbars/tests/attr_nodes/value_test.jscs-test', function () {
|
@@ -7540,15 +7661,17 @@ enifed('ember-htmlbars/tests/compat/precompile_test.jshint', function () {
|
|
7540
7661
|
});
|
7541
7662
|
|
7542
7663
|
});
|
7543
|
-
enifed('ember-htmlbars/tests/helpers/bind_attr_test', ['ember-metal/core', 'ember-metal/run_loop', 'ember-runtime/system/namespace', 'ember-views/views/view', 'ember-views/views/metamorph_view', 'ember-runtime/system/object', 'ember-runtime/system/native_array', 'ember-metal/computed', 'ember-metal/observer', 'ember-runtime/system/container', 'ember-metal/property_set', 'ember-runtime/tests/utils', 'ember-htmlbars/helpers', 'ember-template-compiler/system/compile'], function (Ember, run, Namespace, EmberView, _MetamorphView, EmberObject, native_array, computed, observer, system__container, property_set, utils, helpers, compile) {
|
7664
|
+
enifed('ember-htmlbars/tests/helpers/bind_attr_test', ['ember-metal/core', 'ember-metal/run_loop', 'ember-runtime/system/namespace', 'ember-views/views/view', 'ember-views/views/metamorph_view', 'ember-runtime/system/object', 'ember-runtime/system/native_array', 'ember-metal/computed', 'ember-metal/observer', 'ember-runtime/system/container', 'ember-metal/property_set', 'ember-runtime/tests/utils', 'ember-views/attr_nodes/attr_node', 'ember-htmlbars/utils/string', 'ember-htmlbars/helpers', 'ember-template-compiler/system/compile'], function (Ember, run, Namespace, EmberView, _MetamorphView, EmberObject, native_array, computed, observer, system__container, property_set, utils, attr_node, string, helpers, compile) {
|
7544
7665
|
|
7545
7666
|
'use strict';
|
7546
7667
|
|
7668
|
+
/*globals EmberDev */
|
7547
7669
|
/*jshint newcap:false*/
|
7670
|
+
|
7548
7671
|
var view;
|
7549
7672
|
|
7550
7673
|
var originalLookup = Ember['default'].lookup;
|
7551
|
-
var TemplateTests, registry, container, lookup;
|
7674
|
+
var TemplateTests, registry, container, lookup, warnings, originalWarn;
|
7552
7675
|
|
7553
7676
|
/**
|
7554
7677
|
This module specifically tests integration with Handlebars and Ember-specific
|
@@ -7566,6 +7689,14 @@ enifed('ember-htmlbars/tests/helpers/bind_attr_test', ['ember-metal/core', 'embe
|
|
7566
7689
|
registry.optionsForType('template', { instantiate: false });
|
7567
7690
|
registry.register('view:default', _MetamorphView['default']);
|
7568
7691
|
registry.register('view:toplevel', EmberView['default'].extend());
|
7692
|
+
|
7693
|
+
warnings = [];
|
7694
|
+
originalWarn = Ember['default'].warn;
|
7695
|
+
Ember['default'].warn = function(message, test) {
|
7696
|
+
if (!test) {
|
7697
|
+
warnings.push(message);
|
7698
|
+
}
|
7699
|
+
};
|
7569
7700
|
},
|
7570
7701
|
|
7571
7702
|
teardown: function() {
|
@@ -7574,6 +7705,7 @@ enifed('ember-htmlbars/tests/helpers/bind_attr_test', ['ember-metal/core', 'embe
|
|
7574
7705
|
registry = container = view = null;
|
7575
7706
|
|
7576
7707
|
Ember['default'].lookup = lookup = originalLookup;
|
7708
|
+
Ember['default'].warn = originalWarn;
|
7577
7709
|
TemplateTests = null;
|
7578
7710
|
}
|
7579
7711
|
});
|
@@ -8105,7 +8237,7 @@ enifed('ember-htmlbars/tests/helpers/bind_attr_test', ['ember-metal/core', 'embe
|
|
8105
8237
|
}, /You cannot set `data-bar` manually and via `{{bind-attr}}` helper on the same element/);
|
8106
8238
|
});
|
8107
8239
|
|
8108
|
-
QUnit.test("src attribute bound to undefined is
|
8240
|
+
QUnit.test("src attribute bound to undefined is empty", function() {
|
8109
8241
|
var template = compile['default']("<img {{bind-attr src=view.undefinedValue}}>");
|
8110
8242
|
|
8111
8243
|
view = EmberView['default'].create({
|
@@ -8115,10 +8247,10 @@ enifed('ember-htmlbars/tests/helpers/bind_attr_test', ['ember-metal/core', 'embe
|
|
8115
8247
|
|
8116
8248
|
utils.runAppend(view);
|
8117
8249
|
|
8118
|
-
|
8250
|
+
equal(view.element.firstChild.getAttribute('src'), '', "src attribute is empty");
|
8119
8251
|
});
|
8120
8252
|
|
8121
|
-
QUnit.test("src attribute bound to null is
|
8253
|
+
QUnit.test("src attribute bound to null is empty", function() {
|
8122
8254
|
var template = compile['default']("<img {{bind-attr src=view.nullValue}}>");
|
8123
8255
|
|
8124
8256
|
view = EmberView['default'].create({
|
@@ -8128,7 +8260,69 @@ enifed('ember-htmlbars/tests/helpers/bind_attr_test', ['ember-metal/core', 'embe
|
|
8128
8260
|
|
8129
8261
|
utils.runAppend(view);
|
8130
8262
|
|
8131
|
-
|
8263
|
+
equal(view.element.firstChild.getAttribute('src'), '', "src attribute is empty");
|
8264
|
+
});
|
8265
|
+
|
8266
|
+
QUnit.test("src attribute will be cleared when the value is set to null or undefined", function() {
|
8267
|
+
var template = compile['default']("<img {{bind-attr src=view.value}}>");
|
8268
|
+
|
8269
|
+
view = EmberView['default'].create({
|
8270
|
+
template: template,
|
8271
|
+
value: 'one'
|
8272
|
+
});
|
8273
|
+
|
8274
|
+
utils.runAppend(view);
|
8275
|
+
|
8276
|
+
equal(view.element.firstChild.getAttribute('src'), 'one', "src attribute is present");
|
8277
|
+
|
8278
|
+
run['default'](function() {
|
8279
|
+
property_set.set(view, 'value', 'two');
|
8280
|
+
});
|
8281
|
+
|
8282
|
+
equal(view.element.firstChild.getAttribute('src'), 'two', "src attribute is present");
|
8283
|
+
|
8284
|
+
run['default'](function() {
|
8285
|
+
property_set.set(view, 'value', null);
|
8286
|
+
});
|
8287
|
+
|
8288
|
+
equal(view.element.firstChild.getAttribute('src'), '', "src attribute is empty");
|
8289
|
+
|
8290
|
+
run['default'](function() {
|
8291
|
+
property_set.set(view, 'value', 'three');
|
8292
|
+
});
|
8293
|
+
|
8294
|
+
equal(view.element.firstChild.getAttribute('src'), 'three', "src attribute is present");
|
8295
|
+
|
8296
|
+
run['default'](function() {
|
8297
|
+
property_set.set(view, 'value', undefined);
|
8298
|
+
});
|
8299
|
+
|
8300
|
+
equal(view.element.firstChild.getAttribute('src'), '', "src attribute is empty");
|
8301
|
+
});
|
8302
|
+
|
8303
|
+
if (!EmberDev.runningProdBuild) {
|
8304
|
+
|
8305
|
+
QUnit.test('specifying `<div {{bind-attr style=userValue}}></div>` triggers a warning', function() {
|
8306
|
+
view = EmberView['default'].create({
|
8307
|
+
userValue: '42',
|
8308
|
+
template: compile['default']('<div {{bind-attr style=view.userValue}}></div>')
|
8309
|
+
});
|
8310
|
+
|
8311
|
+
utils.runAppend(view);
|
8312
|
+
|
8313
|
+
deepEqual(warnings, [attr_node.styleWarning]);
|
8314
|
+
});
|
8315
|
+
}
|
8316
|
+
|
8317
|
+
QUnit.test('specifying `<div {{bind-attr style=userValue}}></div>` works properly with a SafeString', function() {
|
8318
|
+
view = EmberView['default'].create({
|
8319
|
+
userValue: new string.SafeString('42'),
|
8320
|
+
template: compile['default']('<div {{bind-attr style=view.userValue}}></div>')
|
8321
|
+
});
|
8322
|
+
|
8323
|
+
utils.runAppend(view);
|
8324
|
+
|
8325
|
+
deepEqual(warnings, [ ]);
|
8132
8326
|
});
|
8133
8327
|
|
8134
8328
|
});
|
@@ -8299,8 +8493,8 @@ enifed('ember-htmlbars/tests/helpers/collection_test', ['ember-views/views/colle
|
|
8299
8493
|
var container = registry.container();
|
8300
8494
|
|
8301
8495
|
var ACollectionView = CollectionView['default'].extend({
|
8302
|
-
|
8303
|
-
|
8496
|
+
tagName: 'ul',
|
8497
|
+
content: native_array.A(['foo', 'bar', 'baz'])
|
8304
8498
|
});
|
8305
8499
|
|
8306
8500
|
registry.register('view:collectionTest', ACollectionView);
|
@@ -8499,7 +8693,7 @@ enifed('ember-htmlbars/tests/helpers/collection_test', ['ember-views/views/colle
|
|
8499
8693
|
equal(view.$('ul li.baz').length, 3, "adds class attribute");
|
8500
8694
|
});
|
8501
8695
|
|
8502
|
-
QUnit.test("should give its item views the
|
8696
|
+
QUnit.test("should give its item views the class specified by itemClass", function() {
|
8503
8697
|
var ItemClassBindingTestCollectionView = CollectionView['default'].extend({
|
8504
8698
|
tagName: 'ul',
|
8505
8699
|
content: native_array.A([EmberObject['default'].create({ isBaz: false }), EmberObject['default'].create({ isBaz: true }), EmberObject['default'].create({ isBaz: true })])
|
@@ -8508,7 +8702,7 @@ enifed('ember-htmlbars/tests/helpers/collection_test', ['ember-views/views/colle
|
|
8508
8702
|
view = EmberView['default'].create({
|
8509
8703
|
itemClassBindingTestCollectionView: ItemClassBindingTestCollectionView,
|
8510
8704
|
isBar: true,
|
8511
|
-
template: compile['default']('{{#collection view.itemClassBindingTestCollectionView
|
8705
|
+
template: compile['default']('{{#collection view.itemClassBindingTestCollectionView itemClass=view.isBar}}foo{{/collection}}')
|
8512
8706
|
});
|
8513
8707
|
|
8514
8708
|
utils.runAppend(view);
|
@@ -8519,7 +8713,7 @@ enifed('ember-htmlbars/tests/helpers/collection_test', ['ember-views/views/colle
|
|
8519
8713
|
// to introduce a new keyword that could be used from within `itemClassBinding`. For instance, `itemClassBinding="item.isBaz"`.
|
8520
8714
|
});
|
8521
8715
|
|
8522
|
-
QUnit.test("should give its item views the property specified by
|
8716
|
+
QUnit.test("should give its item views the property specified by itemProperty", function() {
|
8523
8717
|
var ItemPropertyBindingTestItemView = EmberView['default'].extend({
|
8524
8718
|
tagName: 'li'
|
8525
8719
|
});
|
@@ -8534,7 +8728,7 @@ enifed('ember-htmlbars/tests/helpers/collection_test', ['ember-views/views/colle
|
|
8534
8728
|
return ItemPropertyBindingTestItemView;
|
8535
8729
|
}
|
8536
8730
|
},
|
8537
|
-
template: compile['default']('{{#collection
|
8731
|
+
template: compile['default']('{{#collection content=view.content tagName="ul" itemViewClass="item-property-binding-test-item-view" itemProperty=view.baz preserveContext=false}}{{view.property}}{{/collection}}')
|
8538
8732
|
});
|
8539
8733
|
|
8540
8734
|
utils.runAppend(view);
|
@@ -8556,7 +8750,7 @@ enifed('ember-htmlbars/tests/helpers/collection_test', ['ember-views/views/colle
|
|
8556
8750
|
view = EmberView['default'].create({
|
8557
8751
|
baz: "baz",
|
8558
8752
|
content: native_array.A([EmberObject['default'].create(), EmberObject['default'].create(), EmberObject['default'].create()]),
|
8559
|
-
template: compile['default']('{{#collection
|
8753
|
+
template: compile['default']('{{#collection content=view.content itemProperty=view.baz}}{{view.property}}{{/collection}}')
|
8560
8754
|
});
|
8561
8755
|
|
8562
8756
|
utils.runAppend(view);
|
@@ -8817,7 +9011,7 @@ enifed('ember-htmlbars/tests/helpers/collection_test', ['ember-views/views/colle
|
|
8817
9011
|
controller: {
|
8818
9012
|
items: items
|
8819
9013
|
},
|
8820
|
-
template: compile['default']('{{collection
|
9014
|
+
template: compile['default']('{{collection content=items itemViewClass="an-item"}}')
|
8821
9015
|
});
|
8822
9016
|
|
8823
9017
|
utils.runAppend(view);
|
@@ -9185,7 +9379,7 @@ enifed('ember-htmlbars/tests/helpers/each_test', ['ember-metal/core', 'ember-run
|
|
9185
9379
|
var originalLookup = Ember['default'].lookup;
|
9186
9380
|
var lookup;
|
9187
9381
|
|
9188
|
-
QUnit.module("the #each helper [DEPRECATED]", {
|
9382
|
+
QUnit.module("the scope changing #each helper [DEPRECATED]", {
|
9189
9383
|
setup: function() {
|
9190
9384
|
Ember['default'].lookup = lookup = { Ember: Ember['default'] };
|
9191
9385
|
|
@@ -9680,8 +9874,8 @@ enifed('ember-htmlbars/tests/helpers/each_test', ['ember-metal/core', 'ember-run
|
|
9680
9874
|
QUnit.test("it supports {{itemViewClass=}} with tagName (DEPRECATED)", function() {
|
9681
9875
|
utils.runDestroy(view);
|
9682
9876
|
view = EmberView['default'].create({
|
9683
|
-
|
9684
|
-
|
9877
|
+
template: templateFor('{{each view.people itemViewClass=MyView tagName="ul"}}'),
|
9878
|
+
people: people
|
9685
9879
|
});
|
9686
9880
|
|
9687
9881
|
expectDeprecation(/Supplying a tagName to Metamorph views is unreliable and is deprecated./);
|
@@ -10013,7 +10207,7 @@ enifed('ember-htmlbars/tests/helpers/each_test', ['ember-metal/core', 'ember-run
|
|
10013
10207
|
view = EmberView['default'].create({
|
10014
10208
|
container: container,
|
10015
10209
|
controller: controller,
|
10016
|
-
template: templateFor('{{#EACH|this|personController}}{{#view
|
10210
|
+
template: templateFor('{{#EACH|this|personController}}{{#view controller=personController}}{{name}}{{/view}}{{/each}}', useBlockParams)
|
10017
10211
|
});
|
10018
10212
|
|
10019
10213
|
utils.runAppend(view);
|
@@ -11441,6 +11635,44 @@ enifed('ember-htmlbars/tests/helpers/input_test', ['ember-metal/run_loop', 'embe
|
|
11441
11635
|
equal(view.$('input').prop('checked'), false, "the checkbox isn't checked yet");
|
11442
11636
|
});
|
11443
11637
|
|
11638
|
+
QUnit.module("{{input type='text'}} - null/undefined values", {
|
11639
|
+
teardown: function() {
|
11640
|
+
utils.runDestroy(view);
|
11641
|
+
}
|
11642
|
+
});
|
11643
|
+
|
11644
|
+
QUnit.test("placeholder attribute bound to undefined is not present", function() {
|
11645
|
+
view = View['default'].extend({
|
11646
|
+
controller: {},
|
11647
|
+
template: compile['default']('{{input placeholder=someThingNotThere}}')
|
11648
|
+
}).create();
|
11649
|
+
|
11650
|
+
utils.runAppend(view);
|
11651
|
+
|
11652
|
+
ok(!view.element.childNodes[1].hasAttribute('placeholder'), "attribute not present");
|
11653
|
+
|
11654
|
+
run['default'](null, property_set.set, view, 'controller.someThingNotThere', 'foo');
|
11655
|
+
|
11656
|
+
equal(view.element.childNodes[1].placeholder, 'foo', "attribute is present");
|
11657
|
+
});
|
11658
|
+
|
11659
|
+
QUnit.test("placeholder attribute bound to null is not present", function() {
|
11660
|
+
view = View['default'].extend({
|
11661
|
+
controller: {
|
11662
|
+
someNullProperty: null
|
11663
|
+
},
|
11664
|
+
template: compile['default']('{{input placeholder=someNullProperty}}')
|
11665
|
+
}).create();
|
11666
|
+
|
11667
|
+
utils.runAppend(view);
|
11668
|
+
|
11669
|
+
ok(!view.element.childNodes[1].hasAttribute('placeholder'), "attribute not present");
|
11670
|
+
|
11671
|
+
run['default'](null, property_set.set, view, 'controller.someNullProperty', 'foo');
|
11672
|
+
|
11673
|
+
equal(view.element.childNodes[1].placeholder, 'foo', "attribute is present");
|
11674
|
+
});
|
11675
|
+
|
11444
11676
|
});
|
11445
11677
|
enifed('ember-htmlbars/tests/helpers/input_test.jscs-test', function () {
|
11446
11678
|
|
@@ -12454,7 +12686,7 @@ enifed('ember-htmlbars/tests/helpers/unbound_test.jshint', function () {
|
|
12454
12686
|
});
|
12455
12687
|
|
12456
12688
|
});
|
12457
|
-
enifed('ember-htmlbars/tests/helpers/view_test', ['ember-views/views/view', 'container/registry', 'ember-metal/run_loop', 'ember-views/system/jquery', 'ember-views/views/text_field', 'ember-runtime/system/namespace', 'ember-runtime/system/object', 'ember-views/views/container_view', 'ember-views/views/metamorph_view', 'htmlbars-util/safe-string', 'ember-template-compiler/compat/precompile', 'ember-template-compiler/system/compile', 'ember-template-compiler/system/template', 'ember-metal/observer', 'ember-runtime/controllers/controller', 'ember-runtime/tests/utils', 'ember-metal/property_set', 'ember-metal/property_get', 'ember-metal/computed'], function (EmberView, Registry, run, jQuery, TextField, Namespace, EmberObject, ContainerView, _MetamorphView, SafeString, precompile, compile,
|
12689
|
+
enifed('ember-htmlbars/tests/helpers/view_test', ['ember-views/views/view', 'container/registry', 'ember-metal/run_loop', 'ember-views/system/jquery', 'ember-views/views/text_field', 'ember-runtime/system/namespace', 'ember-runtime/system/object', 'ember-views/views/container_view', 'ember-views/views/metamorph_view', 'htmlbars-util/safe-string', 'ember-template-compiler/compat/precompile', 'ember-template-compiler/system/compile', 'ember-template-compiler/system/template', 'ember-metal/observer', 'ember-runtime/controllers/controller', 'ember-htmlbars/system/make_bound_helper', 'ember-runtime/tests/utils', 'ember-metal/property_set', 'ember-metal/property_get', 'ember-metal/computed'], function (EmberView, Registry, run, jQuery, TextField, Namespace, EmberObject, ContainerView, _MetamorphView, SafeString, precompile, compile, system__template, observer, Controller, makeBoundHelper, utils, property_set, property_get, computed) {
|
12458
12690
|
|
12459
12691
|
'use strict';
|
12460
12692
|
|
@@ -12486,6 +12718,7 @@ enifed('ember-htmlbars/tests/helpers/view_test', ['ember-views/views/view', 'con
|
|
12486
12718
|
registry = new Registry['default']();
|
12487
12719
|
container = registry.container();
|
12488
12720
|
registry.optionsForType('template', { instantiate: false });
|
12721
|
+
registry.optionsForType('helper', { instantiate: false });
|
12489
12722
|
registry.register('view:default', _MetamorphView['default']);
|
12490
12723
|
registry.register('view:toplevel', EmberView['default'].extend());
|
12491
12724
|
},
|
@@ -12707,15 +12940,17 @@ enifed('ember-htmlbars/tests/helpers/view_test', ['ember-views/views/view', 'con
|
|
12707
12940
|
snork: "nerd"
|
12708
12941
|
}).create();
|
12709
12942
|
|
12710
|
-
|
12943
|
+
expectDeprecation(function() {
|
12944
|
+
utils.runAppend(view);
|
12945
|
+
}, /You're attempting to render a view by passing borfBinding to a view helper without a quoted value, but this syntax is ambiguous. You should either surround borfBinding's value in quotes or remove `Binding` from borfBinding./);
|
12711
12946
|
|
12712
12947
|
equal(jQuery['default']('#lol').text(), "nerd", "awkward mixed syntax treated like binding");
|
12713
12948
|
|
12714
12949
|
Ember.warn = oldWarn;
|
12715
12950
|
});
|
12716
12951
|
|
12717
|
-
QUnit.test('"Binding"-suffixed bindings are runloop-synchronized', function() {
|
12718
|
-
expect(
|
12952
|
+
QUnit.test('"Binding"-suffixed bindings are runloop-synchronized [DEPRECATED]', function() {
|
12953
|
+
expect(6);
|
12719
12954
|
|
12720
12955
|
var subview;
|
12721
12956
|
|
@@ -12734,7 +12969,10 @@ enifed('ember-htmlbars/tests/helpers/view_test', ['ember-views/views/view', 'con
|
|
12734
12969
|
});
|
12735
12970
|
|
12736
12971
|
view = View.create();
|
12737
|
-
|
12972
|
+
|
12973
|
+
expectDeprecation(function() {
|
12974
|
+
utils.runAppend(view);
|
12975
|
+
}, /You're attempting to render a view by passing colorBinding to a view helper, but this syntax is deprecated. You should use `color=someValue` instead./);
|
12738
12976
|
|
12739
12977
|
equal(view.$('h1 .color').text(), 'mauve', 'renders bound value');
|
12740
12978
|
|
@@ -12853,6 +13091,30 @@ enifed('ember-htmlbars/tests/helpers/view_test', ['ember-views/views/view', 'con
|
|
12853
13091
|
ok(jQuery['default']('#foo').hasClass('foo'), "Always applies classbinding without condition");
|
12854
13092
|
});
|
12855
13093
|
|
13094
|
+
QUnit.test("Should apply a class from a sub expression", function() {
|
13095
|
+
registry.register('helper:string-concat', makeBoundHelper['default'](function(params) {
|
13096
|
+
return params.join('');
|
13097
|
+
}));
|
13098
|
+
|
13099
|
+
view = EmberView['default'].create({
|
13100
|
+
container: container,
|
13101
|
+
controller: {
|
13102
|
+
type: 'btn',
|
13103
|
+
size: 'large'
|
13104
|
+
},
|
13105
|
+
template: compile['default']('{{#view id="foo" class=(string-concat type "-" size)}} Foo{{/view}}')
|
13106
|
+
});
|
13107
|
+
|
13108
|
+
utils.runAppend(view);
|
13109
|
+
|
13110
|
+
ok(jQuery['default']('#foo').hasClass('btn-large'), "applies classname from subexpression");
|
13111
|
+
|
13112
|
+
run['default'](view, view.set, 'controller.size', 'medium');
|
13113
|
+
|
13114
|
+
ok(!jQuery['default']('#foo').hasClass('btn-large'), "removes classname from subexpression update");
|
13115
|
+
ok(jQuery['default']('#foo').hasClass('btn-medium'), "adds classname from subexpression update");
|
13116
|
+
});
|
13117
|
+
|
12856
13118
|
QUnit.test("Should not apply classes when bound property specified is false", function() {
|
12857
13119
|
view = EmberView['default'].create({
|
12858
13120
|
controller: {
|
@@ -13403,7 +13665,7 @@ enifed('ember-htmlbars/tests/helpers/view_test', ['ember-views/views/view', 'con
|
|
13403
13665
|
view = EmberView['default'].create({
|
13404
13666
|
name: 'myView',
|
13405
13667
|
textField: TextField['default'],
|
13406
|
-
template: compile['default']('{{view view.textField
|
13668
|
+
template: compile['default']('{{view view.textField value=view.name}}')
|
13407
13669
|
});
|
13408
13670
|
|
13409
13671
|
utils.runAppend(view);
|
@@ -13475,7 +13737,7 @@ enifed('ember-htmlbars/tests/helpers/view_test', ['ember-views/views/view', 'con
|
|
13475
13737
|
name: 'foo'
|
13476
13738
|
}),
|
13477
13739
|
Subview: Subview,
|
13478
|
-
template: compile['default']('<h1>{{view view.Subview
|
13740
|
+
template: compile['default']('<h1>{{view view.Subview color=color someController=this}}</h1>')
|
13479
13741
|
});
|
13480
13742
|
|
13481
13743
|
view = View.create();
|
@@ -13572,7 +13834,7 @@ enifed('ember-htmlbars/tests/helpers/view_test', ['ember-views/views/view', 'con
|
|
13572
13834
|
|
13573
13835
|
QUnit.test('should work with precompiled templates', function() {
|
13574
13836
|
var templateString = precompile['default']('{{view.value}}');
|
13575
|
-
var compiledTemplate =
|
13837
|
+
var compiledTemplate = system__template['default'](eval(templateString));
|
13576
13838
|
|
13577
13839
|
view = EmberView['default'].create({
|
13578
13840
|
value: 'rendered',
|
@@ -13590,7 +13852,7 @@ enifed('ember-htmlbars/tests/helpers/view_test', ['ember-views/views/view', 'con
|
|
13590
13852
|
equal(view.$().text(), 'updated', 'the precompiled template was updated');
|
13591
13853
|
});
|
13592
13854
|
|
13593
|
-
QUnit.test('bindings should be relative to the current context', function() {
|
13855
|
+
QUnit.test('bindings should be relative to the current context [DEPRECATED]', function() {
|
13594
13856
|
view = EmberView['default'].create({
|
13595
13857
|
museumOpen: true,
|
13596
13858
|
|
@@ -13606,12 +13868,14 @@ enifed('ember-htmlbars/tests/helpers/view_test', ['ember-views/views/view', 'con
|
|
13606
13868
|
template: compile['default']('{{#if view.museumOpen}} {{view view.museumView nameBinding="view.museumDetails.name" dollarsBinding="view.museumDetails.price"}} {{/if}}')
|
13607
13869
|
});
|
13608
13870
|
|
13609
|
-
|
13871
|
+
expectDeprecation(function() {
|
13872
|
+
utils.runAppend(view);
|
13873
|
+
}, /You're attempting to render a view by passing .+Binding to a view helper, but this syntax is deprecated/);
|
13610
13874
|
|
13611
13875
|
equal(trim(view.$().text()), 'Name: SFMoMA Price: $20', 'should print baz twice');
|
13612
13876
|
});
|
13613
13877
|
|
13614
|
-
QUnit.test('bindings should respect keywords', function() {
|
13878
|
+
QUnit.test('bindings should respect keywords [DEPRECATED]', function() {
|
13615
13879
|
view = EmberView['default'].create({
|
13616
13880
|
museumOpen: true,
|
13617
13881
|
|
@@ -13630,6 +13894,32 @@ enifed('ember-htmlbars/tests/helpers/view_test', ['ember-views/views/view', 'con
|
|
13630
13894
|
template: compile['default']('{{#if view.museumOpen}}{{view view.museumView nameBinding="controller.museumDetails.name" dollarsBinding="controller.museumDetails.price"}}{{/if}}')
|
13631
13895
|
});
|
13632
13896
|
|
13897
|
+
expectDeprecation(function() {
|
13898
|
+
utils.runAppend(view);
|
13899
|
+
}, /You're attempting to render a view by passing .+Binding to a view helper, but this syntax is deprecated/);
|
13900
|
+
|
13901
|
+
equal(trim(view.$().text()), 'Name: SFMoMA Price: $20', 'should print baz twice');
|
13902
|
+
});
|
13903
|
+
|
13904
|
+
QUnit.test('should respect keywords', function() {
|
13905
|
+
view = EmberView['default'].create({
|
13906
|
+
museumOpen: true,
|
13907
|
+
|
13908
|
+
controller: {
|
13909
|
+
museumOpen: true,
|
13910
|
+
museumDetails: EmberObject['default'].create({
|
13911
|
+
name: 'SFMoMA',
|
13912
|
+
price: 20
|
13913
|
+
})
|
13914
|
+
},
|
13915
|
+
|
13916
|
+
museumView: EmberView['default'].extend({
|
13917
|
+
template: compile['default']('Name: {{view.name}} Price: ${{view.dollars}}')
|
13918
|
+
}),
|
13919
|
+
|
13920
|
+
template: compile['default']('{{#if view.museumOpen}}{{view view.museumView name=controller.museumDetails.name dollars=controller.museumDetails.price}}{{/if}}')
|
13921
|
+
});
|
13922
|
+
|
13633
13923
|
utils.runAppend(view);
|
13634
13924
|
|
13635
13925
|
equal(trim(view.$().text()), 'Name: SFMoMA Price: $20', 'should print baz twice');
|
@@ -13734,6 +14024,44 @@ enifed('ember-htmlbars/tests/helpers/view_test', ['ember-views/views/view', 'con
|
|
13734
14024
|
}, /must be a subclass or an instance of Ember.View/);
|
13735
14025
|
});
|
13736
14026
|
|
14027
|
+
QUnit.test('Specifying `id` to {{view}} is set on the view.', function() {
|
14028
|
+
registry.register('view:derp', EmberView['default'].extend({
|
14029
|
+
template: compile['default']('<div id="view-id">{{view.id}}</div><div id="view-elementId">{{view.elementId}}</div>')
|
14030
|
+
}));
|
14031
|
+
|
14032
|
+
view = EmberView['default'].create({
|
14033
|
+
container: container,
|
14034
|
+
foo: 'bar',
|
14035
|
+
template: compile['default']('{{view "derp" id=view.foo}}')
|
14036
|
+
});
|
14037
|
+
|
14038
|
+
utils.runAppend(view);
|
14039
|
+
|
14040
|
+
equal(view.$('#bar').length, 1, 'it uses the provided id for the views elementId');
|
14041
|
+
equal(view.$('#view-id').text(), 'bar', 'the views id property is set');
|
14042
|
+
equal(view.$('#view-elementId').text(), 'bar', 'the views elementId property is set');
|
14043
|
+
});
|
14044
|
+
|
14045
|
+
QUnit.test('Specifying `id` to {{view}} does not allow bound id changes.', function() {
|
14046
|
+
registry.register('view:derp', EmberView['default'].extend({
|
14047
|
+
template: compile['default']('<div id="view-id">{{view.id}}</div><div id="view-elementId">{{view.elementId}}</div>')
|
14048
|
+
}));
|
14049
|
+
|
14050
|
+
view = EmberView['default'].create({
|
14051
|
+
container: container,
|
14052
|
+
foo: 'bar',
|
14053
|
+
template: compile['default']('{{view "derp" id=view.foo}}')
|
14054
|
+
});
|
14055
|
+
|
14056
|
+
utils.runAppend(view);
|
14057
|
+
|
14058
|
+
equal(view.$('#view-id').text(), 'bar', 'the views id property is set');
|
14059
|
+
|
14060
|
+
run['default'](view, property_set.set, view, 'foo', 'baz');
|
14061
|
+
|
14062
|
+
equal(view.$('#view-id').text(), 'bar', 'the views id property is not changed');
|
14063
|
+
});
|
14064
|
+
|
13737
14065
|
});
|
13738
14066
|
enifed('ember-htmlbars/tests/helpers/view_test.jscs-test', function () {
|
13739
14067
|
|
@@ -14464,7 +14792,7 @@ enifed('ember-htmlbars/tests/helpers/yield_test', ['ember-metal/run_loop', 'embe
|
|
14464
14792
|
|
14465
14793
|
view = EmberView['default'].create({
|
14466
14794
|
controller: { boundText: "outer", component: component },
|
14467
|
-
template: compile['default']('{{#with boundText as item}}{{#view component
|
14795
|
+
template: compile['default']('{{#with boundText as item}}{{#view component content=item}}{{item}}{{/view}}{{/with}}')
|
14468
14796
|
});
|
14469
14797
|
|
14470
14798
|
utils.runAppend(view);
|
@@ -15594,7 +15922,7 @@ enifed('ember-htmlbars/tests/integration/select_in_template_test', ['ember-runti
|
|
15594
15922
|
}
|
15595
15923
|
});
|
15596
15924
|
|
15597
|
-
QUnit.test("works from a template with bindings", function() {
|
15925
|
+
QUnit.test("works from a template with bindings [DEPRECATED]", function() {
|
15598
15926
|
var Person = EmberObject['default'].extend({
|
15599
15927
|
id: null,
|
15600
15928
|
firstName: null,
|
@@ -15635,6 +15963,70 @@ enifed('ember-htmlbars/tests/integration/select_in_template_test', ['ember-runti
|
|
15635
15963
|
)
|
15636
15964
|
});
|
15637
15965
|
|
15966
|
+
expectDeprecation(function() {
|
15967
|
+
utils.runAppend(view);
|
15968
|
+
}, /You're attempting to render a view by passing .+Binding to a view helper, but this syntax is deprecated/);
|
15969
|
+
|
15970
|
+
var select = view.get('select');
|
15971
|
+
ok(select.$().length, "Select was rendered");
|
15972
|
+
equal(select.$('option').length, 5, "Options were rendered");
|
15973
|
+
equal(select.$().text(), "Pick a person:Yehuda KatzTom DalePeter WagenetErik Bryn\n", "Option values were rendered");
|
15974
|
+
equal(select.get('selection'), null, "Nothing has been selected");
|
15975
|
+
|
15976
|
+
run['default'](function() {
|
15977
|
+
application.selectedPersonController.set('person', erik);
|
15978
|
+
});
|
15979
|
+
|
15980
|
+
equal(select.get('selection'), erik, "Selection was updated through binding");
|
15981
|
+
run['default'](function() {
|
15982
|
+
application.peopleController.pushObject(Person.create({ id: 5, firstName: "James", lastName: "Rosen" }));
|
15983
|
+
});
|
15984
|
+
|
15985
|
+
equal(select.$('option').length, 6, "New option was added");
|
15986
|
+
equal(select.get('selection'), erik, "Selection was maintained after new option was added");
|
15987
|
+
});
|
15988
|
+
|
15989
|
+
QUnit.test("works from a template", function() {
|
15990
|
+
var Person = EmberObject['default'].extend({
|
15991
|
+
id: null,
|
15992
|
+
firstName: null,
|
15993
|
+
lastName: null,
|
15994
|
+
|
15995
|
+
fullName: computed.computed(function() {
|
15996
|
+
return this.get('firstName') + " " + this.get('lastName');
|
15997
|
+
}).property('firstName', 'lastName')
|
15998
|
+
});
|
15999
|
+
|
16000
|
+
var erik = Person.create({ id: 4, firstName: 'Erik', lastName: 'Bryn' });
|
16001
|
+
|
16002
|
+
var application = Namespace['default'].create();
|
16003
|
+
|
16004
|
+
application.peopleController = ArrayController['default'].create({
|
16005
|
+
content: Ember.A([
|
16006
|
+
Person.create({ id: 1, firstName: 'Yehuda', lastName: 'Katz' }),
|
16007
|
+
Person.create({ id: 2, firstName: 'Tom', lastName: 'Dale' }),
|
16008
|
+
Person.create({ id: 3, firstName: 'Peter', lastName: 'Wagenet' }),
|
16009
|
+
erik
|
16010
|
+
])
|
16011
|
+
});
|
16012
|
+
|
16013
|
+
application.selectedPersonController = EmberObject['default'].create({
|
16014
|
+
person: null
|
16015
|
+
});
|
16016
|
+
|
16017
|
+
view = EmberView['default'].create({
|
16018
|
+
app: application,
|
16019
|
+
selectView: SelectView['default'],
|
16020
|
+
template: compile['default'](
|
16021
|
+
'{{view view.selectView viewName="select"' +
|
16022
|
+
' content=view.app.peopleController' +
|
16023
|
+
' optionLabelPath="content.fullName"' +
|
16024
|
+
' optionValuePath="content.id"' +
|
16025
|
+
' prompt="Pick a person:"' +
|
16026
|
+
' selection=view.app.selectedPersonController.person}}'
|
16027
|
+
)
|
16028
|
+
});
|
16029
|
+
|
15638
16030
|
utils.runAppend(view);
|
15639
16031
|
|
15640
16032
|
var select = view.get('select');
|
@@ -15665,8 +16057,8 @@ enifed('ember-htmlbars/tests/integration/select_in_template_test', ['ember-runti
|
|
15665
16057
|
selectView: SelectView['default'],
|
15666
16058
|
template: compile['default'](
|
15667
16059
|
'{{view view.selectView viewName="select"' +
|
15668
|
-
'
|
15669
|
-
'
|
16060
|
+
' content=view.user.options' +
|
16061
|
+
' selection=view.user.selectedOption}}'
|
15670
16062
|
)
|
15671
16063
|
});
|
15672
16064
|
|
@@ -15700,8 +16092,8 @@ enifed('ember-htmlbars/tests/integration/select_in_template_test', ['ember-runti
|
|
15700
16092
|
selectView: SelectView['default'],
|
15701
16093
|
template: compile['default'](
|
15702
16094
|
'{{view view.selectView viewName="select"' +
|
15703
|
-
'
|
15704
|
-
'
|
16095
|
+
' content=view.proxy' +
|
16096
|
+
' selection=view.proxy.selectedOption}}'
|
15705
16097
|
)
|
15706
16098
|
});
|
15707
16099
|
|
@@ -15746,7 +16138,9 @@ enifed('ember-htmlbars/tests/integration/select_in_template_test', ['ember-runti
|
|
15746
16138
|
equal(selectEl.selectedIndex, 1, "The DOM is updated to reflect the new selection");
|
15747
16139
|
}
|
15748
16140
|
|
15749
|
-
QUnit.test("select element should correctly initialize and update selectedIndex and bound properties when using valueBinding
|
16141
|
+
QUnit.test("select element should correctly initialize and update selectedIndex and bound properties when using valueBinding [DEPRECATED]", function() {
|
16142
|
+
expectDeprecation(/You're attempting to render a view by passing .+Binding to a view helper, but this syntax is deprecated./);
|
16143
|
+
|
15750
16144
|
testValueBinding(
|
15751
16145
|
'{{view view.selectView viewName="select"' +
|
15752
16146
|
' contentBinding="view.collection"' +
|
@@ -15757,7 +16151,7 @@ enifed('ember-htmlbars/tests/integration/select_in_template_test', ['ember-runti
|
|
15757
16151
|
);
|
15758
16152
|
});
|
15759
16153
|
|
15760
|
-
QUnit.test("select element should correctly initialize and update selectedIndex and bound properties when using
|
16154
|
+
QUnit.test("select element should correctly initialize and update selectedIndex and bound properties when using a bound value", function() {
|
15761
16155
|
testValueBinding(
|
15762
16156
|
'{{view view.selectView viewName="select"' +
|
15763
16157
|
' content=view.collection' +
|
@@ -15796,7 +16190,9 @@ enifed('ember-htmlbars/tests/integration/select_in_template_test', ['ember-runti
|
|
15796
16190
|
equal(select.$('option:eq(1)').prop('selected'), true, "Selected property is set to proper option");
|
15797
16191
|
}
|
15798
16192
|
|
15799
|
-
QUnit.test("select element should correctly initialize and update selectedIndex and bound properties when using selectionBinding
|
16193
|
+
QUnit.test("select element should correctly initialize and update selectedIndex and bound properties when using selectionBinding [DEPRECATED]", function() {
|
16194
|
+
expectDeprecation(/You're attempting to render a view by passing .+Binding to a view helper, but this syntax is deprecated./);
|
16195
|
+
|
15800
16196
|
testSelectionBinding(
|
15801
16197
|
'{{view view.selectView viewName="select"' +
|
15802
16198
|
' contentBinding="view.collection"' +
|
@@ -15807,7 +16203,7 @@ enifed('ember-htmlbars/tests/integration/select_in_template_test', ['ember-runti
|
|
15807
16203
|
);
|
15808
16204
|
});
|
15809
16205
|
|
15810
|
-
QUnit.test("select element should correctly initialize and update selectedIndex and bound properties when using
|
16206
|
+
QUnit.test("select element should correctly initialize and update selectedIndex and bound properties when using a bound selection", function() {
|
15811
16207
|
testSelectionBinding(
|
15812
16208
|
'{{view view.selectView viewName="select"' +
|
15813
16209
|
' content=view.collection' +
|
@@ -16961,7 +17357,7 @@ enifed('ember-htmlbars/tests/system/render_view_test', ['ember-runtime/tests/uti
|
|
16961
17357
|
view = EmberView['default'].create({
|
16962
17358
|
template: {
|
16963
17359
|
isHTMLBars: true,
|
16964
|
-
revision: 'Ember@1.11.0
|
17360
|
+
revision: 'Ember@1.11.0',
|
16965
17361
|
render: function(view, env, contextualElement, blockArguments) {
|
16966
17362
|
for (var i = 0, l = keyNames.length; i < l; i++) {
|
16967
17363
|
var keyName = keyNames[i];
|
@@ -30905,6 +31301,26 @@ enifed('ember-routing-htmlbars/tests/helpers/render_test', ['ember-metal/core',
|
|
30905
31301
|
}, "The second argument of {{render}} must be a path, e.g. {{render \"post\" post}}.");
|
30906
31302
|
});
|
30907
31303
|
|
31304
|
+
QUnit.test("{{render}} helper should let view provide its own template", function() {
|
31305
|
+
var template = "{{render 'fish'}}";
|
31306
|
+
var controller = controllers__controller["default"].extend({ container: container });
|
31307
|
+
view = EmberView['default'].create({
|
31308
|
+
controller: controller.create(),
|
31309
|
+
template: compile['default'](template)
|
31310
|
+
});
|
31311
|
+
|
31312
|
+
container._registry.register('template:fish', compile['default']('Hello fish!'));
|
31313
|
+
container._registry.register('template:other', compile['default']('Hello other!'));
|
31314
|
+
|
31315
|
+
container._registry.register('view:fish', EmberView['default'].extend({
|
31316
|
+
templateName: 'other'
|
31317
|
+
}));
|
31318
|
+
|
31319
|
+
tests__utils.runAppend(view);
|
31320
|
+
|
31321
|
+
equal(view.$().text(), 'Hello other!');
|
31322
|
+
});
|
31323
|
+
|
30908
31324
|
});
|
30909
31325
|
enifed('ember-routing-htmlbars/tests/helpers/render_test.jscs-test', function () {
|
30910
31326
|
|
@@ -31838,14 +32254,14 @@ enifed('ember-routing/tests/location/hash_location_test', ['ember-metal/core', '
|
|
31838
32254
|
var pathname = (tmp.pathname.match(/^\//)) ? tmp.pathname : '/' + tmp.pathname;
|
31839
32255
|
|
31840
32256
|
return {
|
31841
|
-
|
31842
|
-
|
31843
|
-
|
31844
|
-
|
31845
|
-
|
31846
|
-
|
31847
|
-
|
31848
|
-
|
32257
|
+
hash: tmp.hash,
|
32258
|
+
host: tmp.host || 'localhost',
|
32259
|
+
hostname: tmp.hostname || 'localhost',
|
32260
|
+
href: tmp.href,
|
32261
|
+
pathname: pathname,
|
32262
|
+
port: tmp.port || '',
|
32263
|
+
protocol: protocol,
|
32264
|
+
search: tmp.search
|
31849
32265
|
};
|
31850
32266
|
}
|
31851
32267
|
|
@@ -32044,14 +32460,14 @@ enifed('ember-routing/tests/location/history_location_test', ['ember-metal/prope
|
|
32044
32460
|
var pathname = (tmp.pathname.match(/^\//)) ? tmp.pathname : '/' + tmp.pathname;
|
32045
32461
|
|
32046
32462
|
return {
|
32047
|
-
|
32048
|
-
|
32049
|
-
|
32050
|
-
|
32051
|
-
|
32052
|
-
|
32053
|
-
|
32054
|
-
|
32463
|
+
hash: tmp.hash,
|
32464
|
+
host: tmp.host || 'localhost',
|
32465
|
+
hostname: tmp.hostname || 'localhost',
|
32466
|
+
href: tmp.href,
|
32467
|
+
pathname: pathname,
|
32468
|
+
port: tmp.port || '',
|
32469
|
+
protocol: protocol,
|
32470
|
+
search: tmp.search
|
32055
32471
|
};
|
32056
32472
|
}
|
32057
32473
|
|
@@ -32494,8 +32910,8 @@ enifed('ember-routing/tests/system/dsl_test', ['ember-routing/system/router', 'e
|
|
32494
32910
|
ok(router.router.recognizer.names['bleep.bloop.blork'], 'parent name was used as base of nested routes');
|
32495
32911
|
});
|
32496
32912
|
|
32497
|
-
|
32498
32913
|
// jscs:disable validateIndentation
|
32914
|
+
|
32499
32915
|
|
32500
32916
|
QUnit.test("should add loading and error routes if _isRouterMapResult is true", function() {
|
32501
32917
|
Router.map(function() {
|
@@ -32523,8 +32939,8 @@ enifed('ember-routing/tests/system/dsl_test', ['ember-routing/system/router', 'e
|
|
32523
32939
|
ok(!router.router.recognizer.names['blork_error'], 'error route was not added');
|
32524
32940
|
});
|
32525
32941
|
|
32526
|
-
// jscs:enable validateIndentation
|
32527
32942
|
|
32943
|
+
// jscs:enable validateIndentation
|
32528
32944
|
|
32529
32945
|
});
|
32530
32946
|
enifed('ember-routing/tests/system/dsl_test.jscs-test', function () {
|
@@ -34650,18 +35066,18 @@ enifed('ember-runtime/tests/computed/reduce_computed_macros_test', ['ember-metal
|
|
34650
35066
|
QUnit.test("it throws an error if given fewer or more than two dependent properties", function() {
|
34651
35067
|
throws(function () {
|
34652
35068
|
EmberObject['default'].createWithMixins({
|
34653
|
-
|
34654
|
-
|
34655
|
-
|
35069
|
+
array: Ember['default'].A([1,2,3,4,5,6,7]),
|
35070
|
+
array2: Ember['default'].A([3,4,5]),
|
35071
|
+
diff: reduce_computed_macros.setDiff('array')
|
34656
35072
|
});
|
34657
35073
|
}, /requires exactly two dependent arrays/, "setDiff requires two dependent arrays");
|
34658
35074
|
|
34659
35075
|
throws(function () {
|
34660
35076
|
EmberObject['default'].createWithMixins({
|
34661
|
-
|
34662
|
-
|
34663
|
-
|
34664
|
-
|
35077
|
+
array: Ember['default'].A([1,2,3,4,5,6,7]),
|
35078
|
+
array2: Ember['default'].A([3,4,5]),
|
35079
|
+
array3: Ember['default'].A([7]),
|
35080
|
+
diff: reduce_computed_macros.setDiff('array', 'array2', 'array3')
|
34665
35081
|
});
|
34666
35082
|
}, /requires exactly two dependent arrays/, "setDiff requires two dependent arrays");
|
34667
35083
|
});
|
@@ -35688,7 +36104,7 @@ enifed('ember-runtime/tests/computed/reduce_computed_test', ['ember-metal/core',
|
|
35688
36104
|
|
35689
36105
|
QUnit.test("after the first retrieval, array computed properties observe additions to dependent arrays", function() {
|
35690
36106
|
var numbers = property_get.get(obj, 'numbers');
|
35691
|
-
|
36107
|
+
// set up observers
|
35692
36108
|
var evenNumbers = property_get.get(obj, 'evenNumbers');
|
35693
36109
|
|
35694
36110
|
run['default'](function() {
|
@@ -35700,7 +36116,7 @@ enifed('ember-runtime/tests/computed/reduce_computed_test', ['ember-metal/core',
|
|
35700
36116
|
|
35701
36117
|
QUnit.test("after the first retrieval, array computed properties observe removals from dependent arrays", function() {
|
35702
36118
|
var numbers = property_get.get(obj, 'numbers');
|
35703
|
-
|
36119
|
+
// set up observers
|
35704
36120
|
var evenNumbers = property_get.get(obj, 'evenNumbers');
|
35705
36121
|
|
35706
36122
|
run['default'](function() {
|
@@ -36619,7 +37035,7 @@ enifed('ember-runtime/tests/computed/reduce_computed_test.jshint', function () {
|
|
36619
37035
|
});
|
36620
37036
|
|
36621
37037
|
});
|
36622
|
-
enifed('ember-runtime/tests/controllers/array_controller_test', ['ember-metal/core', 'ember-runtime/tests/suites/mutable_array', 'ember-runtime/controllers/array_controller'], function (Ember, MutableArrayTests, ArrayController) {
|
37038
|
+
enifed('ember-runtime/tests/controllers/array_controller_test', ['ember-metal/core', 'ember-runtime/tests/suites/mutable_array', 'ember-runtime/controllers/array_controller', 'ember-metal/property_set', 'ember-metal/property_get'], function (Ember, MutableArrayTests, ArrayController, property_set, property_get) {
|
36623
37039
|
|
36624
37040
|
'use strict';
|
36625
37041
|
|
@@ -36644,6 +37060,8 @@ enifed('ember-runtime/tests/controllers/array_controller_test', ['ember-metal/co
|
|
36644
37060
|
}
|
36645
37061
|
}).run();
|
36646
37062
|
|
37063
|
+
QUnit.module("ember-runtime: array_controller");
|
37064
|
+
|
36647
37065
|
QUnit.test("defaults its `model` to an empty array", function () {
|
36648
37066
|
var Controller = ArrayController['default'].extend();
|
36649
37067
|
deepEqual(Controller.create().get("model"), [], "`ArrayController` defaults its model to an empty array");
|
@@ -36651,13 +37069,34 @@ enifed('ember-runtime/tests/controllers/array_controller_test', ['ember-metal/co
|
|
36651
37069
|
equal(Controller.create().get('lastObject'), undefined, 'can fetch lastObject');
|
36652
37070
|
});
|
36653
37071
|
|
36654
|
-
|
36655
37072
|
QUnit.test("Ember.ArrayController length property works even if model was not set initially", function() {
|
36656
37073
|
var controller = ArrayController['default'].create();
|
36657
37074
|
controller.pushObject('item');
|
36658
37075
|
equal(controller.get('length'), 1);
|
36659
37076
|
});
|
36660
37077
|
|
37078
|
+
QUnit.test('works properly when model is set to an Ember.A()', function() {
|
37079
|
+
var controller = ArrayController['default'].create();
|
37080
|
+
|
37081
|
+
property_set.set(controller, 'model', Ember['default'].A(['red', 'green']));
|
37082
|
+
|
37083
|
+
deepEqual(property_get.get(controller, 'model'), ['red', 'green'], "can set model as an Ember.Array");
|
37084
|
+
});
|
37085
|
+
|
37086
|
+
QUnit.test('works properly when model is set to a plain array', function() {
|
37087
|
+
var controller = ArrayController['default'].create();
|
37088
|
+
|
37089
|
+
if (Ember['default'].EXTEND_PROTOTYPES) {
|
37090
|
+
property_set.set(controller, 'model', ['red', 'green']);
|
37091
|
+
|
37092
|
+
deepEqual(property_get.get(controller, 'model'), ['red', 'green'], "can set model as a plain array");
|
37093
|
+
} else {
|
37094
|
+
expectAssertion(function() {
|
37095
|
+
property_set.set(controller, 'model', ['red', 'green']);
|
37096
|
+
}, /ArrayController expects `model` to implement the Ember.Array mixin. This can often be fixed by wrapping your model with `Ember\.A\(\)`./);
|
37097
|
+
}
|
37098
|
+
});
|
37099
|
+
|
36661
37100
|
});
|
36662
37101
|
enifed('ember-runtime/tests/controllers/array_controller_test.jscs-test', function () {
|
36663
37102
|
|
@@ -36679,7 +37118,7 @@ enifed('ember-runtime/tests/controllers/array_controller_test.jshint', function
|
|
36679
37118
|
});
|
36680
37119
|
|
36681
37120
|
});
|
36682
|
-
enifed('ember-runtime/tests/controllers/controller_test', ['ember-runtime/controllers/controller', 'ember-runtime/system/service', 'ember-runtime/controllers/object_controller', 'ember-metal/mixin', 'ember-runtime/system/object', 'ember-runtime/system/container', 'ember-runtime/inject', 'ember-metal/property_get'], function (Controller, Service, object_controller, Mixin, Object, system__container, inject, property_get) {
|
37121
|
+
enifed('ember-runtime/tests/controllers/controller_test', ['ember-runtime/controllers/controller', 'ember-runtime/system/service', 'ember-runtime/controllers/array_controller', 'ember-runtime/controllers/object_controller', 'ember-metal/mixin', 'ember-runtime/system/object', 'ember-runtime/system/container', 'ember-runtime/inject', 'ember-metal/property_get'], function (Controller, Service, ArrayController, object_controller, Mixin, Object, system__container, inject, property_get) {
|
36683
37122
|
|
36684
37123
|
'use strict';
|
36685
37124
|
|
@@ -36895,6 +37334,42 @@ enifed('ember-runtime/tests/controllers/controller_test', ['ember-runtime/contro
|
|
36895
37334
|
equal(postsController, postController.get('postsController'), "controller.posts is injected");
|
36896
37335
|
});
|
36897
37336
|
|
37337
|
+
QUnit.test("controllers can be injected into ObjectControllers", function() {
|
37338
|
+
var registry = new system__container.Registry();
|
37339
|
+
var container = registry.container();
|
37340
|
+
|
37341
|
+
registry.register('controller:post', Controller['default'].extend({
|
37342
|
+
postsController: inject['default'].controller('posts')
|
37343
|
+
}));
|
37344
|
+
|
37345
|
+
registry.register('controller:posts', object_controller["default"].extend());
|
37346
|
+
|
37347
|
+
var postController = container.lookup('controller:post');
|
37348
|
+
var postsController;
|
37349
|
+
expectDeprecation(function() {
|
37350
|
+
postsController = container.lookup('controller:posts');
|
37351
|
+
}, object_controller.objectControllerDeprecation);
|
37352
|
+
|
37353
|
+
equal(postsController, postController.get('postsController'), "controller.posts is injected");
|
37354
|
+
});
|
37355
|
+
|
37356
|
+
QUnit.test("controllers can be injected into ArrayControllers", function() {
|
37357
|
+
var registry = new system__container.Registry();
|
37358
|
+
var container = registry.container();
|
37359
|
+
|
37360
|
+
registry.register('controller:post', Controller['default'].extend({
|
37361
|
+
postsController: inject['default'].controller('posts')
|
37362
|
+
}));
|
37363
|
+
|
37364
|
+
registry.register('controller:posts', ArrayController['default'].extend());
|
37365
|
+
|
37366
|
+
var postController = container.lookup('controller:post');
|
37367
|
+
var postsController = container.lookup('controller:posts');
|
37368
|
+
|
37369
|
+
equal(postsController, postController.get('postsController'), "controller.posts is injected");
|
37370
|
+
});
|
37371
|
+
|
37372
|
+
|
36898
37373
|
QUnit.test("services can be injected into controllers", function() {
|
36899
37374
|
var registry = new system__container.Registry();
|
36900
37375
|
var container = registry.container();
|
@@ -39349,7 +39824,7 @@ enifed('ember-runtime/tests/legacy_1x/mixins/observable/propertyChanges_test', [
|
|
39349
39824
|
equal(ObjectA.prop, "propValue");
|
39350
39825
|
ObjectA.endPropertyChanges();
|
39351
39826
|
|
39352
|
-
|
39827
|
+
//end inner nest
|
39353
39828
|
ObjectA.set('prop', 'changePropValue');
|
39354
39829
|
equal(ObjectA.newFoo, "newFooValue");
|
39355
39830
|
|
@@ -39686,9 +40161,9 @@ enifed('ember-runtime/tests/legacy_1x/system/binding_test', ['ember-metal/core',
|
|
39686
40161
|
});
|
39687
40162
|
|
39688
40163
|
TestNamespace.toObject = EmberObject['default'].createWithMixins({
|
39689
|
-
|
39690
|
-
|
39691
|
-
|
40164
|
+
valueBinding: ember_metal__binding.Binding.from('TestNamespace.fromObject.value'),
|
40165
|
+
localValue: "originalLocal",
|
40166
|
+
relativeBinding: ember_metal__binding.Binding.from('localValue')
|
39692
40167
|
});
|
39693
40168
|
});
|
39694
40169
|
},
|
@@ -39994,7 +40469,7 @@ enifed('ember-runtime/tests/legacy_1x/system/object/bindings_test', ['ember-meta
|
|
39994
40469
|
teardown: function() {
|
39995
40470
|
Ember['default'].lookup = originalLookup;
|
39996
40471
|
TestObject = fromObject = extraObject = null;
|
39997
|
-
|
40472
|
+
// delete TestNamespace;
|
39998
40473
|
}
|
39999
40474
|
|
40000
40475
|
};
|
@@ -40571,8 +41046,8 @@ enifed('ember-runtime/tests/legacy_1x/system/set_test', ['ember-metal/core', 'em
|
|
40571
41046
|
});
|
40572
41047
|
|
40573
41048
|
QUnit.module("Set.pop + Set.copy", {
|
40574
|
-
|
40575
|
-
|
41049
|
+
// generate a set with every type of object, but none of the specific
|
41050
|
+
// ones we add in the tests below...
|
40576
41051
|
setup: function() {
|
40577
41052
|
ignoreDeprecation(function() {
|
40578
41053
|
set = new Set['default'](Ember['default'].A([
|
@@ -43204,8 +43679,7 @@ enifed('ember-runtime/tests/suites/array', ['exports', 'ember-runtime/tests/suit
|
|
43204
43679
|
'use strict';
|
43205
43680
|
|
43206
43681
|
var ObserverClass = enumerable.ObserverClass.extend({
|
43207
|
-
|
43208
|
-
observeArray: function(obj) {
|
43682
|
+
observeArray: function(obj) {
|
43209
43683
|
obj.addArrayObserver(this);
|
43210
43684
|
return this;
|
43211
43685
|
},
|
@@ -52187,7 +52661,7 @@ enifed('ember-template-compiler/tests/system/compile_test', ['ember-template-com
|
|
52187
52661
|
|
52188
52662
|
var actual = compile['default'](templateString);
|
52189
52663
|
|
52190
|
-
equal(actual.revision, 'Ember@1.11.0
|
52664
|
+
equal(actual.revision, 'Ember@1.11.0', 'revision is included in generated template');
|
52191
52665
|
});
|
52192
52666
|
|
52193
52667
|
QUnit.test('the template revision is different than the HTMLBars default revision', function() {
|
@@ -52423,7 +52897,7 @@ enifed('ember-testing/test.jshint', function () {
|
|
52423
52897
|
});
|
52424
52898
|
|
52425
52899
|
});
|
52426
|
-
enifed('ember-testing/tests/acceptance_test', ['ember-metal/run_loop', 'ember-views/system/jquery', 'ember-testing/test', 'ember-testing/adapters/qunit', 'ember-views/views/view', 'ember-testing/initializers', 'ember-application/system/application', 'ember-routing/system/route', 'ember-template-compiler/system/compile', 'ember-routing'], function (run, jQuery, Test, QUnitAdapter, EmberView, __dep5__, EmberApplication, EmberRoute, compile) {
|
52900
|
+
enifed('ember-testing/tests/acceptance_test', ['ember-metal/run_loop', 'ember-views/system/jquery', 'ember-testing/test', 'ember-testing/adapters/qunit', 'ember-views/views/view', 'ember-testing/initializers', 'ember-application/system/application', 'ember-routing/system/route', 'ember-template-compiler/system/compile', 'ember-runtime/ext/rsvp', 'ember-routing'], function (run, jQuery, Test, QUnitAdapter, EmberView, __dep5__, EmberApplication, EmberRoute, compile, RSVP) {
|
52427
52901
|
|
52428
52902
|
'use strict';
|
52429
52903
|
|
@@ -52486,7 +52960,7 @@ enifed('ember-testing/tests/acceptance_test', ['ember-metal/run_loop', 'ember-vi
|
|
52486
52960
|
});
|
52487
52961
|
|
52488
52962
|
Test['default'].registerAsyncHelper('slowHelper', function() {
|
52489
|
-
return
|
52963
|
+
return new RSVP['default'].Promise(function(resolve) {
|
52490
52964
|
setTimeout(resolve, 10);
|
52491
52965
|
});
|
52492
52966
|
});
|
@@ -54786,26 +55260,6 @@ enifed('ember-views/system/renderer.jshint', function () {
|
|
54786
55260
|
ok(true, 'ember-views/system/renderer.js should pass jshint.');
|
54787
55261
|
});
|
54788
55262
|
|
54789
|
-
});
|
54790
|
-
enifed('ember-views/system/sanitize_attribute_value.jscs-test', function () {
|
54791
|
-
|
54792
|
-
'use strict';
|
54793
|
-
|
54794
|
-
module('JSCS - ember-views/system');
|
54795
|
-
test('ember-views/system/sanitize_attribute_value.js should pass jscs', function() {
|
54796
|
-
ok(true, 'ember-views/system/sanitize_attribute_value.js should pass jscs.');
|
54797
|
-
});
|
54798
|
-
|
54799
|
-
});
|
54800
|
-
enifed('ember-views/system/sanitize_attribute_value.jshint', function () {
|
54801
|
-
|
54802
|
-
'use strict';
|
54803
|
-
|
54804
|
-
module('JSHint - ember-views/system');
|
54805
|
-
test('ember-views/system/sanitize_attribute_value.js should pass jshint', function() {
|
54806
|
-
ok(true, 'ember-views/system/sanitize_attribute_value.js should pass jshint.');
|
54807
|
-
});
|
54808
|
-
|
54809
55263
|
});
|
54810
55264
|
enifed('ember-views/system/utils.jscs-test', function () {
|
54811
55265
|
|
@@ -55936,84 +56390,6 @@ enifed('ember-views/tests/system/render_buffer_test.jshint', function () {
|
|
55936
56390
|
ok(true, 'ember-views/tests/system/render_buffer_test.js should pass jshint.');
|
55937
56391
|
});
|
55938
56392
|
|
55939
|
-
});
|
55940
|
-
enifed('ember-views/tests/system/sanitize_attribute_value_test', ['ember-views/system/sanitize_attribute_value', 'ember-htmlbars/utils/string', 'dom-helper'], function (sanitizeAttributeValue, string, DOMHelper) {
|
55941
|
-
|
55942
|
-
'use strict';
|
55943
|
-
|
55944
|
-
QUnit.module('ember-views: sanitizeAttributeValue(null, "href")');
|
55945
|
-
|
55946
|
-
var goodProtocols = ['https', 'http', 'ftp', 'tel', 'file'];
|
55947
|
-
var dom = new DOMHelper['default']();
|
55948
|
-
|
55949
|
-
for (var i = 0, l = goodProtocols.length; i < l; i++) {
|
55950
|
-
buildProtocolTest(goodProtocols[i]);
|
55951
|
-
}
|
55952
|
-
|
55953
|
-
function buildProtocolTest(protocol) {
|
55954
|
-
QUnit.test('allows ' + protocol + ' protocol when element is not provided', function() {
|
55955
|
-
expect(1);
|
55956
|
-
|
55957
|
-
var expected = protocol + '://foo.com';
|
55958
|
-
var actual = sanitizeAttributeValue['default'](dom, null, 'href', expected);
|
55959
|
-
|
55960
|
-
equal(actual, expected, 'protocol not escaped');
|
55961
|
-
});
|
55962
|
-
}
|
55963
|
-
|
55964
|
-
QUnit.test('blocks javascript: protocol', function() {
|
55965
|
-
/* jshint scripturl:true */
|
55966
|
-
|
55967
|
-
expect(1);
|
55968
|
-
|
55969
|
-
var expected = 'javascript:alert("foo")';
|
55970
|
-
var actual = sanitizeAttributeValue['default'](dom, null, 'href', expected);
|
55971
|
-
|
55972
|
-
equal(actual, 'unsafe:' + expected, 'protocol escaped');
|
55973
|
-
});
|
55974
|
-
|
55975
|
-
QUnit.test('blocks blacklisted protocols', function() {
|
55976
|
-
/* jshint scripturl:true */
|
55977
|
-
|
55978
|
-
expect(1);
|
55979
|
-
|
55980
|
-
var expected = 'javascript:alert("foo")';
|
55981
|
-
var actual = sanitizeAttributeValue['default'](dom, null, 'href', expected);
|
55982
|
-
|
55983
|
-
equal(actual, 'unsafe:' + expected, 'protocol escaped');
|
55984
|
-
});
|
55985
|
-
|
55986
|
-
QUnit.test('does not block SafeStrings', function() {
|
55987
|
-
/* jshint scripturl:true */
|
55988
|
-
|
55989
|
-
expect(1);
|
55990
|
-
|
55991
|
-
var expected = 'javascript:alert("foo")';
|
55992
|
-
var actual = sanitizeAttributeValue['default'](dom, null, 'href', new string.SafeString(expected));
|
55993
|
-
|
55994
|
-
equal(actual, expected, 'protocol unescaped');
|
55995
|
-
});
|
55996
|
-
|
55997
|
-
});
|
55998
|
-
enifed('ember-views/tests/system/sanitize_attribute_value_test.jscs-test', function () {
|
55999
|
-
|
56000
|
-
'use strict';
|
56001
|
-
|
56002
|
-
module('JSCS - ember-views/tests/system');
|
56003
|
-
test('ember-views/tests/system/sanitize_attribute_value_test.js should pass jscs', function() {
|
56004
|
-
ok(true, 'ember-views/tests/system/sanitize_attribute_value_test.js should pass jscs.');
|
56005
|
-
});
|
56006
|
-
|
56007
|
-
});
|
56008
|
-
enifed('ember-views/tests/system/sanitize_attribute_value_test.jshint', function () {
|
56009
|
-
|
56010
|
-
'use strict';
|
56011
|
-
|
56012
|
-
module('JSHint - ember-views/tests/system');
|
56013
|
-
test('ember-views/tests/system/sanitize_attribute_value_test.js should pass jshint', function() {
|
56014
|
-
ok(true, 'ember-views/tests/system/sanitize_attribute_value_test.js should pass jshint.');
|
56015
|
-
});
|
56016
|
-
|
56017
56393
|
});
|
56018
56394
|
enifed('ember-views/tests/system/view_utils_test', ['ember-metal/run_loop', 'ember-views/views/view'], function (run, View) {
|
56019
56395
|
|
@@ -56868,10 +57244,10 @@ enifed('ember-views/tests/views/collection_test', ['ember-metal/core', 'ember-me
|
|
56868
57244
|
Ember['default'].lookup = {
|
56869
57245
|
App: {
|
56870
57246
|
EmptyView: View['default'].extend({
|
56871
|
-
|
56872
|
-
|
56873
|
-
|
56874
|
-
|
57247
|
+
tagName: 'kbd',
|
57248
|
+
render: function(buf) {
|
57249
|
+
buf.push("THIS IS AN EMPTY VIEW");
|
57250
|
+
}
|
56875
57251
|
})
|
56876
57252
|
}
|
56877
57253
|
};
|
@@ -62224,7 +62600,7 @@ enifed('ember-views/tests/views/view/inject_test.jshint', function () {
|
|
62224
62600
|
});
|
62225
62601
|
|
62226
62602
|
});
|
62227
|
-
enifed('ember-views/tests/views/view/is_visible_test', ['ember-metal/property_get', 'ember-metal/property_set', 'ember-metal/run_loop', 'ember-views/views/view', 'ember-views/views/container_view'], function (property_get, property_set, run, EmberView, ContainerView) {
|
62603
|
+
enifed('ember-views/tests/views/view/is_visible_test', ['ember-metal/property_get', 'ember-metal/property_set', 'ember-metal/run_loop', 'ember-views/views/view', 'ember-views/views/container_view', 'ember-template-compiler/system/compile'], function (property_get, property_set, run, EmberView, ContainerView, compile) {
|
62228
62604
|
|
62229
62605
|
'use strict';
|
62230
62606
|
|
@@ -62350,8 +62726,28 @@ enifed('ember-views/tests/views/view/is_visible_test', ['ember-metal/property_ge
|
|
62350
62726
|
});
|
62351
62727
|
|
62352
62728
|
QUnit.test("view should be notified after isVisible is set to false and the element has been hidden", function() {
|
62353
|
-
|
62354
|
-
|
62729
|
+
run['default'](function() {
|
62730
|
+
view = View.create({ isVisible: false });
|
62731
|
+
view.append();
|
62732
|
+
});
|
62733
|
+
|
62734
|
+
ok(view.$().is(':hidden'), "precond - view is hidden when appended");
|
62735
|
+
|
62736
|
+
run['default'](function() {
|
62737
|
+
view.set('isVisible', true);
|
62738
|
+
});
|
62739
|
+
|
62740
|
+
ok(view.$().is(':visible'), "precond - view is now visible");
|
62741
|
+
equal(parentBecameVisible, 1);
|
62742
|
+
equal(childBecameVisible, 1);
|
62743
|
+
equal(grandchildBecameVisible, 1);
|
62744
|
+
});
|
62745
|
+
|
62746
|
+
QUnit.test("view should change visibility with a virtual childView", function() {
|
62747
|
+
view = View.create({
|
62748
|
+
isVisible: true,
|
62749
|
+
template: compile['default']('<div {{bind-attr bing="tweep"}}></div>')
|
62750
|
+
});
|
62355
62751
|
|
62356
62752
|
run['default'](function() {
|
62357
62753
|
view.append();
|
@@ -62360,13 +62756,10 @@ enifed('ember-views/tests/views/view/is_visible_test', ['ember-metal/property_ge
|
|
62360
62756
|
ok(view.$().is(':visible'), "precond - view is visible when appended");
|
62361
62757
|
|
62362
62758
|
run['default'](function() {
|
62363
|
-
|
62759
|
+
view.set('isVisible', false);
|
62364
62760
|
});
|
62365
62761
|
|
62366
|
-
ok(
|
62367
|
-
|
62368
|
-
equal(childBecameHidden, 1);
|
62369
|
-
equal(grandchildBecameHidden, 1);
|
62762
|
+
ok(view.$().is(':hidden'), "precond - view is now hidden");
|
62370
62763
|
});
|
62371
62764
|
|
62372
62765
|
QUnit.test("view should be notified after isVisible is set to true and the element has been shown", function() {
|
@@ -65517,7 +65910,7 @@ enifed('ember/tests/helpers/helper_registration_test', ['ember', 'ember-htmlbars
|
|
65517
65910
|
ok(!helpers['x-borf'], "Container-registered helper doesn't wind up on global helpers hash");
|
65518
65911
|
});
|
65519
65912
|
|
65520
|
-
|
65913
|
+
// need to make `makeBoundHelper` for HTMLBars
|
65521
65914
|
QUnit.test("Bound helpers registered on the container can be late-invoked", function() {
|
65522
65915
|
Ember.TEMPLATES.application = compile("<div id='wrapper'>{{x-reverse}} {{x-reverse foo}}</div>");
|
65523
65916
|
|
@@ -65532,8 +65925,8 @@ enifed('ember/tests/helpers/helper_registration_test', ['ember', 'ember-htmlbars
|
|
65532
65925
|
ok(!helpers['x-reverse'], "Container-registered helper doesn't wind up on global helpers hash");
|
65533
65926
|
});
|
65534
65927
|
|
65535
|
-
|
65536
|
-
|
65928
|
+
// we have unit tests for this in ember-htmlbars/tests/system/lookup-helper
|
65929
|
+
// and we are not going to recreate the handlebars helperMissing concept
|
65537
65930
|
QUnit.test("Undashed helpers registered on the container can not (presently) be invoked", function() {
|
65538
65931
|
|
65539
65932
|
// Note: the reason we're not allowing undashed helpers is to avoid
|
@@ -67224,7 +67617,7 @@ enifed('ember/tests/helpers/link_to_test', ['ember', 'ember-runtime/controllers/
|
|
67224
67617
|
equal(router.get('location.path'), '/about');
|
67225
67618
|
}
|
67226
67619
|
|
67227
|
-
var aboutDefer;
|
67620
|
+
var aboutDefer, otherDefer;
|
67228
67621
|
|
67229
67622
|
if (!Ember.FEATURES.isEnabled('ember-routing-transitioning-classes')) {
|
67230
67623
|
QUnit.module("The {{link-to}} helper: eager URL updating", {
|
@@ -67362,12 +67755,20 @@ enifed('ember/tests/helpers/link_to_test', ['ember', 'ember-runtime/controllers/
|
|
67362
67755
|
});
|
67363
67756
|
|
67364
67757
|
App.AboutRoute = Ember.Route.extend({
|
67365
|
-
model: function() {
|
67758
|
+
model: function () {
|
67366
67759
|
aboutDefer = Ember.RSVP.defer();
|
67367
67760
|
return aboutDefer.promise;
|
67368
67761
|
}
|
67369
67762
|
});
|
67370
67763
|
|
67764
|
+
App.OtherRoute = Ember.Route.extend({
|
67765
|
+
model: function () {
|
67766
|
+
otherDefer = Ember.RSVP.defer();
|
67767
|
+
return otherDefer.promise;
|
67768
|
+
}
|
67769
|
+
});
|
67770
|
+
|
67771
|
+
|
67371
67772
|
Ember.TEMPLATES.application = compile("{{outlet}}{{link-to 'Index' 'index' id='index-link'}}{{link-to 'About' 'about' id='about-link'}}{{link-to 'Other' 'other' id='other-link'}}");
|
67372
67773
|
});
|
67373
67774
|
},
|
@@ -67408,6 +67809,85 @@ enifed('ember/tests/helpers/link_to_test', ['ember', 'ember-runtime/controllers/
|
|
67408
67809
|
assertHasClass('ember-transitioning-in', $index, false, $about, false, $other, false);
|
67409
67810
|
assertHasClass('ember-transitioning-out', $index, false, $about, false, $other, false);
|
67410
67811
|
});
|
67812
|
+
|
67813
|
+
QUnit.test("while a transition is underway with nested link-to's", function() {
|
67814
|
+
expect(54);
|
67815
|
+
|
67816
|
+
Router.map(function() {
|
67817
|
+
this.route('parent-route', function() {
|
67818
|
+
this.route('about');
|
67819
|
+
this.route('other');
|
67820
|
+
});
|
67821
|
+
});
|
67822
|
+
|
67823
|
+
App.ParentRouteAboutRoute = Ember.Route.extend({
|
67824
|
+
model: function () {
|
67825
|
+
aboutDefer = Ember.RSVP.defer();
|
67826
|
+
return aboutDefer.promise;
|
67827
|
+
}
|
67828
|
+
});
|
67829
|
+
|
67830
|
+
App.ParentRouteOtherRoute = Ember.Route.extend({
|
67831
|
+
model: function () {
|
67832
|
+
otherDefer = Ember.RSVP.defer();
|
67833
|
+
return otherDefer.promise;
|
67834
|
+
}
|
67835
|
+
});
|
67836
|
+
|
67837
|
+
Ember.TEMPLATES.application = compile("{{outlet}} {{#link-to 'index' tagName='li'}} {{link-to 'Index' 'index' id='index-link'}} {{/link-to}} {{#link-to 'parent-route.about' tagName='li'}} {{link-to 'About' 'parent-route.about' id='about-link'}} {{/link-to}} {{#link-to 'parent-route.other' tagName='li'}} {{link-to 'Other' 'parent-route.other' id='other-link'}} {{/link-to}}");
|
67838
|
+
|
67839
|
+
bootApplication();
|
67840
|
+
|
67841
|
+
function assertHasClass(className) {
|
67842
|
+
var i = 1;
|
67843
|
+
while (i < arguments.length) {
|
67844
|
+
var $a = arguments[i];
|
67845
|
+
var shouldHaveClass = arguments[i+1];
|
67846
|
+
equal($a.hasClass(className), shouldHaveClass, $a.attr('id') + " should " + (shouldHaveClass ? '' : "not ") + "have class " + className);
|
67847
|
+
i +=2;
|
67848
|
+
}
|
67849
|
+
}
|
67850
|
+
|
67851
|
+
var $index = Ember.$('#index-link');
|
67852
|
+
var $about = Ember.$('#about-link');
|
67853
|
+
var $other = Ember.$('#other-link');
|
67854
|
+
|
67855
|
+
Ember.run($about, 'click');
|
67856
|
+
|
67857
|
+
assertHasClass('active', $index, true, $about, false, $other, false);
|
67858
|
+
assertHasClass('ember-transitioning-in', $index, false, $about, true, $other, false);
|
67859
|
+
assertHasClass('ember-transitioning-out', $index, true, $about, false, $other, false);
|
67860
|
+
|
67861
|
+
Ember.run(aboutDefer, 'resolve');
|
67862
|
+
|
67863
|
+
assertHasClass('active', $index, false, $about, true, $other, false);
|
67864
|
+
assertHasClass('ember-transitioning-in', $index, false, $about, false, $other, false);
|
67865
|
+
assertHasClass('ember-transitioning-out', $index, false, $about, false, $other, false);
|
67866
|
+
|
67867
|
+
Ember.run($other, 'click');
|
67868
|
+
|
67869
|
+
assertHasClass('active', $index, false, $about, true, $other, false);
|
67870
|
+
assertHasClass('ember-transitioning-in', $index, false, $about, false, $other, true);
|
67871
|
+
assertHasClass('ember-transitioning-out', $index, false, $about, true, $other, false);
|
67872
|
+
|
67873
|
+
Ember.run(otherDefer, 'resolve');
|
67874
|
+
|
67875
|
+
assertHasClass('active', $index, false, $about, false, $other, true);
|
67876
|
+
assertHasClass('ember-transitioning-in', $index, false, $about, false, $other, false);
|
67877
|
+
assertHasClass('ember-transitioning-out', $index, false, $about, false, $other, false);
|
67878
|
+
|
67879
|
+
Ember.run($about, 'click');
|
67880
|
+
|
67881
|
+
assertHasClass('active', $index, false, $about, false, $other, true);
|
67882
|
+
assertHasClass('ember-transitioning-in', $index, false, $about, true, $other, false);
|
67883
|
+
assertHasClass('ember-transitioning-out', $index, false, $about, false, $other, true);
|
67884
|
+
|
67885
|
+
Ember.run(aboutDefer, 'resolve');
|
67886
|
+
|
67887
|
+
assertHasClass('active', $index, false, $about, true, $other, false);
|
67888
|
+
assertHasClass('ember-transitioning-in', $index, false, $about, false, $other, false);
|
67889
|
+
assertHasClass('ember-transitioning-out', $index, false, $about, false, $other, false);
|
67890
|
+
});
|
67411
67891
|
|
67412
67892
|
|
67413
67893
|
});
|
@@ -67537,6 +68017,8 @@ enifed('ember/tests/routing/basic_test', ['ember', 'ember-metal/enumerable_utils
|
|
67537
68017
|
|
67538
68018
|
'use strict';
|
67539
68019
|
|
68020
|
+
var trim = Ember.$.trim;
|
68021
|
+
|
67540
68022
|
var compile = EmberHandlebars['default'].compile;
|
67541
68023
|
|
67542
68024
|
var Router, App, router, registry, container, originalLoggerError;
|
@@ -71139,6 +71621,247 @@ enifed('ember/tests/routing/basic_test', ['ember', 'ember-metal/enumerable_utils
|
|
71139
71621
|
equal(Ember.$('#qunit-fixture').text(), "A-The index-B-Hello world-C", "second render");
|
71140
71622
|
});
|
71141
71623
|
|
71624
|
+
QUnit.test("Can render routes with no 'main' outlet and their children", function() {
|
71625
|
+
Ember.TEMPLATES.application = compile('<div id="application">{{outlet "app"}}</div>');
|
71626
|
+
Ember.TEMPLATES.app = compile('<div id="app-common">{{outlet "common"}}</div><div id="app-sub">{{outlet "sub"}}</div>');
|
71627
|
+
Ember.TEMPLATES.common = compile('<div id="common"></div>');
|
71628
|
+
Ember.TEMPLATES.sub = compile('<div id="sub"></div>');
|
71629
|
+
|
71630
|
+
Router.map(function() {
|
71631
|
+
this.route('app', { path: "/app" }, function() {
|
71632
|
+
this.resource('sub', { path: "/sub" });
|
71633
|
+
});
|
71634
|
+
});
|
71635
|
+
|
71636
|
+
App.AppRoute = Ember.Route.extend({
|
71637
|
+
renderTemplate : function() {
|
71638
|
+
this.render('app', {
|
71639
|
+
outlet: 'app',
|
71640
|
+
into: 'application'
|
71641
|
+
});
|
71642
|
+
this.render('common', {
|
71643
|
+
outlet: 'common',
|
71644
|
+
into: 'app'
|
71645
|
+
});
|
71646
|
+
}
|
71647
|
+
});
|
71648
|
+
|
71649
|
+
App.SubRoute = Ember.Route.extend({
|
71650
|
+
renderTemplate : function() {
|
71651
|
+
this.render('sub', {
|
71652
|
+
outlet: 'sub',
|
71653
|
+
into: 'app'
|
71654
|
+
});
|
71655
|
+
}
|
71656
|
+
});
|
71657
|
+
|
71658
|
+
bootApplication();
|
71659
|
+
handleURL('/app');
|
71660
|
+
equal(Ember.$('#app-common #common').length, 1, "Finds common while viewing /app");
|
71661
|
+
handleURL('/app/sub');
|
71662
|
+
equal(Ember.$('#app-common #common').length, 1, "Finds common while viewing /app/sub");
|
71663
|
+
equal(Ember.$('#app-sub #sub').length, 1, "Finds sub while viewing /app/sub");
|
71664
|
+
});
|
71665
|
+
|
71666
|
+
QUnit.test("Tolerates stacked renders", function() {
|
71667
|
+
Ember.TEMPLATES.application = compile('{{outlet}}{{outlet "modal"}}');
|
71668
|
+
Ember.TEMPLATES.index = compile('hi');
|
71669
|
+
Ember.TEMPLATES.layer = compile('layer');
|
71670
|
+
App.ApplicationRoute = Ember.Route.extend({
|
71671
|
+
actions: {
|
71672
|
+
openLayer: function() {
|
71673
|
+
this.render('layer', {
|
71674
|
+
into: 'application',
|
71675
|
+
outlet: 'modal'
|
71676
|
+
});
|
71677
|
+
},
|
71678
|
+
close: function() {
|
71679
|
+
this.disconnectOutlet({
|
71680
|
+
outlet: 'modal',
|
71681
|
+
parentView: 'application'
|
71682
|
+
});
|
71683
|
+
}
|
71684
|
+
}
|
71685
|
+
});
|
71686
|
+
bootApplication();
|
71687
|
+
equal(trim(Ember.$('#qunit-fixture').text()), 'hi');
|
71688
|
+
Ember.run(router, 'send', 'openLayer');
|
71689
|
+
equal(trim(Ember.$('#qunit-fixture').text()), 'hilayer');
|
71690
|
+
Ember.run(router, 'send', 'openLayer');
|
71691
|
+
equal(trim(Ember.$('#qunit-fixture').text()), 'hilayer');
|
71692
|
+
Ember.run(router, 'send', 'close');
|
71693
|
+
equal(trim(Ember.$('#qunit-fixture').text()), 'hi');
|
71694
|
+
});
|
71695
|
+
|
71696
|
+
QUnit.test("Renders child into parent with non-default template name", function() {
|
71697
|
+
Ember.TEMPLATES.application = compile('<div class="a">{{outlet}}</div>');
|
71698
|
+
Ember.TEMPLATES['exports/root'] = compile('<div class="b">{{outlet}}</div>');
|
71699
|
+
Ember.TEMPLATES['exports/index'] = compile('<div class="c"></div>');
|
71700
|
+
|
71701
|
+
Router.map(function() {
|
71702
|
+
this.route('root', function() {
|
71703
|
+
});
|
71704
|
+
});
|
71705
|
+
|
71706
|
+
App.RootRoute = Ember.Route.extend({
|
71707
|
+
renderTemplate: function() {
|
71708
|
+
this.render('exports/root');
|
71709
|
+
}
|
71710
|
+
});
|
71711
|
+
|
71712
|
+
App.RootIndexRoute = Ember.Route.extend({
|
71713
|
+
renderTemplate: function() {
|
71714
|
+
this.render('exports/index');
|
71715
|
+
}
|
71716
|
+
});
|
71717
|
+
|
71718
|
+
bootApplication();
|
71719
|
+
handleURL('/root');
|
71720
|
+
equal(Ember.$('#qunit-fixture .a .b .c').length, 1);
|
71721
|
+
});
|
71722
|
+
|
71723
|
+
QUnit.test("Allows any route to disconnectOutlet another route's templates", function() {
|
71724
|
+
Ember.TEMPLATES.application = compile('{{outlet}}{{outlet "modal"}}');
|
71725
|
+
Ember.TEMPLATES.index = compile('hi');
|
71726
|
+
Ember.TEMPLATES.layer = compile('layer');
|
71727
|
+
App.ApplicationRoute = Ember.Route.extend({
|
71728
|
+
actions: {
|
71729
|
+
openLayer: function() {
|
71730
|
+
this.render('layer', {
|
71731
|
+
into: 'application',
|
71732
|
+
outlet: 'modal'
|
71733
|
+
});
|
71734
|
+
}
|
71735
|
+
}
|
71736
|
+
});
|
71737
|
+
App.IndexRoute = Ember.Route.extend({
|
71738
|
+
actions: {
|
71739
|
+
close: function() {
|
71740
|
+
this.disconnectOutlet({
|
71741
|
+
parentView: 'application',
|
71742
|
+
outlet: 'modal'
|
71743
|
+
});
|
71744
|
+
}
|
71745
|
+
}
|
71746
|
+
});
|
71747
|
+
bootApplication();
|
71748
|
+
equal(trim(Ember.$('#qunit-fixture').text()), 'hi');
|
71749
|
+
Ember.run(router, 'send', 'openLayer');
|
71750
|
+
equal(trim(Ember.$('#qunit-fixture').text()), 'hilayer');
|
71751
|
+
Ember.run(router, 'send', 'close');
|
71752
|
+
equal(trim(Ember.$('#qunit-fixture').text()), 'hi');
|
71753
|
+
});
|
71754
|
+
|
71755
|
+
QUnit.test("Can render({into:...}) the render helper", function() {
|
71756
|
+
Ember.TEMPLATES.application = compile('{{render "foo"}}');
|
71757
|
+
Ember.TEMPLATES.foo = compile('<div class="foo">{{outlet}}</div>');
|
71758
|
+
Ember.TEMPLATES.index = compile('other');
|
71759
|
+
Ember.TEMPLATES.bar = compile('bar');
|
71760
|
+
|
71761
|
+
App.IndexRoute = Ember.Route.extend({
|
71762
|
+
renderTemplate: function() {
|
71763
|
+
this.render({ into: 'foo' });
|
71764
|
+
},
|
71765
|
+
actions: {
|
71766
|
+
changeToBar: function() {
|
71767
|
+
this.disconnectOutlet({
|
71768
|
+
parentView: 'foo',
|
71769
|
+
outlet: 'main'
|
71770
|
+
});
|
71771
|
+
this.render('bar', { into: 'foo' });
|
71772
|
+
}
|
71773
|
+
}
|
71774
|
+
});
|
71775
|
+
|
71776
|
+
bootApplication();
|
71777
|
+
equal(Ember.$('#qunit-fixture .foo').text(), 'other');
|
71778
|
+
Ember.run(router, 'send', 'changeToBar');
|
71779
|
+
equal(Ember.$('#qunit-fixture .foo').text(), 'bar');
|
71780
|
+
});
|
71781
|
+
|
71782
|
+
QUnit.test("Can disconnect from the render helper", function() {
|
71783
|
+
Ember.TEMPLATES.application = compile('{{render "foo"}}');
|
71784
|
+
Ember.TEMPLATES.foo = compile('<div class="foo">{{outlet}}</div>');
|
71785
|
+
Ember.TEMPLATES.index = compile('other');
|
71786
|
+
|
71787
|
+
App.IndexRoute = Ember.Route.extend({
|
71788
|
+
renderTemplate: function() {
|
71789
|
+
this.render({ into: 'foo' });
|
71790
|
+
},
|
71791
|
+
actions: {
|
71792
|
+
disconnect: function() {
|
71793
|
+
this.disconnectOutlet({
|
71794
|
+
parentView: 'foo',
|
71795
|
+
outlet: 'main'
|
71796
|
+
});
|
71797
|
+
}
|
71798
|
+
}
|
71799
|
+
});
|
71800
|
+
|
71801
|
+
bootApplication();
|
71802
|
+
equal(Ember.$('#qunit-fixture .foo').text(), 'other');
|
71803
|
+
Ember.run(router, 'send', 'disconnect');
|
71804
|
+
equal(Ember.$('#qunit-fixture .foo').text(), '');
|
71805
|
+
});
|
71806
|
+
|
71807
|
+
|
71808
|
+
QUnit.test("Can render({into:...}) the render helper's children", function() {
|
71809
|
+
Ember.TEMPLATES.application = compile('{{render "foo"}}');
|
71810
|
+
Ember.TEMPLATES.foo = compile('<div class="foo">{{outlet}}</div>');
|
71811
|
+
Ember.TEMPLATES.index = compile('<div class="index">{{outlet}}</div>');
|
71812
|
+
Ember.TEMPLATES.other = compile('other');
|
71813
|
+
Ember.TEMPLATES.bar = compile('bar');
|
71814
|
+
|
71815
|
+
App.IndexRoute = Ember.Route.extend({
|
71816
|
+
renderTemplate: function() {
|
71817
|
+
this.render({ into: 'foo' });
|
71818
|
+
this.render('other', { into: 'index' });
|
71819
|
+
},
|
71820
|
+
actions: {
|
71821
|
+
changeToBar: function() {
|
71822
|
+
this.disconnectOutlet({
|
71823
|
+
parentView: 'index',
|
71824
|
+
outlet: 'main'
|
71825
|
+
});
|
71826
|
+
this.render('bar', { into: 'index' });
|
71827
|
+
}
|
71828
|
+
}
|
71829
|
+
});
|
71830
|
+
|
71831
|
+
bootApplication();
|
71832
|
+
equal(Ember.$('#qunit-fixture .foo .index').text(), 'other');
|
71833
|
+
Ember.run(router, 'send', 'changeToBar');
|
71834
|
+
equal(Ember.$('#qunit-fixture .foo .index').text(), 'bar');
|
71835
|
+
|
71836
|
+
});
|
71837
|
+
|
71838
|
+
QUnit.test("Can disconnect from the render helper's children", function() {
|
71839
|
+
Ember.TEMPLATES.application = compile('{{render "foo"}}');
|
71840
|
+
Ember.TEMPLATES.foo = compile('<div class="foo">{{outlet}}</div>');
|
71841
|
+
Ember.TEMPLATES.index = compile('<div class="index">{{outlet}}</div>');
|
71842
|
+
Ember.TEMPLATES.other = compile('other');
|
71843
|
+
|
71844
|
+
App.IndexRoute = Ember.Route.extend({
|
71845
|
+
renderTemplate: function() {
|
71846
|
+
this.render({ into: 'foo' });
|
71847
|
+
this.render('other', { into: 'index' });
|
71848
|
+
},
|
71849
|
+
actions: {
|
71850
|
+
disconnect: function() {
|
71851
|
+
this.disconnectOutlet({
|
71852
|
+
parentView: 'index',
|
71853
|
+
outlet: 'main'
|
71854
|
+
});
|
71855
|
+
}
|
71856
|
+
}
|
71857
|
+
});
|
71858
|
+
|
71859
|
+
bootApplication();
|
71860
|
+
equal(Ember.$('#qunit-fixture .foo .index').text(), 'other');
|
71861
|
+
Ember.run(router, 'send', 'disconnect');
|
71862
|
+
equal(Ember.$('#qunit-fixture .foo .index').text(), '');
|
71863
|
+
});
|
71864
|
+
|
71142
71865
|
});
|
71143
71866
|
enifed('ember/tests/routing/basic_test.jscs-test', function () {
|
71144
71867
|
|
@@ -71279,6 +72002,30 @@ enifed('ember/tests/routing/query_params_test', ['ember', 'ember-metal/computed'
|
|
71279
72002
|
}
|
71280
72003
|
});
|
71281
72004
|
|
72005
|
+
QUnit.test("Single query params can be set on ObjectController [DEPRECATED]", function() {
|
72006
|
+
expectDeprecation("Ember.ObjectController is deprecated, please use Ember.Controller and use `model.propertyName`.");
|
72007
|
+
|
72008
|
+
Router.map(function() {
|
72009
|
+
this.route("home", { path: '/' });
|
72010
|
+
});
|
72011
|
+
|
72012
|
+
App.HomeController = Ember.ObjectController.extend({
|
72013
|
+
queryParams: ['foo'],
|
72014
|
+
foo: "123"
|
72015
|
+
});
|
72016
|
+
|
72017
|
+
bootApplication();
|
72018
|
+
|
72019
|
+
var controller = container.lookup('controller:home');
|
72020
|
+
|
72021
|
+
setAndFlush(controller, 'foo', '456');
|
72022
|
+
|
72023
|
+
equal(router.get('location.path'), "/?foo=456");
|
72024
|
+
|
72025
|
+
setAndFlush(controller, 'foo', '987');
|
72026
|
+
equal(router.get('location.path'), "/?foo=987");
|
72027
|
+
});
|
72028
|
+
|
71282
72029
|
QUnit.test("Single query params can be set", function() {
|
71283
72030
|
Router.map(function() {
|
71284
72031
|
this.route("home", { path: '/' });
|