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-tests.prod.js
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
* Portions Copyright 2008-2011 Apple Inc. All rights reserved.
|
6
6
|
* @license Licensed under MIT license
|
7
7
|
* See https://raw.github.com/emberjs/ember.js/master/LICENSE
|
8
|
-
* @version 1.11.0
|
8
|
+
* @version 1.11.0
|
9
9
|
*/
|
10
10
|
|
11
11
|
(function() {
|
@@ -5460,6 +5460,13 @@ enifed('ember-debug/tests/main_test', ['ember-metal/core'], function (Ember) {
|
|
5460
5460
|
|
5461
5461
|
QUnit.module('ember-debug');
|
5462
5462
|
|
5463
|
+
QUnit.test('Ember.deprecate throws deprecation with one argument', function() {
|
5464
|
+
expect(1);
|
5465
|
+
|
5466
|
+
throws(function() {
|
5467
|
+
});
|
5468
|
+
});
|
5469
|
+
|
5463
5470
|
QUnit.test('Ember.deprecate throws deprecation if second argument is falsy', function() {
|
5464
5471
|
expect(3);
|
5465
5472
|
|
@@ -7418,8 +7425,8 @@ enifed('ember-htmlbars/tests/attr_nodes/boolean_test', ['ember-views/views/view'
|
|
7418
7425
|
run['default'](function() { view.appendTo('#qunit-fixture'); });
|
7419
7426
|
}
|
7420
7427
|
|
7421
|
-
|
7422
7428
|
// jscs:disable validateIndentation
|
7429
|
+
|
7423
7430
|
|
7424
7431
|
QUnit.module("ember-htmlbars: boolean attribute", {
|
7425
7432
|
teardown: function() {
|
@@ -7503,9 +7510,8 @@ enifed('ember-htmlbars/tests/attr_nodes/boolean_test', ['ember-views/views/view'
|
|
7503
7510
|
'boolean property is set false');
|
7504
7511
|
});
|
7505
7512
|
|
7506
|
-
|
7507
|
-
// jscs:enable validateIndentation
|
7508
7513
|
|
7514
|
+
// jscs:enable validateIndentation
|
7509
7515
|
|
7510
7516
|
});
|
7511
7517
|
enifed('ember-htmlbars/tests/attr_nodes/boolean_test.jscs-test', function () {
|
@@ -7543,8 +7549,8 @@ enifed('ember-htmlbars/tests/attr_nodes/class_test', ['ember-views/views/view',
|
|
7543
7549
|
isInlineIfEnabled = true;
|
7544
7550
|
|
7545
7551
|
|
7546
|
-
|
7547
7552
|
// jscs:disable validateIndentation
|
7553
|
+
|
7548
7554
|
|
7549
7555
|
QUnit.module("ember-htmlbars: class attribute", {
|
7550
7556
|
teardown: function() {
|
@@ -7680,8 +7686,8 @@ enifed('ember-htmlbars/tests/attr_nodes/class_test', ['ember-views/views/view',
|
|
7680
7686
|
ok(view.element.firstChild.className, 'r b a c', 'classes are in the right order');
|
7681
7687
|
});
|
7682
7688
|
|
7683
|
-
// jscs:enable validateIndentation
|
7684
7689
|
|
7690
|
+
// jscs:enable validateIndentation
|
7685
7691
|
|
7686
7692
|
});
|
7687
7693
|
enifed('ember-htmlbars/tests/attr_nodes/class_test.jscs-test', function () {
|
@@ -7993,8 +7999,8 @@ enifed('ember-htmlbars/tests/attr_nodes/href_test', ['ember-views/views/view', '
|
|
7993
7999
|
run['default'](function() { view.appendTo('#qunit-fixture'); });
|
7994
8000
|
}
|
7995
8001
|
|
7996
|
-
|
7997
8002
|
// jscs:disable validateIndentation
|
8003
|
+
|
7998
8004
|
|
7999
8005
|
QUnit.module("ember-htmlbars: href attribute", {
|
8000
8006
|
teardown: function() {
|
@@ -8015,8 +8021,8 @@ enifed('ember-htmlbars/tests/attr_nodes/href_test', ['ember-views/views/view', '
|
|
8015
8021
|
"attribute is output");
|
8016
8022
|
});
|
8017
8023
|
|
8018
|
-
// jscs:enable validateIndentation
|
8019
8024
|
|
8025
|
+
// jscs:enable validateIndentation
|
8020
8026
|
|
8021
8027
|
});
|
8022
8028
|
enifed('ember-htmlbars/tests/attr_nodes/href_test.jscs-test', function () {
|
@@ -8056,8 +8062,8 @@ enifed('ember-htmlbars/tests/attr_nodes/property_test', ['ember-views/views/view
|
|
8056
8062
|
return input.maxLength === 0;
|
8057
8063
|
}
|
8058
8064
|
|
8059
|
-
|
8060
8065
|
// jscs:disable validateIndentation
|
8066
|
+
|
8061
8067
|
|
8062
8068
|
QUnit.module("ember-htmlbars: property", {
|
8063
8069
|
teardown: function() {
|
@@ -8110,8 +8116,8 @@ enifed('ember-htmlbars/tests/attr_nodes/property_test', ['ember-views/views/view
|
|
8110
8116
|
ok(true, "no legacy assertion prohibited setting an array");
|
8111
8117
|
});
|
8112
8118
|
|
8113
|
-
// jscs:enable validateIndentation
|
8114
8119
|
|
8120
|
+
// jscs:enable validateIndentation
|
8115
8121
|
|
8116
8122
|
});
|
8117
8123
|
enifed('ember-htmlbars/tests/attr_nodes/property_test.jscs-test', function () {
|
@@ -8148,26 +8154,41 @@ enifed('ember-htmlbars/tests/attr_nodes/sanitized_test', ['ember-views/views/vie
|
|
8148
8154
|
}
|
8149
8155
|
});
|
8150
8156
|
|
8151
|
-
|
8152
8157
|
// jscs:disable validateIndentation
|
8158
|
+
// jscs:disable disallowTrailingWhitespace
|
8159
|
+
|
8153
8160
|
|
8154
8161
|
var badTags = [
|
8155
8162
|
{ tag: 'a', attr: 'href',
|
8156
8163
|
unquotedTemplate: compile['default']("<a href={{url}}></a>"),
|
8157
8164
|
quotedTemplate: compile['default']("<a href='{{url}}'></a>"),
|
8158
8165
|
multipartTemplate: compile['default']("<a href='{{protocol}}{{path}}'></a>") },
|
8166
|
+
|
8167
|
+
{ tag: 'base', attr: 'href',
|
8168
|
+
unquotedTemplate: compile['default']("<base href={{url}} />"),
|
8169
|
+
quotedTemplate: compile['default']("<base href='{{url}}'/>"),
|
8170
|
+
multipartTemplate: compile['default']("<base href='{{protocol}}{{path}}'/>") },
|
8171
|
+
|
8172
|
+
{ tag: 'embed', attr: 'src',
|
8173
|
+
unquotedTemplate: compile['default']("<embed src={{url}} />"),
|
8174
|
+
quotedTemplate: compile['default']("<embed src='{{url}}'/>"),
|
8175
|
+
multipartTemplate: compile['default']("<embed src='{{protocol}}{{path}}'/>") },
|
8176
|
+
|
8159
8177
|
{ tag: 'body', attr: 'background',
|
8160
8178
|
unquotedTemplate: compile['default']("<body background={{url}}></body>"),
|
8161
8179
|
quotedTemplate: compile['default']("<body background='{{url}}'></body>"),
|
8162
8180
|
multipartTemplate: compile['default']("<body background='{{protocol}}{{path}}'></body>") },
|
8181
|
+
|
8163
8182
|
{ tag: 'link', attr: 'href',
|
8164
8183
|
unquotedTemplate: compile['default']("<link href={{url}}>"),
|
8165
8184
|
quotedTemplate: compile['default']("<link href='{{url}}'>"),
|
8166
8185
|
multipartTemplate: compile['default']("<link href='{{protocol}}{{path}}'>") },
|
8186
|
+
|
8167
8187
|
{ tag: 'img', attr: 'src',
|
8168
8188
|
unquotedTemplate: compile['default']("<img src={{url}}>"),
|
8169
8189
|
quotedTemplate: compile['default']("<img src='{{url}}'>"),
|
8170
8190
|
multipartTemplate: compile['default']("<img src='{{protocol}}{{path}}'>") },
|
8191
|
+
|
8171
8192
|
{ tag: 'iframe', attr: 'src',
|
8172
8193
|
// Setting an iframe with a bad protocol results in the browser
|
8173
8194
|
// being redirected. in IE8. Skip the iframe tests on that platform.
|
@@ -8242,8 +8263,9 @@ enifed('ember-htmlbars/tests/attr_nodes/sanitized_test', ['ember-views/views/vie
|
|
8242
8263
|
})(); //jshint ignore:line
|
8243
8264
|
}
|
8244
8265
|
|
8245
|
-
// jscs:enable validateIndentation
|
8246
8266
|
|
8267
|
+
// jscs:enable disallowTrailingWhitespace
|
8268
|
+
// jscs:enable validateIndentation
|
8247
8269
|
|
8248
8270
|
});
|
8249
8271
|
enifed('ember-htmlbars/tests/attr_nodes/sanitized_test.jscs-test', function () {
|
@@ -8265,6 +8287,104 @@ enifed('ember-htmlbars/tests/attr_nodes/sanitized_test.jshint', function () {
|
|
8265
8287
|
ok(true, 'ember-htmlbars/tests/attr_nodes/sanitized_test.js should pass jshint.');
|
8266
8288
|
});
|
8267
8289
|
|
8290
|
+
});
|
8291
|
+
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) {
|
8292
|
+
|
8293
|
+
'use strict';
|
8294
|
+
|
8295
|
+
/* globals EmberDev */
|
8296
|
+
|
8297
|
+
var view, originalWarn, warnings;
|
8298
|
+
|
8299
|
+
QUnit.module("ember-htmlbars: style attribute", {
|
8300
|
+
setup: function() {
|
8301
|
+
warnings = [];
|
8302
|
+
originalWarn = Ember['default'].warn;
|
8303
|
+
Ember['default'].warn = function(message, test) {
|
8304
|
+
if (!test) {
|
8305
|
+
warnings.push(message);
|
8306
|
+
}
|
8307
|
+
};
|
8308
|
+
},
|
8309
|
+
|
8310
|
+
teardown: function() {
|
8311
|
+
utils.runDestroy(view);
|
8312
|
+
Ember['default'].warn = originalWarn;
|
8313
|
+
}
|
8314
|
+
});
|
8315
|
+
|
8316
|
+
// jscs:disable validateIndentation
|
8317
|
+
|
8318
|
+
|
8319
|
+
if (!EmberDev.runningProdBuild) {
|
8320
|
+
QUnit.test('specifying `<div style={{userValue}}></div>` generates a warning', function() {
|
8321
|
+
view = EmberView['default'].create({
|
8322
|
+
userValue: 'width: 42px',
|
8323
|
+
template: compile['default']('<div style={{view.userValue}}></div>')
|
8324
|
+
});
|
8325
|
+
|
8326
|
+
utils.runAppend(view);
|
8327
|
+
|
8328
|
+
deepEqual(warnings, [attr_node.styleWarning]);
|
8329
|
+
});
|
8330
|
+
|
8331
|
+
QUnit.test('specifying `attributeBindings: ["style"]` generates a warning', function() {
|
8332
|
+
view = EmberView['default'].create({
|
8333
|
+
userValue: 'width: 42px',
|
8334
|
+
template: compile['default']('<div style={{view.userValue}}></div>')
|
8335
|
+
});
|
8336
|
+
|
8337
|
+
utils.runAppend(view);
|
8338
|
+
|
8339
|
+
deepEqual(warnings, [attr_node.styleWarning]);
|
8340
|
+
});
|
8341
|
+
}
|
8342
|
+
|
8343
|
+
QUnit.test('specifying `<div style={{{userValue}}}></div>` works properly without a warning', function() {
|
8344
|
+
view = EmberView['default'].create({
|
8345
|
+
userValue: 'width: 42px',
|
8346
|
+
template: compile['default']('<div style={{{view.userValue}}}></div>')
|
8347
|
+
});
|
8348
|
+
|
8349
|
+
utils.runAppend(view);
|
8350
|
+
|
8351
|
+
deepEqual(warnings, [ ]);
|
8352
|
+
});
|
8353
|
+
|
8354
|
+
QUnit.test('specifying `<div style={{userValue}}></div>` works properly with a SafeString', function() {
|
8355
|
+
view = EmberView['default'].create({
|
8356
|
+
userValue: new string.SafeString('width: 42px'),
|
8357
|
+
template: compile['default']('<div style={{view.userValue}}></div>')
|
8358
|
+
});
|
8359
|
+
|
8360
|
+
utils.runAppend(view);
|
8361
|
+
|
8362
|
+
deepEqual(warnings, [ ]);
|
8363
|
+
});
|
8364
|
+
|
8365
|
+
|
8366
|
+
// jscs:enable validateIndentation
|
8367
|
+
|
8368
|
+
});
|
8369
|
+
enifed('ember-htmlbars/tests/attr_nodes/style_test.jscs-test', function () {
|
8370
|
+
|
8371
|
+
'use strict';
|
8372
|
+
|
8373
|
+
module('JSCS - ember-htmlbars/tests/attr_nodes');
|
8374
|
+
test('ember-htmlbars/tests/attr_nodes/style_test.js should pass jscs', function() {
|
8375
|
+
ok(true, 'ember-htmlbars/tests/attr_nodes/style_test.js should pass jscs.');
|
8376
|
+
});
|
8377
|
+
|
8378
|
+
});
|
8379
|
+
enifed('ember-htmlbars/tests/attr_nodes/style_test.jshint', function () {
|
8380
|
+
|
8381
|
+
'use strict';
|
8382
|
+
|
8383
|
+
module('JSHint - ember-htmlbars/tests/attr_nodes');
|
8384
|
+
test('ember-htmlbars/tests/attr_nodes/style_test.js should pass jshint', function() {
|
8385
|
+
ok(true, 'ember-htmlbars/tests/attr_nodes/style_test.js should pass jshint.');
|
8386
|
+
});
|
8387
|
+
|
8268
8388
|
});
|
8269
8389
|
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) {
|
8270
8390
|
|
@@ -8276,8 +8396,8 @@ enifed('ember-htmlbars/tests/attr_nodes/svg_test', ['ember-views/views/view', 'e
|
|
8276
8396
|
run['default'](function() { view.appendTo('#qunit-fixture'); });
|
8277
8397
|
}
|
8278
8398
|
|
8279
|
-
|
8280
8399
|
// jscs:disable validateIndentation
|
8400
|
+
|
8281
8401
|
|
8282
8402
|
QUnit.module("ember-htmlbars: svg attribute", {
|
8283
8403
|
teardown: function() {
|
@@ -8342,8 +8462,8 @@ enifed('ember-htmlbars/tests/attr_nodes/svg_test', ['ember-views/views/view', 'e
|
|
8342
8462
|
htmlbars_test_helpers.equalInnerHTML(view.element, '<svg class="red tall"></svg>', "attribute is output");
|
8343
8463
|
});
|
8344
8464
|
|
8345
|
-
// jscs:enable validateIndentation
|
8346
8465
|
|
8466
|
+
// jscs:enable validateIndentation
|
8347
8467
|
|
8348
8468
|
});
|
8349
8469
|
enifed('ember-htmlbars/tests/attr_nodes/svg_test.jscs-test', function () {
|
@@ -8376,8 +8496,8 @@ enifed('ember-htmlbars/tests/attr_nodes/value_test', ['ember-views/views/view',
|
|
8376
8496
|
run['default'](function() { view.appendTo('#qunit-fixture'); });
|
8377
8497
|
}
|
8378
8498
|
|
8379
|
-
|
8380
8499
|
// jscs:disable validateIndentation
|
8500
|
+
|
8381
8501
|
|
8382
8502
|
QUnit.module("ember-htmlbars: value attribute", {
|
8383
8503
|
teardown: function() {
|
@@ -8423,8 +8543,8 @@ enifed('ember-htmlbars/tests/attr_nodes/value_test', ['ember-views/views/view',
|
|
8423
8543
|
'property is set true');
|
8424
8544
|
});
|
8425
8545
|
|
8426
|
-
// jscs:enable validateIndentation
|
8427
8546
|
|
8547
|
+
// jscs:enable validateIndentation
|
8428
8548
|
|
8429
8549
|
});
|
8430
8550
|
enifed('ember-htmlbars/tests/attr_nodes/value_test.jscs-test', function () {
|
@@ -9568,15 +9688,17 @@ enifed('ember-htmlbars/tests/compat/precompile_test.jshint', function () {
|
|
9568
9688
|
});
|
9569
9689
|
|
9570
9690
|
});
|
9571
|
-
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) {
|
9691
|
+
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) {
|
9572
9692
|
|
9573
9693
|
'use strict';
|
9574
9694
|
|
9695
|
+
/*globals EmberDev */
|
9575
9696
|
/*jshint newcap:false*/
|
9697
|
+
|
9576
9698
|
var view;
|
9577
9699
|
|
9578
9700
|
var originalLookup = Ember['default'].lookup;
|
9579
|
-
var TemplateTests, registry, container, lookup;
|
9701
|
+
var TemplateTests, registry, container, lookup, warnings, originalWarn;
|
9580
9702
|
|
9581
9703
|
/**
|
9582
9704
|
This module specifically tests integration with Handlebars and Ember-specific
|
@@ -9594,6 +9716,14 @@ enifed('ember-htmlbars/tests/helpers/bind_attr_test', ['ember-metal/core', 'embe
|
|
9594
9716
|
registry.optionsForType('template', { instantiate: false });
|
9595
9717
|
registry.register('view:default', _MetamorphView['default']);
|
9596
9718
|
registry.register('view:toplevel', EmberView['default'].extend());
|
9719
|
+
|
9720
|
+
warnings = [];
|
9721
|
+
originalWarn = Ember['default'].warn;
|
9722
|
+
Ember['default'].warn = function(message, test) {
|
9723
|
+
if (!test) {
|
9724
|
+
warnings.push(message);
|
9725
|
+
}
|
9726
|
+
};
|
9597
9727
|
},
|
9598
9728
|
|
9599
9729
|
teardown: function() {
|
@@ -9602,6 +9732,7 @@ enifed('ember-htmlbars/tests/helpers/bind_attr_test', ['ember-metal/core', 'embe
|
|
9602
9732
|
registry = container = view = null;
|
9603
9733
|
|
9604
9734
|
Ember['default'].lookup = lookup = originalLookup;
|
9735
|
+
Ember['default'].warn = originalWarn;
|
9605
9736
|
TemplateTests = null;
|
9606
9737
|
}
|
9607
9738
|
});
|
@@ -10133,7 +10264,7 @@ enifed('ember-htmlbars/tests/helpers/bind_attr_test', ['ember-metal/core', 'embe
|
|
10133
10264
|
}, /You cannot set `data-bar` manually and via `{{bind-attr}}` helper on the same element/);
|
10134
10265
|
});
|
10135
10266
|
|
10136
|
-
QUnit.test("src attribute bound to undefined is
|
10267
|
+
QUnit.test("src attribute bound to undefined is empty", function() {
|
10137
10268
|
var template = compile['default']("<img {{bind-attr src=view.undefinedValue}}>");
|
10138
10269
|
|
10139
10270
|
view = EmberView['default'].create({
|
@@ -10143,10 +10274,10 @@ enifed('ember-htmlbars/tests/helpers/bind_attr_test', ['ember-metal/core', 'embe
|
|
10143
10274
|
|
10144
10275
|
utils.runAppend(view);
|
10145
10276
|
|
10146
|
-
|
10277
|
+
equal(view.element.firstChild.getAttribute('src'), '', "src attribute is empty");
|
10147
10278
|
});
|
10148
10279
|
|
10149
|
-
QUnit.test("src attribute bound to null is
|
10280
|
+
QUnit.test("src attribute bound to null is empty", function() {
|
10150
10281
|
var template = compile['default']("<img {{bind-attr src=view.nullValue}}>");
|
10151
10282
|
|
10152
10283
|
view = EmberView['default'].create({
|
@@ -10156,7 +10287,69 @@ enifed('ember-htmlbars/tests/helpers/bind_attr_test', ['ember-metal/core', 'embe
|
|
10156
10287
|
|
10157
10288
|
utils.runAppend(view);
|
10158
10289
|
|
10159
|
-
|
10290
|
+
equal(view.element.firstChild.getAttribute('src'), '', "src attribute is empty");
|
10291
|
+
});
|
10292
|
+
|
10293
|
+
QUnit.test("src attribute will be cleared when the value is set to null or undefined", function() {
|
10294
|
+
var template = compile['default']("<img {{bind-attr src=view.value}}>");
|
10295
|
+
|
10296
|
+
view = EmberView['default'].create({
|
10297
|
+
template: template,
|
10298
|
+
value: 'one'
|
10299
|
+
});
|
10300
|
+
|
10301
|
+
utils.runAppend(view);
|
10302
|
+
|
10303
|
+
equal(view.element.firstChild.getAttribute('src'), 'one', "src attribute is present");
|
10304
|
+
|
10305
|
+
run['default'](function() {
|
10306
|
+
property_set.set(view, 'value', 'two');
|
10307
|
+
});
|
10308
|
+
|
10309
|
+
equal(view.element.firstChild.getAttribute('src'), 'two', "src attribute is present");
|
10310
|
+
|
10311
|
+
run['default'](function() {
|
10312
|
+
property_set.set(view, 'value', null);
|
10313
|
+
});
|
10314
|
+
|
10315
|
+
equal(view.element.firstChild.getAttribute('src'), '', "src attribute is empty");
|
10316
|
+
|
10317
|
+
run['default'](function() {
|
10318
|
+
property_set.set(view, 'value', 'three');
|
10319
|
+
});
|
10320
|
+
|
10321
|
+
equal(view.element.firstChild.getAttribute('src'), 'three', "src attribute is present");
|
10322
|
+
|
10323
|
+
run['default'](function() {
|
10324
|
+
property_set.set(view, 'value', undefined);
|
10325
|
+
});
|
10326
|
+
|
10327
|
+
equal(view.element.firstChild.getAttribute('src'), '', "src attribute is empty");
|
10328
|
+
});
|
10329
|
+
|
10330
|
+
if (!EmberDev.runningProdBuild) {
|
10331
|
+
|
10332
|
+
QUnit.test('specifying `<div {{bind-attr style=userValue}}></div>` triggers a warning', function() {
|
10333
|
+
view = EmberView['default'].create({
|
10334
|
+
userValue: '42',
|
10335
|
+
template: compile['default']('<div {{bind-attr style=view.userValue}}></div>')
|
10336
|
+
});
|
10337
|
+
|
10338
|
+
utils.runAppend(view);
|
10339
|
+
|
10340
|
+
deepEqual(warnings, [attr_node.styleWarning]);
|
10341
|
+
});
|
10342
|
+
}
|
10343
|
+
|
10344
|
+
QUnit.test('specifying `<div {{bind-attr style=userValue}}></div>` works properly with a SafeString', function() {
|
10345
|
+
view = EmberView['default'].create({
|
10346
|
+
userValue: new string.SafeString('42'),
|
10347
|
+
template: compile['default']('<div {{bind-attr style=view.userValue}}></div>')
|
10348
|
+
});
|
10349
|
+
|
10350
|
+
utils.runAppend(view);
|
10351
|
+
|
10352
|
+
deepEqual(warnings, [ ]);
|
10160
10353
|
});
|
10161
10354
|
|
10162
10355
|
});
|
@@ -10327,8 +10520,8 @@ enifed('ember-htmlbars/tests/helpers/collection_test', ['ember-views/views/colle
|
|
10327
10520
|
var container = registry.container();
|
10328
10521
|
|
10329
10522
|
var ACollectionView = CollectionView['default'].extend({
|
10330
|
-
|
10331
|
-
|
10523
|
+
tagName: 'ul',
|
10524
|
+
content: native_array.A(['foo', 'bar', 'baz'])
|
10332
10525
|
});
|
10333
10526
|
|
10334
10527
|
registry.register('view:collectionTest', ACollectionView);
|
@@ -10527,7 +10720,7 @@ enifed('ember-htmlbars/tests/helpers/collection_test', ['ember-views/views/colle
|
|
10527
10720
|
equal(view.$('ul li.baz').length, 3, "adds class attribute");
|
10528
10721
|
});
|
10529
10722
|
|
10530
|
-
QUnit.test("should give its item views the
|
10723
|
+
QUnit.test("should give its item views the class specified by itemClass", function() {
|
10531
10724
|
var ItemClassBindingTestCollectionView = CollectionView['default'].extend({
|
10532
10725
|
tagName: 'ul',
|
10533
10726
|
content: native_array.A([EmberObject['default'].create({ isBaz: false }), EmberObject['default'].create({ isBaz: true }), EmberObject['default'].create({ isBaz: true })])
|
@@ -10536,7 +10729,7 @@ enifed('ember-htmlbars/tests/helpers/collection_test', ['ember-views/views/colle
|
|
10536
10729
|
view = EmberView['default'].create({
|
10537
10730
|
itemClassBindingTestCollectionView: ItemClassBindingTestCollectionView,
|
10538
10731
|
isBar: true,
|
10539
|
-
template: compile['default']('{{#collection view.itemClassBindingTestCollectionView
|
10732
|
+
template: compile['default']('{{#collection view.itemClassBindingTestCollectionView itemClass=view.isBar}}foo{{/collection}}')
|
10540
10733
|
});
|
10541
10734
|
|
10542
10735
|
utils.runAppend(view);
|
@@ -10547,7 +10740,7 @@ enifed('ember-htmlbars/tests/helpers/collection_test', ['ember-views/views/colle
|
|
10547
10740
|
// to introduce a new keyword that could be used from within `itemClassBinding`. For instance, `itemClassBinding="item.isBaz"`.
|
10548
10741
|
});
|
10549
10742
|
|
10550
|
-
QUnit.test("should give its item views the property specified by
|
10743
|
+
QUnit.test("should give its item views the property specified by itemProperty", function() {
|
10551
10744
|
var ItemPropertyBindingTestItemView = EmberView['default'].extend({
|
10552
10745
|
tagName: 'li'
|
10553
10746
|
});
|
@@ -10562,7 +10755,7 @@ enifed('ember-htmlbars/tests/helpers/collection_test', ['ember-views/views/colle
|
|
10562
10755
|
return ItemPropertyBindingTestItemView;
|
10563
10756
|
}
|
10564
10757
|
},
|
10565
|
-
template: compile['default']('{{#collection
|
10758
|
+
template: compile['default']('{{#collection content=view.content tagName="ul" itemViewClass="item-property-binding-test-item-view" itemProperty=view.baz preserveContext=false}}{{view.property}}{{/collection}}')
|
10566
10759
|
});
|
10567
10760
|
|
10568
10761
|
utils.runAppend(view);
|
@@ -10584,7 +10777,7 @@ enifed('ember-htmlbars/tests/helpers/collection_test', ['ember-views/views/colle
|
|
10584
10777
|
view = EmberView['default'].create({
|
10585
10778
|
baz: "baz",
|
10586
10779
|
content: native_array.A([EmberObject['default'].create(), EmberObject['default'].create(), EmberObject['default'].create()]),
|
10587
|
-
template: compile['default']('{{#collection
|
10780
|
+
template: compile['default']('{{#collection content=view.content itemProperty=view.baz}}{{view.property}}{{/collection}}')
|
10588
10781
|
});
|
10589
10782
|
|
10590
10783
|
utils.runAppend(view);
|
@@ -10845,7 +11038,7 @@ enifed('ember-htmlbars/tests/helpers/collection_test', ['ember-views/views/colle
|
|
10845
11038
|
controller: {
|
10846
11039
|
items: items
|
10847
11040
|
},
|
10848
|
-
template: compile['default']('{{collection
|
11041
|
+
template: compile['default']('{{collection content=items itemViewClass="an-item"}}')
|
10849
11042
|
});
|
10850
11043
|
|
10851
11044
|
utils.runAppend(view);
|
@@ -11213,7 +11406,7 @@ enifed('ember-htmlbars/tests/helpers/each_test', ['ember-metal/core', 'ember-run
|
|
11213
11406
|
var originalLookup = Ember['default'].lookup;
|
11214
11407
|
var lookup;
|
11215
11408
|
|
11216
|
-
QUnit.module("the #each helper [DEPRECATED]", {
|
11409
|
+
QUnit.module("the scope changing #each helper [DEPRECATED]", {
|
11217
11410
|
setup: function() {
|
11218
11411
|
Ember['default'].lookup = lookup = { Ember: Ember['default'] };
|
11219
11412
|
|
@@ -11708,8 +11901,8 @@ enifed('ember-htmlbars/tests/helpers/each_test', ['ember-metal/core', 'ember-run
|
|
11708
11901
|
QUnit.test("it supports {{itemViewClass=}} with tagName (DEPRECATED)", function() {
|
11709
11902
|
utils.runDestroy(view);
|
11710
11903
|
view = EmberView['default'].create({
|
11711
|
-
|
11712
|
-
|
11904
|
+
template: templateFor('{{each view.people itemViewClass=MyView tagName="ul"}}'),
|
11905
|
+
people: people
|
11713
11906
|
});
|
11714
11907
|
|
11715
11908
|
expectDeprecation(/Supplying a tagName to Metamorph views is unreliable and is deprecated./);
|
@@ -12041,7 +12234,7 @@ enifed('ember-htmlbars/tests/helpers/each_test', ['ember-metal/core', 'ember-run
|
|
12041
12234
|
view = EmberView['default'].create({
|
12042
12235
|
container: container,
|
12043
12236
|
controller: controller,
|
12044
|
-
template: templateFor('{{#EACH|this|personController}}{{#view
|
12237
|
+
template: templateFor('{{#EACH|this|personController}}{{#view controller=personController}}{{name}}{{/view}}{{/each}}', useBlockParams)
|
12045
12238
|
});
|
12046
12239
|
|
12047
12240
|
utils.runAppend(view);
|
@@ -13469,6 +13662,44 @@ enifed('ember-htmlbars/tests/helpers/input_test', ['ember-metal/run_loop', 'embe
|
|
13469
13662
|
equal(view.$('input').prop('checked'), false, "the checkbox isn't checked yet");
|
13470
13663
|
});
|
13471
13664
|
|
13665
|
+
QUnit.module("{{input type='text'}} - null/undefined values", {
|
13666
|
+
teardown: function() {
|
13667
|
+
utils.runDestroy(view);
|
13668
|
+
}
|
13669
|
+
});
|
13670
|
+
|
13671
|
+
QUnit.test("placeholder attribute bound to undefined is not present", function() {
|
13672
|
+
view = View['default'].extend({
|
13673
|
+
controller: {},
|
13674
|
+
template: compile['default']('{{input placeholder=someThingNotThere}}')
|
13675
|
+
}).create();
|
13676
|
+
|
13677
|
+
utils.runAppend(view);
|
13678
|
+
|
13679
|
+
ok(!view.element.childNodes[1].hasAttribute('placeholder'), "attribute not present");
|
13680
|
+
|
13681
|
+
run['default'](null, property_set.set, view, 'controller.someThingNotThere', 'foo');
|
13682
|
+
|
13683
|
+
equal(view.element.childNodes[1].placeholder, 'foo', "attribute is present");
|
13684
|
+
});
|
13685
|
+
|
13686
|
+
QUnit.test("placeholder attribute bound to null is not present", function() {
|
13687
|
+
view = View['default'].extend({
|
13688
|
+
controller: {
|
13689
|
+
someNullProperty: null
|
13690
|
+
},
|
13691
|
+
template: compile['default']('{{input placeholder=someNullProperty}}')
|
13692
|
+
}).create();
|
13693
|
+
|
13694
|
+
utils.runAppend(view);
|
13695
|
+
|
13696
|
+
ok(!view.element.childNodes[1].hasAttribute('placeholder'), "attribute not present");
|
13697
|
+
|
13698
|
+
run['default'](null, property_set.set, view, 'controller.someNullProperty', 'foo');
|
13699
|
+
|
13700
|
+
equal(view.element.childNodes[1].placeholder, 'foo', "attribute is present");
|
13701
|
+
});
|
13702
|
+
|
13472
13703
|
});
|
13473
13704
|
enifed('ember-htmlbars/tests/helpers/input_test.jscs-test', function () {
|
13474
13705
|
|
@@ -14482,7 +14713,7 @@ enifed('ember-htmlbars/tests/helpers/unbound_test.jshint', function () {
|
|
14482
14713
|
});
|
14483
14714
|
|
14484
14715
|
});
|
14485
|
-
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,
|
14716
|
+
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) {
|
14486
14717
|
|
14487
14718
|
'use strict';
|
14488
14719
|
|
@@ -14514,6 +14745,7 @@ enifed('ember-htmlbars/tests/helpers/view_test', ['ember-views/views/view', 'con
|
|
14514
14745
|
registry = new Registry['default']();
|
14515
14746
|
container = registry.container();
|
14516
14747
|
registry.optionsForType('template', { instantiate: false });
|
14748
|
+
registry.optionsForType('helper', { instantiate: false });
|
14517
14749
|
registry.register('view:default', _MetamorphView['default']);
|
14518
14750
|
registry.register('view:toplevel', EmberView['default'].extend());
|
14519
14751
|
},
|
@@ -14735,15 +14967,17 @@ enifed('ember-htmlbars/tests/helpers/view_test', ['ember-views/views/view', 'con
|
|
14735
14967
|
snork: "nerd"
|
14736
14968
|
}).create();
|
14737
14969
|
|
14738
|
-
|
14970
|
+
expectDeprecation(function() {
|
14971
|
+
utils.runAppend(view);
|
14972
|
+
}, /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./);
|
14739
14973
|
|
14740
14974
|
equal(jQuery['default']('#lol').text(), "nerd", "awkward mixed syntax treated like binding");
|
14741
14975
|
|
14742
14976
|
Ember.warn = oldWarn;
|
14743
14977
|
});
|
14744
14978
|
|
14745
|
-
QUnit.test('"Binding"-suffixed bindings are runloop-synchronized', function() {
|
14746
|
-
expect(
|
14979
|
+
QUnit.test('"Binding"-suffixed bindings are runloop-synchronized [DEPRECATED]', function() {
|
14980
|
+
expect(6);
|
14747
14981
|
|
14748
14982
|
var subview;
|
14749
14983
|
|
@@ -14762,7 +14996,10 @@ enifed('ember-htmlbars/tests/helpers/view_test', ['ember-views/views/view', 'con
|
|
14762
14996
|
});
|
14763
14997
|
|
14764
14998
|
view = View.create();
|
14765
|
-
|
14999
|
+
|
15000
|
+
expectDeprecation(function() {
|
15001
|
+
utils.runAppend(view);
|
15002
|
+
}, /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./);
|
14766
15003
|
|
14767
15004
|
equal(view.$('h1 .color').text(), 'mauve', 'renders bound value');
|
14768
15005
|
|
@@ -14881,6 +15118,30 @@ enifed('ember-htmlbars/tests/helpers/view_test', ['ember-views/views/view', 'con
|
|
14881
15118
|
ok(jQuery['default']('#foo').hasClass('foo'), "Always applies classbinding without condition");
|
14882
15119
|
});
|
14883
15120
|
|
15121
|
+
QUnit.test("Should apply a class from a sub expression", function() {
|
15122
|
+
registry.register('helper:string-concat', makeBoundHelper['default'](function(params) {
|
15123
|
+
return params.join('');
|
15124
|
+
}));
|
15125
|
+
|
15126
|
+
view = EmberView['default'].create({
|
15127
|
+
container: container,
|
15128
|
+
controller: {
|
15129
|
+
type: 'btn',
|
15130
|
+
size: 'large'
|
15131
|
+
},
|
15132
|
+
template: compile['default']('{{#view id="foo" class=(string-concat type "-" size)}} Foo{{/view}}')
|
15133
|
+
});
|
15134
|
+
|
15135
|
+
utils.runAppend(view);
|
15136
|
+
|
15137
|
+
ok(jQuery['default']('#foo').hasClass('btn-large'), "applies classname from subexpression");
|
15138
|
+
|
15139
|
+
run['default'](view, view.set, 'controller.size', 'medium');
|
15140
|
+
|
15141
|
+
ok(!jQuery['default']('#foo').hasClass('btn-large'), "removes classname from subexpression update");
|
15142
|
+
ok(jQuery['default']('#foo').hasClass('btn-medium'), "adds classname from subexpression update");
|
15143
|
+
});
|
15144
|
+
|
14884
15145
|
QUnit.test("Should not apply classes when bound property specified is false", function() {
|
14885
15146
|
view = EmberView['default'].create({
|
14886
15147
|
controller: {
|
@@ -15431,7 +15692,7 @@ enifed('ember-htmlbars/tests/helpers/view_test', ['ember-views/views/view', 'con
|
|
15431
15692
|
view = EmberView['default'].create({
|
15432
15693
|
name: 'myView',
|
15433
15694
|
textField: TextField['default'],
|
15434
|
-
template: compile['default']('{{view view.textField
|
15695
|
+
template: compile['default']('{{view view.textField value=view.name}}')
|
15435
15696
|
});
|
15436
15697
|
|
15437
15698
|
utils.runAppend(view);
|
@@ -15503,7 +15764,7 @@ enifed('ember-htmlbars/tests/helpers/view_test', ['ember-views/views/view', 'con
|
|
15503
15764
|
name: 'foo'
|
15504
15765
|
}),
|
15505
15766
|
Subview: Subview,
|
15506
|
-
template: compile['default']('<h1>{{view view.Subview
|
15767
|
+
template: compile['default']('<h1>{{view view.Subview color=color someController=this}}</h1>')
|
15507
15768
|
});
|
15508
15769
|
|
15509
15770
|
view = View.create();
|
@@ -15600,7 +15861,7 @@ enifed('ember-htmlbars/tests/helpers/view_test', ['ember-views/views/view', 'con
|
|
15600
15861
|
|
15601
15862
|
QUnit.test('should work with precompiled templates', function() {
|
15602
15863
|
var templateString = precompile['default']('{{view.value}}');
|
15603
|
-
var compiledTemplate =
|
15864
|
+
var compiledTemplate = system__template['default'](eval(templateString));
|
15604
15865
|
|
15605
15866
|
view = EmberView['default'].create({
|
15606
15867
|
value: 'rendered',
|
@@ -15618,7 +15879,7 @@ enifed('ember-htmlbars/tests/helpers/view_test', ['ember-views/views/view', 'con
|
|
15618
15879
|
equal(view.$().text(), 'updated', 'the precompiled template was updated');
|
15619
15880
|
});
|
15620
15881
|
|
15621
|
-
QUnit.test('bindings should be relative to the current context', function() {
|
15882
|
+
QUnit.test('bindings should be relative to the current context [DEPRECATED]', function() {
|
15622
15883
|
view = EmberView['default'].create({
|
15623
15884
|
museumOpen: true,
|
15624
15885
|
|
@@ -15634,12 +15895,14 @@ enifed('ember-htmlbars/tests/helpers/view_test', ['ember-views/views/view', 'con
|
|
15634
15895
|
template: compile['default']('{{#if view.museumOpen}} {{view view.museumView nameBinding="view.museumDetails.name" dollarsBinding="view.museumDetails.price"}} {{/if}}')
|
15635
15896
|
});
|
15636
15897
|
|
15637
|
-
|
15898
|
+
expectDeprecation(function() {
|
15899
|
+
utils.runAppend(view);
|
15900
|
+
}, /You're attempting to render a view by passing .+Binding to a view helper, but this syntax is deprecated/);
|
15638
15901
|
|
15639
15902
|
equal(trim(view.$().text()), 'Name: SFMoMA Price: $20', 'should print baz twice');
|
15640
15903
|
});
|
15641
15904
|
|
15642
|
-
QUnit.test('bindings should respect keywords', function() {
|
15905
|
+
QUnit.test('bindings should respect keywords [DEPRECATED]', function() {
|
15643
15906
|
view = EmberView['default'].create({
|
15644
15907
|
museumOpen: true,
|
15645
15908
|
|
@@ -15658,6 +15921,32 @@ enifed('ember-htmlbars/tests/helpers/view_test', ['ember-views/views/view', 'con
|
|
15658
15921
|
template: compile['default']('{{#if view.museumOpen}}{{view view.museumView nameBinding="controller.museumDetails.name" dollarsBinding="controller.museumDetails.price"}}{{/if}}')
|
15659
15922
|
});
|
15660
15923
|
|
15924
|
+
expectDeprecation(function() {
|
15925
|
+
utils.runAppend(view);
|
15926
|
+
}, /You're attempting to render a view by passing .+Binding to a view helper, but this syntax is deprecated/);
|
15927
|
+
|
15928
|
+
equal(trim(view.$().text()), 'Name: SFMoMA Price: $20', 'should print baz twice');
|
15929
|
+
});
|
15930
|
+
|
15931
|
+
QUnit.test('should respect keywords', function() {
|
15932
|
+
view = EmberView['default'].create({
|
15933
|
+
museumOpen: true,
|
15934
|
+
|
15935
|
+
controller: {
|
15936
|
+
museumOpen: true,
|
15937
|
+
museumDetails: EmberObject['default'].create({
|
15938
|
+
name: 'SFMoMA',
|
15939
|
+
price: 20
|
15940
|
+
})
|
15941
|
+
},
|
15942
|
+
|
15943
|
+
museumView: EmberView['default'].extend({
|
15944
|
+
template: compile['default']('Name: {{view.name}} Price: ${{view.dollars}}')
|
15945
|
+
}),
|
15946
|
+
|
15947
|
+
template: compile['default']('{{#if view.museumOpen}}{{view view.museumView name=controller.museumDetails.name dollars=controller.museumDetails.price}}{{/if}}')
|
15948
|
+
});
|
15949
|
+
|
15661
15950
|
utils.runAppend(view);
|
15662
15951
|
|
15663
15952
|
equal(trim(view.$().text()), 'Name: SFMoMA Price: $20', 'should print baz twice');
|
@@ -15762,6 +16051,44 @@ enifed('ember-htmlbars/tests/helpers/view_test', ['ember-views/views/view', 'con
|
|
15762
16051
|
}, /must be a subclass or an instance of Ember.View/);
|
15763
16052
|
});
|
15764
16053
|
|
16054
|
+
QUnit.test('Specifying `id` to {{view}} is set on the view.', function() {
|
16055
|
+
registry.register('view:derp', EmberView['default'].extend({
|
16056
|
+
template: compile['default']('<div id="view-id">{{view.id}}</div><div id="view-elementId">{{view.elementId}}</div>')
|
16057
|
+
}));
|
16058
|
+
|
16059
|
+
view = EmberView['default'].create({
|
16060
|
+
container: container,
|
16061
|
+
foo: 'bar',
|
16062
|
+
template: compile['default']('{{view "derp" id=view.foo}}')
|
16063
|
+
});
|
16064
|
+
|
16065
|
+
utils.runAppend(view);
|
16066
|
+
|
16067
|
+
equal(view.$('#bar').length, 1, 'it uses the provided id for the views elementId');
|
16068
|
+
equal(view.$('#view-id').text(), 'bar', 'the views id property is set');
|
16069
|
+
equal(view.$('#view-elementId').text(), 'bar', 'the views elementId property is set');
|
16070
|
+
});
|
16071
|
+
|
16072
|
+
QUnit.test('Specifying `id` to {{view}} does not allow bound id changes.', function() {
|
16073
|
+
registry.register('view:derp', EmberView['default'].extend({
|
16074
|
+
template: compile['default']('<div id="view-id">{{view.id}}</div><div id="view-elementId">{{view.elementId}}</div>')
|
16075
|
+
}));
|
16076
|
+
|
16077
|
+
view = EmberView['default'].create({
|
16078
|
+
container: container,
|
16079
|
+
foo: 'bar',
|
16080
|
+
template: compile['default']('{{view "derp" id=view.foo}}')
|
16081
|
+
});
|
16082
|
+
|
16083
|
+
utils.runAppend(view);
|
16084
|
+
|
16085
|
+
equal(view.$('#view-id').text(), 'bar', 'the views id property is set');
|
16086
|
+
|
16087
|
+
run['default'](view, property_set.set, view, 'foo', 'baz');
|
16088
|
+
|
16089
|
+
equal(view.$('#view-id').text(), 'bar', 'the views id property is not changed');
|
16090
|
+
});
|
16091
|
+
|
15765
16092
|
});
|
15766
16093
|
enifed('ember-htmlbars/tests/helpers/view_test.jscs-test', function () {
|
15767
16094
|
|
@@ -16492,7 +16819,7 @@ enifed('ember-htmlbars/tests/helpers/yield_test', ['ember-metal/run_loop', 'embe
|
|
16492
16819
|
|
16493
16820
|
view = EmberView['default'].create({
|
16494
16821
|
controller: { boundText: "outer", component: component },
|
16495
|
-
template: compile['default']('{{#with boundText as item}}{{#view component
|
16822
|
+
template: compile['default']('{{#with boundText as item}}{{#view component content=item}}{{item}}{{/view}}{{/with}}')
|
16496
16823
|
});
|
16497
16824
|
|
16498
16825
|
utils.runAppend(view);
|
@@ -17622,7 +17949,7 @@ enifed('ember-htmlbars/tests/integration/select_in_template_test', ['ember-runti
|
|
17622
17949
|
}
|
17623
17950
|
});
|
17624
17951
|
|
17625
|
-
QUnit.test("works from a template with bindings", function() {
|
17952
|
+
QUnit.test("works from a template with bindings [DEPRECATED]", function() {
|
17626
17953
|
var Person = EmberObject['default'].extend({
|
17627
17954
|
id: null,
|
17628
17955
|
firstName: null,
|
@@ -17663,6 +17990,70 @@ enifed('ember-htmlbars/tests/integration/select_in_template_test', ['ember-runti
|
|
17663
17990
|
)
|
17664
17991
|
});
|
17665
17992
|
|
17993
|
+
expectDeprecation(function() {
|
17994
|
+
utils.runAppend(view);
|
17995
|
+
}, /You're attempting to render a view by passing .+Binding to a view helper, but this syntax is deprecated/);
|
17996
|
+
|
17997
|
+
var select = view.get('select');
|
17998
|
+
ok(select.$().length, "Select was rendered");
|
17999
|
+
equal(select.$('option').length, 5, "Options were rendered");
|
18000
|
+
equal(select.$().text(), "Pick a person:Yehuda KatzTom DalePeter WagenetErik Bryn\n", "Option values were rendered");
|
18001
|
+
equal(select.get('selection'), null, "Nothing has been selected");
|
18002
|
+
|
18003
|
+
run['default'](function() {
|
18004
|
+
application.selectedPersonController.set('person', erik);
|
18005
|
+
});
|
18006
|
+
|
18007
|
+
equal(select.get('selection'), erik, "Selection was updated through binding");
|
18008
|
+
run['default'](function() {
|
18009
|
+
application.peopleController.pushObject(Person.create({ id: 5, firstName: "James", lastName: "Rosen" }));
|
18010
|
+
});
|
18011
|
+
|
18012
|
+
equal(select.$('option').length, 6, "New option was added");
|
18013
|
+
equal(select.get('selection'), erik, "Selection was maintained after new option was added");
|
18014
|
+
});
|
18015
|
+
|
18016
|
+
QUnit.test("works from a template", function() {
|
18017
|
+
var Person = EmberObject['default'].extend({
|
18018
|
+
id: null,
|
18019
|
+
firstName: null,
|
18020
|
+
lastName: null,
|
18021
|
+
|
18022
|
+
fullName: computed.computed(function() {
|
18023
|
+
return this.get('firstName') + " " + this.get('lastName');
|
18024
|
+
}).property('firstName', 'lastName')
|
18025
|
+
});
|
18026
|
+
|
18027
|
+
var erik = Person.create({ id: 4, firstName: 'Erik', lastName: 'Bryn' });
|
18028
|
+
|
18029
|
+
var application = Namespace['default'].create();
|
18030
|
+
|
18031
|
+
application.peopleController = ArrayController['default'].create({
|
18032
|
+
content: Ember.A([
|
18033
|
+
Person.create({ id: 1, firstName: 'Yehuda', lastName: 'Katz' }),
|
18034
|
+
Person.create({ id: 2, firstName: 'Tom', lastName: 'Dale' }),
|
18035
|
+
Person.create({ id: 3, firstName: 'Peter', lastName: 'Wagenet' }),
|
18036
|
+
erik
|
18037
|
+
])
|
18038
|
+
});
|
18039
|
+
|
18040
|
+
application.selectedPersonController = EmberObject['default'].create({
|
18041
|
+
person: null
|
18042
|
+
});
|
18043
|
+
|
18044
|
+
view = EmberView['default'].create({
|
18045
|
+
app: application,
|
18046
|
+
selectView: SelectView['default'],
|
18047
|
+
template: compile['default'](
|
18048
|
+
'{{view view.selectView viewName="select"' +
|
18049
|
+
' content=view.app.peopleController' +
|
18050
|
+
' optionLabelPath="content.fullName"' +
|
18051
|
+
' optionValuePath="content.id"' +
|
18052
|
+
' prompt="Pick a person:"' +
|
18053
|
+
' selection=view.app.selectedPersonController.person}}'
|
18054
|
+
)
|
18055
|
+
});
|
18056
|
+
|
17666
18057
|
utils.runAppend(view);
|
17667
18058
|
|
17668
18059
|
var select = view.get('select');
|
@@ -17693,8 +18084,8 @@ enifed('ember-htmlbars/tests/integration/select_in_template_test', ['ember-runti
|
|
17693
18084
|
selectView: SelectView['default'],
|
17694
18085
|
template: compile['default'](
|
17695
18086
|
'{{view view.selectView viewName="select"' +
|
17696
|
-
'
|
17697
|
-
'
|
18087
|
+
' content=view.user.options' +
|
18088
|
+
' selection=view.user.selectedOption}}'
|
17698
18089
|
)
|
17699
18090
|
});
|
17700
18091
|
|
@@ -17728,8 +18119,8 @@ enifed('ember-htmlbars/tests/integration/select_in_template_test', ['ember-runti
|
|
17728
18119
|
selectView: SelectView['default'],
|
17729
18120
|
template: compile['default'](
|
17730
18121
|
'{{view view.selectView viewName="select"' +
|
17731
|
-
'
|
17732
|
-
'
|
18122
|
+
' content=view.proxy' +
|
18123
|
+
' selection=view.proxy.selectedOption}}'
|
17733
18124
|
)
|
17734
18125
|
});
|
17735
18126
|
|
@@ -17774,7 +18165,9 @@ enifed('ember-htmlbars/tests/integration/select_in_template_test', ['ember-runti
|
|
17774
18165
|
equal(selectEl.selectedIndex, 1, "The DOM is updated to reflect the new selection");
|
17775
18166
|
}
|
17776
18167
|
|
17777
|
-
QUnit.test("select element should correctly initialize and update selectedIndex and bound properties when using valueBinding
|
18168
|
+
QUnit.test("select element should correctly initialize and update selectedIndex and bound properties when using valueBinding [DEPRECATED]", function() {
|
18169
|
+
expectDeprecation(/You're attempting to render a view by passing .+Binding to a view helper, but this syntax is deprecated./);
|
18170
|
+
|
17778
18171
|
testValueBinding(
|
17779
18172
|
'{{view view.selectView viewName="select"' +
|
17780
18173
|
' contentBinding="view.collection"' +
|
@@ -17785,7 +18178,7 @@ enifed('ember-htmlbars/tests/integration/select_in_template_test', ['ember-runti
|
|
17785
18178
|
);
|
17786
18179
|
});
|
17787
18180
|
|
17788
|
-
QUnit.test("select element should correctly initialize and update selectedIndex and bound properties when using
|
18181
|
+
QUnit.test("select element should correctly initialize and update selectedIndex and bound properties when using a bound value", function() {
|
17789
18182
|
testValueBinding(
|
17790
18183
|
'{{view view.selectView viewName="select"' +
|
17791
18184
|
' content=view.collection' +
|
@@ -17824,7 +18217,9 @@ enifed('ember-htmlbars/tests/integration/select_in_template_test', ['ember-runti
|
|
17824
18217
|
equal(select.$('option:eq(1)').prop('selected'), true, "Selected property is set to proper option");
|
17825
18218
|
}
|
17826
18219
|
|
17827
|
-
QUnit.test("select element should correctly initialize and update selectedIndex and bound properties when using selectionBinding
|
18220
|
+
QUnit.test("select element should correctly initialize and update selectedIndex and bound properties when using selectionBinding [DEPRECATED]", function() {
|
18221
|
+
expectDeprecation(/You're attempting to render a view by passing .+Binding to a view helper, but this syntax is deprecated./);
|
18222
|
+
|
17828
18223
|
testSelectionBinding(
|
17829
18224
|
'{{view view.selectView viewName="select"' +
|
17830
18225
|
' contentBinding="view.collection"' +
|
@@ -17835,7 +18230,7 @@ enifed('ember-htmlbars/tests/integration/select_in_template_test', ['ember-runti
|
|
17835
18230
|
);
|
17836
18231
|
});
|
17837
18232
|
|
17838
|
-
QUnit.test("select element should correctly initialize and update selectedIndex and bound properties when using
|
18233
|
+
QUnit.test("select element should correctly initialize and update selectedIndex and bound properties when using a bound selection", function() {
|
17839
18234
|
testSelectionBinding(
|
17840
18235
|
'{{view view.selectView viewName="select"' +
|
17841
18236
|
' content=view.collection' +
|
@@ -18989,7 +19384,7 @@ enifed('ember-htmlbars/tests/system/render_view_test', ['ember-runtime/tests/uti
|
|
18989
19384
|
view = EmberView['default'].create({
|
18990
19385
|
template: {
|
18991
19386
|
isHTMLBars: true,
|
18992
|
-
revision: 'Ember@1.11.0
|
19387
|
+
revision: 'Ember@1.11.0',
|
18993
19388
|
render: function(view, env, contextualElement, blockArguments) {
|
18994
19389
|
for (var i = 0, l = keyNames.length; i < l; i++) {
|
18995
19390
|
var keyName = keyNames[i];
|
@@ -32826,6 +33221,26 @@ enifed('ember-routing-htmlbars/tests/helpers/render_test', ['ember-metal/core',
|
|
32826
33221
|
}, "The second argument of {{render}} must be a path, e.g. {{render \"post\" post}}.");
|
32827
33222
|
});
|
32828
33223
|
|
33224
|
+
QUnit.test("{{render}} helper should let view provide its own template", function() {
|
33225
|
+
var template = "{{render 'fish'}}";
|
33226
|
+
var controller = controllers__controller["default"].extend({ container: container });
|
33227
|
+
view = EmberView['default'].create({
|
33228
|
+
controller: controller.create(),
|
33229
|
+
template: compile['default'](template)
|
33230
|
+
});
|
33231
|
+
|
33232
|
+
container._registry.register('template:fish', compile['default']('Hello fish!'));
|
33233
|
+
container._registry.register('template:other', compile['default']('Hello other!'));
|
33234
|
+
|
33235
|
+
container._registry.register('view:fish', EmberView['default'].extend({
|
33236
|
+
templateName: 'other'
|
33237
|
+
}));
|
33238
|
+
|
33239
|
+
tests__utils.runAppend(view);
|
33240
|
+
|
33241
|
+
equal(view.$().text(), 'Hello other!');
|
33242
|
+
});
|
33243
|
+
|
32829
33244
|
});
|
32830
33245
|
enifed('ember-routing-htmlbars/tests/helpers/render_test.jscs-test', function () {
|
32831
33246
|
|
@@ -33759,14 +34174,14 @@ enifed('ember-routing/tests/location/hash_location_test', ['ember-metal/core', '
|
|
33759
34174
|
var pathname = (tmp.pathname.match(/^\//)) ? tmp.pathname : '/' + tmp.pathname;
|
33760
34175
|
|
33761
34176
|
return {
|
33762
|
-
|
33763
|
-
|
33764
|
-
|
33765
|
-
|
33766
|
-
|
33767
|
-
|
33768
|
-
|
33769
|
-
|
34177
|
+
hash: tmp.hash,
|
34178
|
+
host: tmp.host || 'localhost',
|
34179
|
+
hostname: tmp.hostname || 'localhost',
|
34180
|
+
href: tmp.href,
|
34181
|
+
pathname: pathname,
|
34182
|
+
port: tmp.port || '',
|
34183
|
+
protocol: protocol,
|
34184
|
+
search: tmp.search
|
33770
34185
|
};
|
33771
34186
|
}
|
33772
34187
|
|
@@ -33965,14 +34380,14 @@ enifed('ember-routing/tests/location/history_location_test', ['ember-metal/prope
|
|
33965
34380
|
var pathname = (tmp.pathname.match(/^\//)) ? tmp.pathname : '/' + tmp.pathname;
|
33966
34381
|
|
33967
34382
|
return {
|
33968
|
-
|
33969
|
-
|
33970
|
-
|
33971
|
-
|
33972
|
-
|
33973
|
-
|
33974
|
-
|
33975
|
-
|
34383
|
+
hash: tmp.hash,
|
34384
|
+
host: tmp.host || 'localhost',
|
34385
|
+
hostname: tmp.hostname || 'localhost',
|
34386
|
+
href: tmp.href,
|
34387
|
+
pathname: pathname,
|
34388
|
+
port: tmp.port || '',
|
34389
|
+
protocol: protocol,
|
34390
|
+
search: tmp.search
|
33976
34391
|
};
|
33977
34392
|
}
|
33978
34393
|
|
@@ -34415,8 +34830,8 @@ enifed('ember-routing/tests/system/dsl_test', ['ember-routing/system/router', 'e
|
|
34415
34830
|
ok(router.router.recognizer.names['bleep.bloop.blork'], 'parent name was used as base of nested routes');
|
34416
34831
|
});
|
34417
34832
|
|
34418
|
-
|
34419
34833
|
// jscs:disable validateIndentation
|
34834
|
+
|
34420
34835
|
|
34421
34836
|
QUnit.test("should add loading and error routes if _isRouterMapResult is true", function() {
|
34422
34837
|
Router.map(function() {
|
@@ -34444,8 +34859,8 @@ enifed('ember-routing/tests/system/dsl_test', ['ember-routing/system/router', 'e
|
|
34444
34859
|
ok(!router.router.recognizer.names['blork_error'], 'error route was not added');
|
34445
34860
|
});
|
34446
34861
|
|
34447
|
-
// jscs:enable validateIndentation
|
34448
34862
|
|
34863
|
+
// jscs:enable validateIndentation
|
34449
34864
|
|
34450
34865
|
});
|
34451
34866
|
enifed('ember-routing/tests/system/dsl_test.jscs-test', function () {
|
@@ -36571,18 +36986,18 @@ enifed('ember-runtime/tests/computed/reduce_computed_macros_test', ['ember-metal
|
|
36571
36986
|
QUnit.test("it throws an error if given fewer or more than two dependent properties", function() {
|
36572
36987
|
throws(function () {
|
36573
36988
|
EmberObject['default'].createWithMixins({
|
36574
|
-
|
36575
|
-
|
36576
|
-
|
36989
|
+
array: Ember['default'].A([1,2,3,4,5,6,7]),
|
36990
|
+
array2: Ember['default'].A([3,4,5]),
|
36991
|
+
diff: reduce_computed_macros.setDiff('array')
|
36577
36992
|
});
|
36578
36993
|
}, /requires exactly two dependent arrays/, "setDiff requires two dependent arrays");
|
36579
36994
|
|
36580
36995
|
throws(function () {
|
36581
36996
|
EmberObject['default'].createWithMixins({
|
36582
|
-
|
36583
|
-
|
36584
|
-
|
36585
|
-
|
36997
|
+
array: Ember['default'].A([1,2,3,4,5,6,7]),
|
36998
|
+
array2: Ember['default'].A([3,4,5]),
|
36999
|
+
array3: Ember['default'].A([7]),
|
37000
|
+
diff: reduce_computed_macros.setDiff('array', 'array2', 'array3')
|
36586
37001
|
});
|
36587
37002
|
}, /requires exactly two dependent arrays/, "setDiff requires two dependent arrays");
|
36588
37003
|
});
|
@@ -37609,7 +38024,7 @@ enifed('ember-runtime/tests/computed/reduce_computed_test', ['ember-metal/core',
|
|
37609
38024
|
|
37610
38025
|
QUnit.test("after the first retrieval, array computed properties observe additions to dependent arrays", function() {
|
37611
38026
|
var numbers = property_get.get(obj, 'numbers');
|
37612
|
-
|
38027
|
+
// set up observers
|
37613
38028
|
var evenNumbers = property_get.get(obj, 'evenNumbers');
|
37614
38029
|
|
37615
38030
|
run['default'](function() {
|
@@ -37621,7 +38036,7 @@ enifed('ember-runtime/tests/computed/reduce_computed_test', ['ember-metal/core',
|
|
37621
38036
|
|
37622
38037
|
QUnit.test("after the first retrieval, array computed properties observe removals from dependent arrays", function() {
|
37623
38038
|
var numbers = property_get.get(obj, 'numbers');
|
37624
|
-
|
38039
|
+
// set up observers
|
37625
38040
|
var evenNumbers = property_get.get(obj, 'evenNumbers');
|
37626
38041
|
|
37627
38042
|
run['default'](function() {
|
@@ -38540,7 +38955,7 @@ enifed('ember-runtime/tests/computed/reduce_computed_test.jshint', function () {
|
|
38540
38955
|
});
|
38541
38956
|
|
38542
38957
|
});
|
38543
|
-
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) {
|
38958
|
+
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) {
|
38544
38959
|
|
38545
38960
|
'use strict';
|
38546
38961
|
|
@@ -38565,6 +38980,8 @@ enifed('ember-runtime/tests/controllers/array_controller_test', ['ember-metal/co
|
|
38565
38980
|
}
|
38566
38981
|
}).run();
|
38567
38982
|
|
38983
|
+
QUnit.module("ember-runtime: array_controller");
|
38984
|
+
|
38568
38985
|
QUnit.test("defaults its `model` to an empty array", function () {
|
38569
38986
|
var Controller = ArrayController['default'].extend();
|
38570
38987
|
deepEqual(Controller.create().get("model"), [], "`ArrayController` defaults its model to an empty array");
|
@@ -38572,13 +38989,34 @@ enifed('ember-runtime/tests/controllers/array_controller_test', ['ember-metal/co
|
|
38572
38989
|
equal(Controller.create().get('lastObject'), undefined, 'can fetch lastObject');
|
38573
38990
|
});
|
38574
38991
|
|
38575
|
-
|
38576
38992
|
QUnit.test("Ember.ArrayController length property works even if model was not set initially", function() {
|
38577
38993
|
var controller = ArrayController['default'].create();
|
38578
38994
|
controller.pushObject('item');
|
38579
38995
|
equal(controller.get('length'), 1);
|
38580
38996
|
});
|
38581
38997
|
|
38998
|
+
QUnit.test('works properly when model is set to an Ember.A()', function() {
|
38999
|
+
var controller = ArrayController['default'].create();
|
39000
|
+
|
39001
|
+
property_set.set(controller, 'model', Ember['default'].A(['red', 'green']));
|
39002
|
+
|
39003
|
+
deepEqual(property_get.get(controller, 'model'), ['red', 'green'], "can set model as an Ember.Array");
|
39004
|
+
});
|
39005
|
+
|
39006
|
+
QUnit.test('works properly when model is set to a plain array', function() {
|
39007
|
+
var controller = ArrayController['default'].create();
|
39008
|
+
|
39009
|
+
if (Ember['default'].EXTEND_PROTOTYPES) {
|
39010
|
+
property_set.set(controller, 'model', ['red', 'green']);
|
39011
|
+
|
39012
|
+
deepEqual(property_get.get(controller, 'model'), ['red', 'green'], "can set model as a plain array");
|
39013
|
+
} else {
|
39014
|
+
expectAssertion(function() {
|
39015
|
+
property_set.set(controller, 'model', ['red', 'green']);
|
39016
|
+
}, /ArrayController expects `model` to implement the Ember.Array mixin. This can often be fixed by wrapping your model with `Ember\.A\(\)`./);
|
39017
|
+
}
|
39018
|
+
});
|
39019
|
+
|
38582
39020
|
});
|
38583
39021
|
enifed('ember-runtime/tests/controllers/array_controller_test.jscs-test', function () {
|
38584
39022
|
|
@@ -38600,7 +39038,7 @@ enifed('ember-runtime/tests/controllers/array_controller_test.jshint', function
|
|
38600
39038
|
});
|
38601
39039
|
|
38602
39040
|
});
|
38603
|
-
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) {
|
39041
|
+
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) {
|
38604
39042
|
|
38605
39043
|
'use strict';
|
38606
39044
|
|
@@ -38816,6 +39254,42 @@ enifed('ember-runtime/tests/controllers/controller_test', ['ember-runtime/contro
|
|
38816
39254
|
equal(postsController, postController.get('postsController'), "controller.posts is injected");
|
38817
39255
|
});
|
38818
39256
|
|
39257
|
+
QUnit.test("controllers can be injected into ObjectControllers", function() {
|
39258
|
+
var registry = new system__container.Registry();
|
39259
|
+
var container = registry.container();
|
39260
|
+
|
39261
|
+
registry.register('controller:post', Controller['default'].extend({
|
39262
|
+
postsController: inject['default'].controller('posts')
|
39263
|
+
}));
|
39264
|
+
|
39265
|
+
registry.register('controller:posts', object_controller["default"].extend());
|
39266
|
+
|
39267
|
+
var postController = container.lookup('controller:post');
|
39268
|
+
var postsController;
|
39269
|
+
expectDeprecation(function() {
|
39270
|
+
postsController = container.lookup('controller:posts');
|
39271
|
+
}, object_controller.objectControllerDeprecation);
|
39272
|
+
|
39273
|
+
equal(postsController, postController.get('postsController'), "controller.posts is injected");
|
39274
|
+
});
|
39275
|
+
|
39276
|
+
QUnit.test("controllers can be injected into ArrayControllers", function() {
|
39277
|
+
var registry = new system__container.Registry();
|
39278
|
+
var container = registry.container();
|
39279
|
+
|
39280
|
+
registry.register('controller:post', Controller['default'].extend({
|
39281
|
+
postsController: inject['default'].controller('posts')
|
39282
|
+
}));
|
39283
|
+
|
39284
|
+
registry.register('controller:posts', ArrayController['default'].extend());
|
39285
|
+
|
39286
|
+
var postController = container.lookup('controller:post');
|
39287
|
+
var postsController = container.lookup('controller:posts');
|
39288
|
+
|
39289
|
+
equal(postsController, postController.get('postsController'), "controller.posts is injected");
|
39290
|
+
});
|
39291
|
+
|
39292
|
+
|
38819
39293
|
QUnit.test("services can be injected into controllers", function() {
|
38820
39294
|
var registry = new system__container.Registry();
|
38821
39295
|
var container = registry.container();
|
@@ -41270,7 +41744,7 @@ enifed('ember-runtime/tests/legacy_1x/mixins/observable/propertyChanges_test', [
|
|
41270
41744
|
equal(ObjectA.prop, "propValue");
|
41271
41745
|
ObjectA.endPropertyChanges();
|
41272
41746
|
|
41273
|
-
|
41747
|
+
//end inner nest
|
41274
41748
|
ObjectA.set('prop', 'changePropValue');
|
41275
41749
|
equal(ObjectA.newFoo, "newFooValue");
|
41276
41750
|
|
@@ -41607,9 +42081,9 @@ enifed('ember-runtime/tests/legacy_1x/system/binding_test', ['ember-metal/core',
|
|
41607
42081
|
});
|
41608
42082
|
|
41609
42083
|
TestNamespace.toObject = EmberObject['default'].createWithMixins({
|
41610
|
-
|
41611
|
-
|
41612
|
-
|
42084
|
+
valueBinding: ember_metal__binding.Binding.from('TestNamespace.fromObject.value'),
|
42085
|
+
localValue: "originalLocal",
|
42086
|
+
relativeBinding: ember_metal__binding.Binding.from('localValue')
|
41613
42087
|
});
|
41614
42088
|
});
|
41615
42089
|
},
|
@@ -41915,7 +42389,7 @@ enifed('ember-runtime/tests/legacy_1x/system/object/bindings_test', ['ember-meta
|
|
41915
42389
|
teardown: function() {
|
41916
42390
|
Ember['default'].lookup = originalLookup;
|
41917
42391
|
TestObject = fromObject = extraObject = null;
|
41918
|
-
|
42392
|
+
// delete TestNamespace;
|
41919
42393
|
}
|
41920
42394
|
|
41921
42395
|
};
|
@@ -42492,8 +42966,8 @@ enifed('ember-runtime/tests/legacy_1x/system/set_test', ['ember-metal/core', 'em
|
|
42492
42966
|
});
|
42493
42967
|
|
42494
42968
|
QUnit.module("Set.pop + Set.copy", {
|
42495
|
-
|
42496
|
-
|
42969
|
+
// generate a set with every type of object, but none of the specific
|
42970
|
+
// ones we add in the tests below...
|
42497
42971
|
setup: function() {
|
42498
42972
|
ignoreDeprecation(function() {
|
42499
42973
|
set = new Set['default'](Ember['default'].A([
|
@@ -45125,8 +45599,7 @@ enifed('ember-runtime/tests/suites/array', ['exports', 'ember-runtime/tests/suit
|
|
45125
45599
|
'use strict';
|
45126
45600
|
|
45127
45601
|
var ObserverClass = enumerable.ObserverClass.extend({
|
45128
|
-
|
45129
|
-
observeArray: function(obj) {
|
45602
|
+
observeArray: function(obj) {
|
45130
45603
|
obj.addArrayObserver(this);
|
45131
45604
|
return this;
|
45132
45605
|
},
|
@@ -54061,7 +54534,7 @@ enifed('ember-template-compiler/tests/system/compile_test', ['ember-template-com
|
|
54061
54534
|
|
54062
54535
|
var actual = compile['default'](templateString);
|
54063
54536
|
|
54064
|
-
equal(actual.revision, 'Ember@1.11.0
|
54537
|
+
equal(actual.revision, 'Ember@1.11.0', 'revision is included in generated template');
|
54065
54538
|
});
|
54066
54539
|
|
54067
54540
|
QUnit.test('the template revision is different than the HTMLBars default revision', function() {
|
@@ -54297,7 +54770,7 @@ enifed('ember-testing/test.jshint', function () {
|
|
54297
54770
|
});
|
54298
54771
|
|
54299
54772
|
});
|
54300
|
-
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) {
|
54773
|
+
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) {
|
54301
54774
|
|
54302
54775
|
'use strict';
|
54303
54776
|
|
@@ -54360,7 +54833,7 @@ enifed('ember-testing/tests/acceptance_test', ['ember-metal/run_loop', 'ember-vi
|
|
54360
54833
|
});
|
54361
54834
|
|
54362
54835
|
Test['default'].registerAsyncHelper('slowHelper', function() {
|
54363
|
-
return
|
54836
|
+
return new RSVP['default'].Promise(function(resolve) {
|
54364
54837
|
setTimeout(resolve, 10);
|
54365
54838
|
});
|
54366
54839
|
});
|
@@ -56660,26 +57133,6 @@ enifed('ember-views/system/renderer.jshint', function () {
|
|
56660
57133
|
ok(true, 'ember-views/system/renderer.js should pass jshint.');
|
56661
57134
|
});
|
56662
57135
|
|
56663
|
-
});
|
56664
|
-
enifed('ember-views/system/sanitize_attribute_value.jscs-test', function () {
|
56665
|
-
|
56666
|
-
'use strict';
|
56667
|
-
|
56668
|
-
module('JSCS - ember-views/system');
|
56669
|
-
test('ember-views/system/sanitize_attribute_value.js should pass jscs', function() {
|
56670
|
-
ok(true, 'ember-views/system/sanitize_attribute_value.js should pass jscs.');
|
56671
|
-
});
|
56672
|
-
|
56673
|
-
});
|
56674
|
-
enifed('ember-views/system/sanitize_attribute_value.jshint', function () {
|
56675
|
-
|
56676
|
-
'use strict';
|
56677
|
-
|
56678
|
-
module('JSHint - ember-views/system');
|
56679
|
-
test('ember-views/system/sanitize_attribute_value.js should pass jshint', function() {
|
56680
|
-
ok(true, 'ember-views/system/sanitize_attribute_value.js should pass jshint.');
|
56681
|
-
});
|
56682
|
-
|
56683
57136
|
});
|
56684
57137
|
enifed('ember-views/system/utils.jscs-test', function () {
|
56685
57138
|
|
@@ -57810,84 +58263,6 @@ enifed('ember-views/tests/system/render_buffer_test.jshint', function () {
|
|
57810
58263
|
ok(true, 'ember-views/tests/system/render_buffer_test.js should pass jshint.');
|
57811
58264
|
});
|
57812
58265
|
|
57813
|
-
});
|
57814
|
-
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) {
|
57815
|
-
|
57816
|
-
'use strict';
|
57817
|
-
|
57818
|
-
QUnit.module('ember-views: sanitizeAttributeValue(null, "href")');
|
57819
|
-
|
57820
|
-
var goodProtocols = ['https', 'http', 'ftp', 'tel', 'file'];
|
57821
|
-
var dom = new DOMHelper['default']();
|
57822
|
-
|
57823
|
-
for (var i = 0, l = goodProtocols.length; i < l; i++) {
|
57824
|
-
buildProtocolTest(goodProtocols[i]);
|
57825
|
-
}
|
57826
|
-
|
57827
|
-
function buildProtocolTest(protocol) {
|
57828
|
-
QUnit.test('allows ' + protocol + ' protocol when element is not provided', function() {
|
57829
|
-
expect(1);
|
57830
|
-
|
57831
|
-
var expected = protocol + '://foo.com';
|
57832
|
-
var actual = sanitizeAttributeValue['default'](dom, null, 'href', expected);
|
57833
|
-
|
57834
|
-
equal(actual, expected, 'protocol not escaped');
|
57835
|
-
});
|
57836
|
-
}
|
57837
|
-
|
57838
|
-
QUnit.test('blocks javascript: protocol', function() {
|
57839
|
-
/* jshint scripturl:true */
|
57840
|
-
|
57841
|
-
expect(1);
|
57842
|
-
|
57843
|
-
var expected = 'javascript:alert("foo")';
|
57844
|
-
var actual = sanitizeAttributeValue['default'](dom, null, 'href', expected);
|
57845
|
-
|
57846
|
-
equal(actual, 'unsafe:' + expected, 'protocol escaped');
|
57847
|
-
});
|
57848
|
-
|
57849
|
-
QUnit.test('blocks blacklisted protocols', function() {
|
57850
|
-
/* jshint scripturl:true */
|
57851
|
-
|
57852
|
-
expect(1);
|
57853
|
-
|
57854
|
-
var expected = 'javascript:alert("foo")';
|
57855
|
-
var actual = sanitizeAttributeValue['default'](dom, null, 'href', expected);
|
57856
|
-
|
57857
|
-
equal(actual, 'unsafe:' + expected, 'protocol escaped');
|
57858
|
-
});
|
57859
|
-
|
57860
|
-
QUnit.test('does not block SafeStrings', function() {
|
57861
|
-
/* jshint scripturl:true */
|
57862
|
-
|
57863
|
-
expect(1);
|
57864
|
-
|
57865
|
-
var expected = 'javascript:alert("foo")';
|
57866
|
-
var actual = sanitizeAttributeValue['default'](dom, null, 'href', new string.SafeString(expected));
|
57867
|
-
|
57868
|
-
equal(actual, expected, 'protocol unescaped');
|
57869
|
-
});
|
57870
|
-
|
57871
|
-
});
|
57872
|
-
enifed('ember-views/tests/system/sanitize_attribute_value_test.jscs-test', function () {
|
57873
|
-
|
57874
|
-
'use strict';
|
57875
|
-
|
57876
|
-
module('JSCS - ember-views/tests/system');
|
57877
|
-
test('ember-views/tests/system/sanitize_attribute_value_test.js should pass jscs', function() {
|
57878
|
-
ok(true, 'ember-views/tests/system/sanitize_attribute_value_test.js should pass jscs.');
|
57879
|
-
});
|
57880
|
-
|
57881
|
-
});
|
57882
|
-
enifed('ember-views/tests/system/sanitize_attribute_value_test.jshint', function () {
|
57883
|
-
|
57884
|
-
'use strict';
|
57885
|
-
|
57886
|
-
module('JSHint - ember-views/tests/system');
|
57887
|
-
test('ember-views/tests/system/sanitize_attribute_value_test.js should pass jshint', function() {
|
57888
|
-
ok(true, 'ember-views/tests/system/sanitize_attribute_value_test.js should pass jshint.');
|
57889
|
-
});
|
57890
|
-
|
57891
58266
|
});
|
57892
58267
|
enifed('ember-views/tests/system/view_utils_test', ['ember-metal/run_loop', 'ember-views/views/view'], function (run, View) {
|
57893
58268
|
|
@@ -58742,10 +59117,10 @@ enifed('ember-views/tests/views/collection_test', ['ember-metal/core', 'ember-me
|
|
58742
59117
|
Ember['default'].lookup = {
|
58743
59118
|
App: {
|
58744
59119
|
EmptyView: View['default'].extend({
|
58745
|
-
|
58746
|
-
|
58747
|
-
|
58748
|
-
|
59120
|
+
tagName: 'kbd',
|
59121
|
+
render: function(buf) {
|
59122
|
+
buf.push("THIS IS AN EMPTY VIEW");
|
59123
|
+
}
|
58749
59124
|
})
|
58750
59125
|
}
|
58751
59126
|
};
|
@@ -64081,7 +64456,7 @@ enifed('ember-views/tests/views/view/inject_test.jshint', function () {
|
|
64081
64456
|
});
|
64082
64457
|
|
64083
64458
|
});
|
64084
|
-
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) {
|
64459
|
+
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) {
|
64085
64460
|
|
64086
64461
|
'use strict';
|
64087
64462
|
|
@@ -64207,8 +64582,28 @@ enifed('ember-views/tests/views/view/is_visible_test', ['ember-metal/property_ge
|
|
64207
64582
|
});
|
64208
64583
|
|
64209
64584
|
QUnit.test("view should be notified after isVisible is set to false and the element has been hidden", function() {
|
64210
|
-
|
64211
|
-
|
64585
|
+
run['default'](function() {
|
64586
|
+
view = View.create({ isVisible: false });
|
64587
|
+
view.append();
|
64588
|
+
});
|
64589
|
+
|
64590
|
+
ok(view.$().is(':hidden'), "precond - view is hidden when appended");
|
64591
|
+
|
64592
|
+
run['default'](function() {
|
64593
|
+
view.set('isVisible', true);
|
64594
|
+
});
|
64595
|
+
|
64596
|
+
ok(view.$().is(':visible'), "precond - view is now visible");
|
64597
|
+
equal(parentBecameVisible, 1);
|
64598
|
+
equal(childBecameVisible, 1);
|
64599
|
+
equal(grandchildBecameVisible, 1);
|
64600
|
+
});
|
64601
|
+
|
64602
|
+
QUnit.test("view should change visibility with a virtual childView", function() {
|
64603
|
+
view = View.create({
|
64604
|
+
isVisible: true,
|
64605
|
+
template: compile['default']('<div {{bind-attr bing="tweep"}}></div>')
|
64606
|
+
});
|
64212
64607
|
|
64213
64608
|
run['default'](function() {
|
64214
64609
|
view.append();
|
@@ -64217,13 +64612,10 @@ enifed('ember-views/tests/views/view/is_visible_test', ['ember-metal/property_ge
|
|
64217
64612
|
ok(view.$().is(':visible'), "precond - view is visible when appended");
|
64218
64613
|
|
64219
64614
|
run['default'](function() {
|
64220
|
-
|
64615
|
+
view.set('isVisible', false);
|
64221
64616
|
});
|
64222
64617
|
|
64223
|
-
ok(
|
64224
|
-
|
64225
|
-
equal(childBecameHidden, 1);
|
64226
|
-
equal(grandchildBecameHidden, 1);
|
64618
|
+
ok(view.$().is(':hidden'), "precond - view is now hidden");
|
64227
64619
|
});
|
64228
64620
|
|
64229
64621
|
QUnit.test("view should be notified after isVisible is set to true and the element has been shown", function() {
|
@@ -67374,7 +67766,7 @@ enifed('ember/tests/helpers/helper_registration_test', ['ember', 'ember-htmlbars
|
|
67374
67766
|
ok(!helpers['x-borf'], "Container-registered helper doesn't wind up on global helpers hash");
|
67375
67767
|
});
|
67376
67768
|
|
67377
|
-
|
67769
|
+
// need to make `makeBoundHelper` for HTMLBars
|
67378
67770
|
QUnit.test("Bound helpers registered on the container can be late-invoked", function() {
|
67379
67771
|
Ember.TEMPLATES.application = compile("<div id='wrapper'>{{x-reverse}} {{x-reverse foo}}</div>");
|
67380
67772
|
|
@@ -67389,8 +67781,8 @@ enifed('ember/tests/helpers/helper_registration_test', ['ember', 'ember-htmlbars
|
|
67389
67781
|
ok(!helpers['x-reverse'], "Container-registered helper doesn't wind up on global helpers hash");
|
67390
67782
|
});
|
67391
67783
|
|
67392
|
-
|
67393
|
-
|
67784
|
+
// we have unit tests for this in ember-htmlbars/tests/system/lookup-helper
|
67785
|
+
// and we are not going to recreate the handlebars helperMissing concept
|
67394
67786
|
QUnit.test("Undashed helpers registered on the container can not (presently) be invoked", function() {
|
67395
67787
|
|
67396
67788
|
// Note: the reason we're not allowing undashed helpers is to avoid
|
@@ -69081,7 +69473,7 @@ enifed('ember/tests/helpers/link_to_test', ['ember', 'ember-runtime/controllers/
|
|
69081
69473
|
equal(router.get('location.path'), '/about');
|
69082
69474
|
}
|
69083
69475
|
|
69084
|
-
var aboutDefer;
|
69476
|
+
var aboutDefer, otherDefer;
|
69085
69477
|
|
69086
69478
|
if (!Ember.FEATURES.isEnabled('ember-routing-transitioning-classes')) {
|
69087
69479
|
QUnit.module("The {{link-to}} helper: eager URL updating", {
|
@@ -69219,12 +69611,20 @@ enifed('ember/tests/helpers/link_to_test', ['ember', 'ember-runtime/controllers/
|
|
69219
69611
|
});
|
69220
69612
|
|
69221
69613
|
App.AboutRoute = Ember.Route.extend({
|
69222
|
-
model: function() {
|
69614
|
+
model: function () {
|
69223
69615
|
aboutDefer = Ember.RSVP.defer();
|
69224
69616
|
return aboutDefer.promise;
|
69225
69617
|
}
|
69226
69618
|
});
|
69227
69619
|
|
69620
|
+
App.OtherRoute = Ember.Route.extend({
|
69621
|
+
model: function () {
|
69622
|
+
otherDefer = Ember.RSVP.defer();
|
69623
|
+
return otherDefer.promise;
|
69624
|
+
}
|
69625
|
+
});
|
69626
|
+
|
69627
|
+
|
69228
69628
|
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'}}");
|
69229
69629
|
});
|
69230
69630
|
},
|
@@ -69265,6 +69665,85 @@ enifed('ember/tests/helpers/link_to_test', ['ember', 'ember-runtime/controllers/
|
|
69265
69665
|
assertHasClass('ember-transitioning-in', $index, false, $about, false, $other, false);
|
69266
69666
|
assertHasClass('ember-transitioning-out', $index, false, $about, false, $other, false);
|
69267
69667
|
});
|
69668
|
+
|
69669
|
+
QUnit.test("while a transition is underway with nested link-to's", function() {
|
69670
|
+
expect(54);
|
69671
|
+
|
69672
|
+
Router.map(function() {
|
69673
|
+
this.route('parent-route', function() {
|
69674
|
+
this.route('about');
|
69675
|
+
this.route('other');
|
69676
|
+
});
|
69677
|
+
});
|
69678
|
+
|
69679
|
+
App.ParentRouteAboutRoute = Ember.Route.extend({
|
69680
|
+
model: function () {
|
69681
|
+
aboutDefer = Ember.RSVP.defer();
|
69682
|
+
return aboutDefer.promise;
|
69683
|
+
}
|
69684
|
+
});
|
69685
|
+
|
69686
|
+
App.ParentRouteOtherRoute = Ember.Route.extend({
|
69687
|
+
model: function () {
|
69688
|
+
otherDefer = Ember.RSVP.defer();
|
69689
|
+
return otherDefer.promise;
|
69690
|
+
}
|
69691
|
+
});
|
69692
|
+
|
69693
|
+
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}}");
|
69694
|
+
|
69695
|
+
bootApplication();
|
69696
|
+
|
69697
|
+
function assertHasClass(className) {
|
69698
|
+
var i = 1;
|
69699
|
+
while (i < arguments.length) {
|
69700
|
+
var $a = arguments[i];
|
69701
|
+
var shouldHaveClass = arguments[i+1];
|
69702
|
+
equal($a.hasClass(className), shouldHaveClass, $a.attr('id') + " should " + (shouldHaveClass ? '' : "not ") + "have class " + className);
|
69703
|
+
i +=2;
|
69704
|
+
}
|
69705
|
+
}
|
69706
|
+
|
69707
|
+
var $index = Ember.$('#index-link');
|
69708
|
+
var $about = Ember.$('#about-link');
|
69709
|
+
var $other = Ember.$('#other-link');
|
69710
|
+
|
69711
|
+
Ember.run($about, 'click');
|
69712
|
+
|
69713
|
+
assertHasClass('active', $index, true, $about, false, $other, false);
|
69714
|
+
assertHasClass('ember-transitioning-in', $index, false, $about, true, $other, false);
|
69715
|
+
assertHasClass('ember-transitioning-out', $index, true, $about, false, $other, false);
|
69716
|
+
|
69717
|
+
Ember.run(aboutDefer, 'resolve');
|
69718
|
+
|
69719
|
+
assertHasClass('active', $index, false, $about, true, $other, false);
|
69720
|
+
assertHasClass('ember-transitioning-in', $index, false, $about, false, $other, false);
|
69721
|
+
assertHasClass('ember-transitioning-out', $index, false, $about, false, $other, false);
|
69722
|
+
|
69723
|
+
Ember.run($other, 'click');
|
69724
|
+
|
69725
|
+
assertHasClass('active', $index, false, $about, true, $other, false);
|
69726
|
+
assertHasClass('ember-transitioning-in', $index, false, $about, false, $other, true);
|
69727
|
+
assertHasClass('ember-transitioning-out', $index, false, $about, true, $other, false);
|
69728
|
+
|
69729
|
+
Ember.run(otherDefer, 'resolve');
|
69730
|
+
|
69731
|
+
assertHasClass('active', $index, false, $about, false, $other, true);
|
69732
|
+
assertHasClass('ember-transitioning-in', $index, false, $about, false, $other, false);
|
69733
|
+
assertHasClass('ember-transitioning-out', $index, false, $about, false, $other, false);
|
69734
|
+
|
69735
|
+
Ember.run($about, 'click');
|
69736
|
+
|
69737
|
+
assertHasClass('active', $index, false, $about, false, $other, true);
|
69738
|
+
assertHasClass('ember-transitioning-in', $index, false, $about, true, $other, false);
|
69739
|
+
assertHasClass('ember-transitioning-out', $index, false, $about, false, $other, true);
|
69740
|
+
|
69741
|
+
Ember.run(aboutDefer, 'resolve');
|
69742
|
+
|
69743
|
+
assertHasClass('active', $index, false, $about, true, $other, false);
|
69744
|
+
assertHasClass('ember-transitioning-in', $index, false, $about, false, $other, false);
|
69745
|
+
assertHasClass('ember-transitioning-out', $index, false, $about, false, $other, false);
|
69746
|
+
});
|
69268
69747
|
|
69269
69748
|
|
69270
69749
|
});
|
@@ -69394,6 +69873,8 @@ enifed('ember/tests/routing/basic_test', ['ember', 'ember-metal/enumerable_utils
|
|
69394
69873
|
|
69395
69874
|
'use strict';
|
69396
69875
|
|
69876
|
+
var trim = Ember.$.trim;
|
69877
|
+
|
69397
69878
|
var compile = EmberHandlebars['default'].compile;
|
69398
69879
|
|
69399
69880
|
var Router, App, router, registry, container, originalLoggerError;
|
@@ -72996,6 +73477,247 @@ enifed('ember/tests/routing/basic_test', ['ember', 'ember-metal/enumerable_utils
|
|
72996
73477
|
equal(Ember.$('#qunit-fixture').text(), "A-The index-B-Hello world-C", "second render");
|
72997
73478
|
});
|
72998
73479
|
|
73480
|
+
QUnit.test("Can render routes with no 'main' outlet and their children", function() {
|
73481
|
+
Ember.TEMPLATES.application = compile('<div id="application">{{outlet "app"}}</div>');
|
73482
|
+
Ember.TEMPLATES.app = compile('<div id="app-common">{{outlet "common"}}</div><div id="app-sub">{{outlet "sub"}}</div>');
|
73483
|
+
Ember.TEMPLATES.common = compile('<div id="common"></div>');
|
73484
|
+
Ember.TEMPLATES.sub = compile('<div id="sub"></div>');
|
73485
|
+
|
73486
|
+
Router.map(function() {
|
73487
|
+
this.route('app', { path: "/app" }, function() {
|
73488
|
+
this.resource('sub', { path: "/sub" });
|
73489
|
+
});
|
73490
|
+
});
|
73491
|
+
|
73492
|
+
App.AppRoute = Ember.Route.extend({
|
73493
|
+
renderTemplate : function() {
|
73494
|
+
this.render('app', {
|
73495
|
+
outlet: 'app',
|
73496
|
+
into: 'application'
|
73497
|
+
});
|
73498
|
+
this.render('common', {
|
73499
|
+
outlet: 'common',
|
73500
|
+
into: 'app'
|
73501
|
+
});
|
73502
|
+
}
|
73503
|
+
});
|
73504
|
+
|
73505
|
+
App.SubRoute = Ember.Route.extend({
|
73506
|
+
renderTemplate : function() {
|
73507
|
+
this.render('sub', {
|
73508
|
+
outlet: 'sub',
|
73509
|
+
into: 'app'
|
73510
|
+
});
|
73511
|
+
}
|
73512
|
+
});
|
73513
|
+
|
73514
|
+
bootApplication();
|
73515
|
+
handleURL('/app');
|
73516
|
+
equal(Ember.$('#app-common #common').length, 1, "Finds common while viewing /app");
|
73517
|
+
handleURL('/app/sub');
|
73518
|
+
equal(Ember.$('#app-common #common').length, 1, "Finds common while viewing /app/sub");
|
73519
|
+
equal(Ember.$('#app-sub #sub').length, 1, "Finds sub while viewing /app/sub");
|
73520
|
+
});
|
73521
|
+
|
73522
|
+
QUnit.test("Tolerates stacked renders", function() {
|
73523
|
+
Ember.TEMPLATES.application = compile('{{outlet}}{{outlet "modal"}}');
|
73524
|
+
Ember.TEMPLATES.index = compile('hi');
|
73525
|
+
Ember.TEMPLATES.layer = compile('layer');
|
73526
|
+
App.ApplicationRoute = Ember.Route.extend({
|
73527
|
+
actions: {
|
73528
|
+
openLayer: function() {
|
73529
|
+
this.render('layer', {
|
73530
|
+
into: 'application',
|
73531
|
+
outlet: 'modal'
|
73532
|
+
});
|
73533
|
+
},
|
73534
|
+
close: function() {
|
73535
|
+
this.disconnectOutlet({
|
73536
|
+
outlet: 'modal',
|
73537
|
+
parentView: 'application'
|
73538
|
+
});
|
73539
|
+
}
|
73540
|
+
}
|
73541
|
+
});
|
73542
|
+
bootApplication();
|
73543
|
+
equal(trim(Ember.$('#qunit-fixture').text()), 'hi');
|
73544
|
+
Ember.run(router, 'send', 'openLayer');
|
73545
|
+
equal(trim(Ember.$('#qunit-fixture').text()), 'hilayer');
|
73546
|
+
Ember.run(router, 'send', 'openLayer');
|
73547
|
+
equal(trim(Ember.$('#qunit-fixture').text()), 'hilayer');
|
73548
|
+
Ember.run(router, 'send', 'close');
|
73549
|
+
equal(trim(Ember.$('#qunit-fixture').text()), 'hi');
|
73550
|
+
});
|
73551
|
+
|
73552
|
+
QUnit.test("Renders child into parent with non-default template name", function() {
|
73553
|
+
Ember.TEMPLATES.application = compile('<div class="a">{{outlet}}</div>');
|
73554
|
+
Ember.TEMPLATES['exports/root'] = compile('<div class="b">{{outlet}}</div>');
|
73555
|
+
Ember.TEMPLATES['exports/index'] = compile('<div class="c"></div>');
|
73556
|
+
|
73557
|
+
Router.map(function() {
|
73558
|
+
this.route('root', function() {
|
73559
|
+
});
|
73560
|
+
});
|
73561
|
+
|
73562
|
+
App.RootRoute = Ember.Route.extend({
|
73563
|
+
renderTemplate: function() {
|
73564
|
+
this.render('exports/root');
|
73565
|
+
}
|
73566
|
+
});
|
73567
|
+
|
73568
|
+
App.RootIndexRoute = Ember.Route.extend({
|
73569
|
+
renderTemplate: function() {
|
73570
|
+
this.render('exports/index');
|
73571
|
+
}
|
73572
|
+
});
|
73573
|
+
|
73574
|
+
bootApplication();
|
73575
|
+
handleURL('/root');
|
73576
|
+
equal(Ember.$('#qunit-fixture .a .b .c').length, 1);
|
73577
|
+
});
|
73578
|
+
|
73579
|
+
QUnit.test("Allows any route to disconnectOutlet another route's templates", function() {
|
73580
|
+
Ember.TEMPLATES.application = compile('{{outlet}}{{outlet "modal"}}');
|
73581
|
+
Ember.TEMPLATES.index = compile('hi');
|
73582
|
+
Ember.TEMPLATES.layer = compile('layer');
|
73583
|
+
App.ApplicationRoute = Ember.Route.extend({
|
73584
|
+
actions: {
|
73585
|
+
openLayer: function() {
|
73586
|
+
this.render('layer', {
|
73587
|
+
into: 'application',
|
73588
|
+
outlet: 'modal'
|
73589
|
+
});
|
73590
|
+
}
|
73591
|
+
}
|
73592
|
+
});
|
73593
|
+
App.IndexRoute = Ember.Route.extend({
|
73594
|
+
actions: {
|
73595
|
+
close: function() {
|
73596
|
+
this.disconnectOutlet({
|
73597
|
+
parentView: 'application',
|
73598
|
+
outlet: 'modal'
|
73599
|
+
});
|
73600
|
+
}
|
73601
|
+
}
|
73602
|
+
});
|
73603
|
+
bootApplication();
|
73604
|
+
equal(trim(Ember.$('#qunit-fixture').text()), 'hi');
|
73605
|
+
Ember.run(router, 'send', 'openLayer');
|
73606
|
+
equal(trim(Ember.$('#qunit-fixture').text()), 'hilayer');
|
73607
|
+
Ember.run(router, 'send', 'close');
|
73608
|
+
equal(trim(Ember.$('#qunit-fixture').text()), 'hi');
|
73609
|
+
});
|
73610
|
+
|
73611
|
+
QUnit.test("Can render({into:...}) the render helper", function() {
|
73612
|
+
Ember.TEMPLATES.application = compile('{{render "foo"}}');
|
73613
|
+
Ember.TEMPLATES.foo = compile('<div class="foo">{{outlet}}</div>');
|
73614
|
+
Ember.TEMPLATES.index = compile('other');
|
73615
|
+
Ember.TEMPLATES.bar = compile('bar');
|
73616
|
+
|
73617
|
+
App.IndexRoute = Ember.Route.extend({
|
73618
|
+
renderTemplate: function() {
|
73619
|
+
this.render({ into: 'foo' });
|
73620
|
+
},
|
73621
|
+
actions: {
|
73622
|
+
changeToBar: function() {
|
73623
|
+
this.disconnectOutlet({
|
73624
|
+
parentView: 'foo',
|
73625
|
+
outlet: 'main'
|
73626
|
+
});
|
73627
|
+
this.render('bar', { into: 'foo' });
|
73628
|
+
}
|
73629
|
+
}
|
73630
|
+
});
|
73631
|
+
|
73632
|
+
bootApplication();
|
73633
|
+
equal(Ember.$('#qunit-fixture .foo').text(), 'other');
|
73634
|
+
Ember.run(router, 'send', 'changeToBar');
|
73635
|
+
equal(Ember.$('#qunit-fixture .foo').text(), 'bar');
|
73636
|
+
});
|
73637
|
+
|
73638
|
+
QUnit.test("Can disconnect from the render helper", function() {
|
73639
|
+
Ember.TEMPLATES.application = compile('{{render "foo"}}');
|
73640
|
+
Ember.TEMPLATES.foo = compile('<div class="foo">{{outlet}}</div>');
|
73641
|
+
Ember.TEMPLATES.index = compile('other');
|
73642
|
+
|
73643
|
+
App.IndexRoute = Ember.Route.extend({
|
73644
|
+
renderTemplate: function() {
|
73645
|
+
this.render({ into: 'foo' });
|
73646
|
+
},
|
73647
|
+
actions: {
|
73648
|
+
disconnect: function() {
|
73649
|
+
this.disconnectOutlet({
|
73650
|
+
parentView: 'foo',
|
73651
|
+
outlet: 'main'
|
73652
|
+
});
|
73653
|
+
}
|
73654
|
+
}
|
73655
|
+
});
|
73656
|
+
|
73657
|
+
bootApplication();
|
73658
|
+
equal(Ember.$('#qunit-fixture .foo').text(), 'other');
|
73659
|
+
Ember.run(router, 'send', 'disconnect');
|
73660
|
+
equal(Ember.$('#qunit-fixture .foo').text(), '');
|
73661
|
+
});
|
73662
|
+
|
73663
|
+
|
73664
|
+
QUnit.test("Can render({into:...}) the render helper's children", function() {
|
73665
|
+
Ember.TEMPLATES.application = compile('{{render "foo"}}');
|
73666
|
+
Ember.TEMPLATES.foo = compile('<div class="foo">{{outlet}}</div>');
|
73667
|
+
Ember.TEMPLATES.index = compile('<div class="index">{{outlet}}</div>');
|
73668
|
+
Ember.TEMPLATES.other = compile('other');
|
73669
|
+
Ember.TEMPLATES.bar = compile('bar');
|
73670
|
+
|
73671
|
+
App.IndexRoute = Ember.Route.extend({
|
73672
|
+
renderTemplate: function() {
|
73673
|
+
this.render({ into: 'foo' });
|
73674
|
+
this.render('other', { into: 'index' });
|
73675
|
+
},
|
73676
|
+
actions: {
|
73677
|
+
changeToBar: function() {
|
73678
|
+
this.disconnectOutlet({
|
73679
|
+
parentView: 'index',
|
73680
|
+
outlet: 'main'
|
73681
|
+
});
|
73682
|
+
this.render('bar', { into: 'index' });
|
73683
|
+
}
|
73684
|
+
}
|
73685
|
+
});
|
73686
|
+
|
73687
|
+
bootApplication();
|
73688
|
+
equal(Ember.$('#qunit-fixture .foo .index').text(), 'other');
|
73689
|
+
Ember.run(router, 'send', 'changeToBar');
|
73690
|
+
equal(Ember.$('#qunit-fixture .foo .index').text(), 'bar');
|
73691
|
+
|
73692
|
+
});
|
73693
|
+
|
73694
|
+
QUnit.test("Can disconnect from the render helper's children", function() {
|
73695
|
+
Ember.TEMPLATES.application = compile('{{render "foo"}}');
|
73696
|
+
Ember.TEMPLATES.foo = compile('<div class="foo">{{outlet}}</div>');
|
73697
|
+
Ember.TEMPLATES.index = compile('<div class="index">{{outlet}}</div>');
|
73698
|
+
Ember.TEMPLATES.other = compile('other');
|
73699
|
+
|
73700
|
+
App.IndexRoute = Ember.Route.extend({
|
73701
|
+
renderTemplate: function() {
|
73702
|
+
this.render({ into: 'foo' });
|
73703
|
+
this.render('other', { into: 'index' });
|
73704
|
+
},
|
73705
|
+
actions: {
|
73706
|
+
disconnect: function() {
|
73707
|
+
this.disconnectOutlet({
|
73708
|
+
parentView: 'index',
|
73709
|
+
outlet: 'main'
|
73710
|
+
});
|
73711
|
+
}
|
73712
|
+
}
|
73713
|
+
});
|
73714
|
+
|
73715
|
+
bootApplication();
|
73716
|
+
equal(Ember.$('#qunit-fixture .foo .index').text(), 'other');
|
73717
|
+
Ember.run(router, 'send', 'disconnect');
|
73718
|
+
equal(Ember.$('#qunit-fixture .foo .index').text(), '');
|
73719
|
+
});
|
73720
|
+
|
72999
73721
|
});
|
73000
73722
|
enifed('ember/tests/routing/basic_test.jscs-test', function () {
|
73001
73723
|
|
@@ -73136,6 +73858,30 @@ enifed('ember/tests/routing/query_params_test', ['ember', 'ember-metal/computed'
|
|
73136
73858
|
}
|
73137
73859
|
});
|
73138
73860
|
|
73861
|
+
QUnit.test("Single query params can be set on ObjectController [DEPRECATED]", function() {
|
73862
|
+
expectDeprecation("Ember.ObjectController is deprecated, please use Ember.Controller and use `model.propertyName`.");
|
73863
|
+
|
73864
|
+
Router.map(function() {
|
73865
|
+
this.route("home", { path: '/' });
|
73866
|
+
});
|
73867
|
+
|
73868
|
+
App.HomeController = Ember.ObjectController.extend({
|
73869
|
+
queryParams: ['foo'],
|
73870
|
+
foo: "123"
|
73871
|
+
});
|
73872
|
+
|
73873
|
+
bootApplication();
|
73874
|
+
|
73875
|
+
var controller = container.lookup('controller:home');
|
73876
|
+
|
73877
|
+
setAndFlush(controller, 'foo', '456');
|
73878
|
+
|
73879
|
+
equal(router.get('location.path'), "/?foo=456");
|
73880
|
+
|
73881
|
+
setAndFlush(controller, 'foo', '987');
|
73882
|
+
equal(router.get('location.path'), "/?foo=987");
|
73883
|
+
});
|
73884
|
+
|
73139
73885
|
QUnit.test("Single query params can be set", function() {
|
73140
73886
|
Router.map(function() {
|
73141
73887
|
this.route("home", { path: '/' });
|
@@ -75874,7 +76620,12 @@ enifed("morph-attr/sanitize-attribute-value",
|
|
75874
76620
|
'BODY': true,
|
75875
76621
|
'LINK': true,
|
75876
76622
|
'IMG': true,
|
75877
|
-
'IFRAME': true
|
76623
|
+
'IFRAME': true,
|
76624
|
+
'BASE': true
|
76625
|
+
};
|
76626
|
+
|
76627
|
+
var badTagsForDataURI = {
|
76628
|
+
'EMBED': true
|
75878
76629
|
};
|
75879
76630
|
|
75880
76631
|
var badAttributes = {
|
@@ -75883,13 +76634,17 @@ enifed("morph-attr/sanitize-attribute-value",
|
|
75883
76634
|
'background': true
|
75884
76635
|
};
|
75885
76636
|
__exports__.badAttributes = badAttributes;
|
76637
|
+
var badAttributesForDataURI = {
|
76638
|
+
'src': true
|
76639
|
+
};
|
76640
|
+
|
75886
76641
|
function sanitizeAttributeValue(dom, element, attribute, value) {
|
75887
76642
|
var tagName;
|
75888
76643
|
|
75889
76644
|
if (!element) {
|
75890
76645
|
tagName = null;
|
75891
76646
|
} else {
|
75892
|
-
tagName = element.tagName;
|
76647
|
+
tagName = element.tagName.toUpperCase();
|
75893
76648
|
}
|
75894
76649
|
|
75895
76650
|
if (value && value.toHTML) {
|
@@ -75903,6 +76658,10 @@ enifed("morph-attr/sanitize-attribute-value",
|
|
75903
76658
|
}
|
75904
76659
|
}
|
75905
76660
|
|
76661
|
+
if (badTagsForDataURI[tagName] && badAttributesForDataURI[attribute]) {
|
76662
|
+
return 'unsafe:' + value;
|
76663
|
+
}
|
76664
|
+
|
75906
76665
|
return value;
|
75907
76666
|
}
|
75908
76667
|
|
@@ -77220,7 +77979,17 @@ enifed("router/router",
|
|
77220
77979
|
|
77221
77980
|
var pop = Array.prototype.pop;
|
77222
77981
|
|
77223
|
-
function Router() {
|
77982
|
+
function Router(_options) {
|
77983
|
+
var options = _options || {};
|
77984
|
+
this.getHandler = options.getHandler || this.getHandler;
|
77985
|
+
this.updateURL = options.updateURL || this.updateURL;
|
77986
|
+
this.replaceURL = options.replaceURL || this.replaceURL;
|
77987
|
+
this.didTransition = options.didTransition || this.didTransition;
|
77988
|
+
this.willTransition = options.willTransition || this.willTransition;
|
77989
|
+
this.delegate = options.delegate || this.delegate;
|
77990
|
+
this.triggerEvent = options.triggerEvent || this.triggerEvent;
|
77991
|
+
this.log = options.log || this.log;
|
77992
|
+
|
77224
77993
|
this.recognizer = new RouteRecognizer();
|
77225
77994
|
this.reset();
|
77226
77995
|
}
|
@@ -77244,7 +78013,7 @@ enifed("router/router",
|
|
77244
78013
|
}
|
77245
78014
|
|
77246
78015
|
// No-op. No need to create a new transition.
|
77247
|
-
return new Transition(this);
|
78016
|
+
return this.activeTransition || new Transition(this);
|
77248
78017
|
}
|
77249
78018
|
|
77250
78019
|
if (isIntermediate) {
|
@@ -77304,6 +78073,8 @@ enifed("router/router",
|
|
77304
78073
|
return this.recognizer.hasRoute(route);
|
77305
78074
|
},
|
77306
78075
|
|
78076
|
+
getHandler: function() {},
|
78077
|
+
|
77307
78078
|
queryParamsTransition: function(changelist, wasTransitioning, oldState, newState) {
|
77308
78079
|
var router = this;
|
77309
78080
|
|
@@ -77565,16 +78336,7 @@ enifed("router/router",
|
|
77565
78336
|
|
77566
78337
|
@param {String} message The message to log.
|
77567
78338
|
*/
|
77568
|
-
log: null
|
77569
|
-
|
77570
|
-
_willChangeContextEvent: 'willChangeContext',
|
77571
|
-
_triggerWillChangeContext: function(handlerInfos, newTransition) {
|
77572
|
-
trigger(this, handlerInfos, true, [this._willChangeContextEvent, newTransition]);
|
77573
|
-
},
|
77574
|
-
|
77575
|
-
_triggerWillLeave: function(handlerInfos, newTransition, leavingChecker) {
|
77576
|
-
trigger(this, handlerInfos, true, ['willLeave', newTransition, leavingChecker]);
|
77577
|
-
}
|
78339
|
+
log: null
|
77578
78340
|
};
|
77579
78341
|
|
77580
78342
|
/**
|
@@ -78004,12 +78766,6 @@ enifed("router/router",
|
|
78004
78766
|
}
|
78005
78767
|
return false;
|
78006
78768
|
};
|
78007
|
-
|
78008
|
-
router._triggerWillLeave(leaving, newTransition, leavingChecker);
|
78009
|
-
}
|
78010
|
-
|
78011
|
-
if (changing.length > 0) {
|
78012
|
-
router._triggerWillChangeContext(changing, newTransition);
|
78013
78769
|
}
|
78014
78770
|
|
78015
78771
|
trigger(router, oldHandlers, true, ['willTransition', newTransition]);
|
@@ -78243,8 +78999,8 @@ enifed("router/transition-intent/named-transition-intent",
|
|
78243
78999
|
});
|
78244
79000
|
});
|
78245
79001
|
enifed("router/transition-intent/url-transition-intent",
|
78246
|
-
["../transition-intent","../transition-state","../handler-info/factory","../utils","exports"],
|
78247
|
-
function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __exports__) {
|
79002
|
+
["../transition-intent","../transition-state","../handler-info/factory","../utils","./../unrecognized-url-error","exports"],
|
79003
|
+
function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __dependency5__, __exports__) {
|
78248
79004
|
"use strict";
|
78249
79005
|
var TransitionIntent = __dependency1__["default"];
|
78250
79006
|
var TransitionState = __dependency2__["default"];
|
@@ -78252,6 +79008,7 @@ enifed("router/transition-intent/url-transition-intent",
|
|
78252
79008
|
var oCreate = __dependency4__.oCreate;
|
78253
79009
|
var merge = __dependency4__.merge;
|
78254
79010
|
var subclass = __dependency4__.subclass;
|
79011
|
+
var UnrecognizedURLError = __dependency5__["default"];
|
78255
79012
|
|
78256
79013
|
__exports__["default"] = subclass(TransitionIntent, {
|
78257
79014
|
url: null,
|
@@ -78302,15 +79059,6 @@ enifed("router/transition-intent/url-transition-intent",
|
|
78302
79059
|
return newState;
|
78303
79060
|
}
|
78304
79061
|
});
|
78305
|
-
|
78306
|
-
/**
|
78307
|
-
Promise reject reasons passed to promise rejection
|
78308
|
-
handlers for failed transitions.
|
78309
|
-
*/
|
78310
|
-
function UnrecognizedURLError(message) {
|
78311
|
-
this.message = (message || "UnrecognizedURLError");
|
78312
|
-
this.name = "UnrecognizedURLError";
|
78313
|
-
}
|
78314
79062
|
});
|
78315
79063
|
enifed("router/transition-state",
|
78316
79064
|
["./handler-info","./utils","rsvp/promise","exports"],
|
@@ -78740,6 +79488,26 @@ enifed("router/transition",
|
|
78740
79488
|
__exports__.logAbort = logAbort;
|
78741
79489
|
__exports__.TransitionAborted = TransitionAborted;
|
78742
79490
|
});
|
79491
|
+
enifed("router/unrecognized-url-error",
|
79492
|
+
["./utils","exports"],
|
79493
|
+
function(__dependency1__, __exports__) {
|
79494
|
+
"use strict";
|
79495
|
+
var oCreate = __dependency1__.oCreate;
|
79496
|
+
|
79497
|
+
/**
|
79498
|
+
Promise reject reasons passed to promise rejection
|
79499
|
+
handlers for failed transitions.
|
79500
|
+
*/
|
79501
|
+
function UnrecognizedURLError(message) {
|
79502
|
+
this.message = (message || "UnrecognizedURLError");
|
79503
|
+
this.name = "UnrecognizedURLError";
|
79504
|
+
Error.call(this);
|
79505
|
+
}
|
79506
|
+
|
79507
|
+
UnrecognizedURLError.prototype = oCreate(Error.prototype);
|
79508
|
+
|
79509
|
+
__exports__["default"] = UnrecognizedURLError;
|
79510
|
+
});
|
78743
79511
|
enifed("router/utils",
|
78744
79512
|
["exports"],
|
78745
79513
|
function(__exports__) {
|