ember-source 1.11.0.beta.5 → 1.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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__) {
|