ember-source 2.15.0.beta.1 → 2.15.0.beta.2

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.
@@ -6,7 +6,7 @@
6
6
  * Portions Copyright 2008-2011 Apple Inc. All rights reserved.
7
7
  * @license Licensed under MIT license
8
8
  * See https://raw.github.com/emberjs/ember.js/master/LICENSE
9
- * @version 2.15.0-beta.1
9
+ * @version 2.15.0-beta.2
10
10
  */
11
11
 
12
12
  var enifed, requireModule, Ember;
@@ -228,6 +228,7 @@ enifed('ember-debug/deprecate', ['exports', 'ember-debug/error', 'ember-console'
228
228
  @public
229
229
  @static
230
230
  @method registerDeprecationHandler
231
+ @for Ember.Debug
231
232
  @param handler {Function} A function to handle deprecation calls.
232
233
  @since 2.1.0
233
234
  */
@@ -414,13 +415,7 @@ enifed("ember-debug/error", ["exports", "ember-babel"], function (exports, _embe
414
415
  }
415
416
 
416
417
  var error = Error.call(_this, message);
417
-
418
- if (Error.captureStackTrace) {
419
- Error.captureStackTrace(_this, EmberError);
420
- } else {
421
- _this.stack = error.stack;
422
- }
423
-
418
+ _this.stack = error.stack;
424
419
  _this.description = error.description;
425
420
  _this.fileName = error.fileName;
426
421
  _this.lineNumber = error.lineNumber;
@@ -891,6 +886,7 @@ enifed('ember-debug/warn', ['exports', 'ember-console', 'ember-debug/deprecate',
891
886
  @public
892
887
  @static
893
888
  @method registerWarnHandler
889
+ @for Ember.Debug
894
890
  @param handler {Function} A function to handle warnings.
895
891
  @since 2.1.0
896
892
  */
@@ -2321,16 +2317,18 @@ enifed('ember-testing/test/promise', ['exports', 'ember-babel', 'ember-runtime',
2321
2317
  return _this;
2322
2318
  }
2323
2319
 
2324
- TestPromise.prototype.then = function then(onFulfillment) {
2320
+ TestPromise.prototype.then = function then(_onFulfillment) {
2325
2321
  var _RSVP$Promise$prototy;
2326
2322
 
2323
+ var onFulfillment = typeof _onFulfillment === 'function' ? function (result) {
2324
+ return isolate(_onFulfillment, result);
2325
+ } : undefined;
2326
+
2327
2327
  for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
2328
2328
  args[_key - 1] = arguments[_key];
2329
2329
  }
2330
2330
 
2331
- return (_RSVP$Promise$prototy = _RSVP$Promise.prototype.then).call.apply(_RSVP$Promise$prototy, [this, function (result) {
2332
- return isolate(onFulfillment, result);
2333
- }].concat(args));
2331
+ return (_RSVP$Promise$prototy = _RSVP$Promise.prototype.then).call.apply(_RSVP$Promise$prototy, [this, onFulfillment].concat(args));
2334
2332
  };
2335
2333
 
2336
2334
  return TestPromise;
data/dist/ember-tests.js CHANGED
@@ -6,7 +6,7 @@
6
6
  * Portions Copyright 2008-2011 Apple Inc. All rights reserved.
7
7
  * @license Licensed under MIT license
8
8
  * See https://raw.github.com/emberjs/ember.js/master/LICENSE
9
- * @version 2.15.0-beta.1
9
+ * @version 2.15.0-beta.2
10
10
  */
11
11
 
12
12
  var enifed, requireModule, Ember;
@@ -1875,13 +1875,13 @@ enifed('ember-application/tests/system/application_instance_test', ['ember-babel
1875
1875
  return chatEngineInstance.boot().then(function () {
1876
1876
  assert.ok(true, 'boot successful');
1877
1877
 
1878
- var registrations = ['route:basic', 'event_dispatcher:main', 'service:-routing', 'service:-glimmer-environment'];
1878
+ var registrations = ['route:basic', 'service:-routing', 'service:-glimmer-environment'];
1879
1879
 
1880
1880
  registrations.forEach(function (key) {
1881
1881
  assert.strictEqual(chatEngineInstance.resolveRegistration(key), appInstance.resolveRegistration(key), 'Engine and parent app share registrations for \'' + key + '\'');
1882
1882
  });
1883
1883
 
1884
- var singletons = ['router:main', (0, _container.privatize)(_templateObject), '-view-registry:main', '-environment:main', 'service:-document'];
1884
+ var singletons = ['router:main', (0, _container.privatize)(_templateObject), '-view-registry:main', '-environment:main', 'service:-document', 'event_dispatcher:main'];
1885
1885
 
1886
1886
  var env = appInstance.lookup('-environment:main');
1887
1887
  singletons.push(env.isInteractive ? 'renderer:-dom' : 'renderer:-inert');
@@ -32430,6 +32430,50 @@ enifed('ember-glimmer/tests/integration/mount-test', ['ember-babel', 'ember-util
32430
32430
  });
32431
32431
  };
32432
32432
 
32433
+ _class4.prototype['@test it declares the event dispatcher as a singleton'] = function testItDeclaresTheEventDispatcherAsASingleton() {
32434
+ var _this13 = this;
32435
+
32436
+ this.router.map(function () {
32437
+ this.route('engine-event-dispatcher-singleton');
32438
+ });
32439
+
32440
+ var controller = void 0;
32441
+ var component = void 0;
32442
+
32443
+ this.add('controller:engine-event-dispatcher-singleton', _emberRuntime.Controller.extend({
32444
+ init: function () {
32445
+ this._super.apply(this, arguments);
32446
+ controller = this;
32447
+ }
32448
+ }));
32449
+ this.addTemplate('engine-event-dispatcher-singleton', '{{mount "foo"}}');
32450
+
32451
+ this.add('engine:foo', _emberApplication.Engine.extend({
32452
+ router: null,
32453
+ init: function () {
32454
+ this._super.apply(this, arguments);
32455
+ this.register('template:application', (0, _helpers.compile)('<h2>Foo Engine: {{tagless-component}}</h2>', { moduleName: 'application' }));
32456
+ this.register('component:tagless-component', _helpers.Component.extend({
32457
+ tagName: "",
32458
+ init: function () {
32459
+ this._super.apply(this, arguments);
32460
+ component = this;
32461
+ }
32462
+ }));
32463
+ this.register('template:components/tagless-component', (0, _helpers.compile)('Tagless Component', { moduleName: 'components/tagless-component' }));
32464
+ }
32465
+ }));
32466
+
32467
+ return this.visit('/engine-event-dispatcher-singleton').then(function () {
32468
+ _this13.assertComponentElement(_this13.firstChild, { content: '<h2>Foo Engine: Tagless Component</h2>' });
32469
+
32470
+ var controllerOwnerEventDispatcher = (0, _emberUtils.getOwner)(controller).lookup('event_dispatcher:main');
32471
+ var taglessComponentOwnerEventDispatcher = (0, _emberUtils.getOwner)(component).lookup('event_dispatcher:main');
32472
+
32473
+ _this13.assert.strictEqual(controllerOwnerEventDispatcher, taglessComponentOwnerEventDispatcher);
32474
+ });
32475
+ };
32476
+
32433
32477
  return _class4;
32434
32478
  }(_testCase.ApplicationTest));
32435
32479
 
@@ -32440,20 +32484,20 @@ enifed('ember-glimmer/tests/integration/mount-test', ['ember-babel', 'ember-util
32440
32484
  function _class5() {
32441
32485
  (0, _emberBabel.classCallCheck)(this, _class5);
32442
32486
 
32443
- var _this13 = (0, _emberBabel.possibleConstructorReturn)(this, _ApplicationTest2.call(this));
32487
+ var _this14 = (0, _emberBabel.possibleConstructorReturn)(this, _ApplicationTest2.call(this));
32444
32488
 
32445
- _this13.add('engine:paramEngine', _emberApplication.Engine.extend({
32489
+ _this14.add('engine:paramEngine', _emberApplication.Engine.extend({
32446
32490
  router: null,
32447
32491
  init: function () {
32448
32492
  this._super.apply(this, arguments);
32449
32493
  this.register('template:application', (0, _helpers.compile)('<h2>Param Engine: {{model.foo}}</h2>', { moduleName: 'application' }));
32450
32494
  }
32451
32495
  }));
32452
- return _this13;
32496
+ return _this14;
32453
32497
  }
32454
32498
 
32455
32499
  _class5.prototype['@test it renders with static parameters'] = function testItRendersWithStaticParameters(assert) {
32456
- var _this14 = this;
32500
+ var _this15 = this;
32457
32501
 
32458
32502
  this.router.map(function () {
32459
32503
  this.route('engine-params-static');
@@ -32461,12 +32505,12 @@ enifed('ember-glimmer/tests/integration/mount-test', ['ember-babel', 'ember-util
32461
32505
  this.addTemplate('engine-params-static', '{{mount "paramEngine" model=(hash foo="bar")}}');
32462
32506
 
32463
32507
  return this.visit('/engine-params-static').then(function () {
32464
- _this14.assertComponentElement(_this14.firstChild, { content: '<h2>Param Engine: bar</h2>' });
32508
+ _this15.assertComponentElement(_this15.firstChild, { content: '<h2>Param Engine: bar</h2>' });
32465
32509
  });
32466
32510
  };
32467
32511
 
32468
32512
  _class5.prototype['@test it renders with bound parameters'] = function testItRendersWithBoundParameters(assert) {
32469
- var _this15 = this;
32513
+ var _this16 = this;
32470
32514
 
32471
32515
  this.router.map(function () {
32472
32516
  this.route('engine-params-bound');
@@ -32482,48 +32526,48 @@ enifed('ember-glimmer/tests/integration/mount-test', ['ember-babel', 'ember-util
32482
32526
  this.addTemplate('engine-params-bound', '{{mount "paramEngine" model=(hash foo=boundParamValue)}}');
32483
32527
 
32484
32528
  return this.visit('/engine-params-bound').then(function () {
32485
- _this15.assertComponentElement(_this15.firstChild, { content: '<h2>Param Engine: </h2>' });
32529
+ _this16.assertComponentElement(_this16.firstChild, { content: '<h2>Param Engine: </h2>' });
32486
32530
 
32487
- _this15.runTask(function () {
32531
+ _this16.runTask(function () {
32488
32532
  return (0, _emberMetal.set)(controller, 'boundParamValue', 'bar');
32489
32533
  });
32490
32534
 
32491
- _this15.assertComponentElement(_this15.firstChild, { content: '<h2>Param Engine: bar</h2>' });
32535
+ _this16.assertComponentElement(_this16.firstChild, { content: '<h2>Param Engine: bar</h2>' });
32492
32536
 
32493
- _this15.runTask(function () {
32537
+ _this16.runTask(function () {
32494
32538
  return (0, _emberMetal.set)(controller, 'boundParamValue', undefined);
32495
32539
  });
32496
32540
 
32497
- _this15.assertComponentElement(_this15.firstChild, { content: '<h2>Param Engine: </h2>' });
32541
+ _this16.assertComponentElement(_this16.firstChild, { content: '<h2>Param Engine: </h2>' });
32498
32542
 
32499
- _this15.runTask(function () {
32543
+ _this16.runTask(function () {
32500
32544
  return (0, _emberMetal.set)(controller, 'boundParamValue', 'bar');
32501
32545
  });
32502
32546
 
32503
- _this15.assertComponentElement(_this15.firstChild, { content: '<h2>Param Engine: bar</h2>' });
32547
+ _this16.assertComponentElement(_this16.firstChild, { content: '<h2>Param Engine: bar</h2>' });
32504
32548
 
32505
- _this15.runTask(function () {
32549
+ _this16.runTask(function () {
32506
32550
  return (0, _emberMetal.set)(controller, 'boundParamValue', 'baz');
32507
32551
  });
32508
32552
 
32509
- _this15.assertComponentElement(_this15.firstChild, { content: '<h2>Param Engine: baz</h2>' });
32553
+ _this16.assertComponentElement(_this16.firstChild, { content: '<h2>Param Engine: baz</h2>' });
32510
32554
 
32511
- _this15.runTask(function () {
32555
+ _this16.runTask(function () {
32512
32556
  return (0, _emberMetal.set)(controller, 'boundParamValue', 'bar');
32513
32557
  });
32514
32558
 
32515
- _this15.assertComponentElement(_this15.firstChild, { content: '<h2>Param Engine: bar</h2>' });
32559
+ _this16.assertComponentElement(_this16.firstChild, { content: '<h2>Param Engine: bar</h2>' });
32516
32560
 
32517
- _this15.runTask(function () {
32561
+ _this16.runTask(function () {
32518
32562
  return (0, _emberMetal.set)(controller, 'boundParamValue', null);
32519
32563
  });
32520
32564
 
32521
- _this15.assertComponentElement(_this15.firstChild, { content: '<h2>Param Engine: </h2>' });
32565
+ _this16.assertComponentElement(_this16.firstChild, { content: '<h2>Param Engine: </h2>' });
32522
32566
  });
32523
32567
  };
32524
32568
 
32525
32569
  _class5.prototype['@test it renders contextual components passed as parameter values'] = function testItRendersContextualComponentsPassedAsParameterValues(assert) {
32526
- var _this16 = this;
32570
+ var _this17 = this;
32527
32571
 
32528
32572
  this.router.map(function () {
32529
32573
  this.route('engine-params-contextual-component');
@@ -32546,7 +32590,7 @@ enifed('ember-glimmer/tests/integration/mount-test', ['ember-babel', 'ember-util
32546
32590
  this.addTemplate('engine-params-contextual-component', '{{mount "componentParamEngine" model=(hash foo=(component "foo-component"))}}');
32547
32591
 
32548
32592
  return this.visit('/engine-params-contextual-component').then(function () {
32549
- _this16.assertComponentElement(_this16.firstChild.firstChild, { content: 'foo-component rendered! - rendered app-bar-component from the app' });
32593
+ _this17.assertComponentElement(_this17.firstChild.firstChild, { content: 'foo-component rendered! - rendered app-bar-component from the app' });
32550
32594
  });
32551
32595
  };
32552
32596
 
@@ -57820,10 +57864,20 @@ enifed('ember-runtime/tests/suites/mutable_array/insertAt', ['exports', 'ember-r
57820
57864
  var after = [before[0], item, before[1], before[2]];
57821
57865
  var obj = this.newObject(before);
57822
57866
  var observer = this.newObserver(obj, '[]', '@each', 'length', 'firstObject', 'lastObject');
57867
+ var objectAtCalls = [];
57868
+
57869
+ var objectAt = obj.objectAt;
57870
+ obj.objectAt = function (ix) {
57871
+ objectAtCalls.push(ix);
57872
+ return objectAt.call(obj, ix);
57873
+ };
57823
57874
 
57824
57875
  obj.getProperties('firstObject', 'lastObject'); /* Prime the cache */
57825
57876
 
57877
+ objectAtCalls.splice(0, objectAtCalls.length);
57878
+
57826
57879
  obj.insertAt(1, item);
57880
+ deepEqual(objectAtCalls, [], 'objectAt is not called when only inserting items');
57827
57881
 
57828
57882
  deepEqual(this.toArray(obj), after, 'post item results');
57829
57883
  equal((0, _emberMetal.get)(obj, 'length'), after.length, 'length');
@@ -58009,6 +58063,28 @@ enifed('ember-runtime/tests/suites/mutable_array/pushObject', ['exports', 'ember
58009
58063
  equal(observer.validate('firstObject'), false, 'should NOT have notified firstObject');
58010
58064
  });
58011
58065
 
58066
+ suite.test('[A,B,C,C].pushObject(A) => [A,B,C,C] + notify', function () {
58067
+ var before = this.newFixture(3);
58068
+ var item = before[2]; // note same object as current tail. should end up twice
58069
+ var after = [before[0], before[1], before[2], item];
58070
+ var obj = this.newObject(before);
58071
+ var observer = this.newObserver(obj, '[]', '@each', 'length', 'firstObject', 'lastObject');
58072
+
58073
+ obj.getProperties('firstObject', 'lastObject'); /* Prime the cache */
58074
+
58075
+ obj.pushObject(item);
58076
+
58077
+ deepEqual(this.toArray(obj), after, 'post item results');
58078
+ equal((0, _emberMetal.get)(obj, 'length'), after.length, 'length');
58079
+
58080
+ equal(observer.timesCalled('[]'), 1, 'should have notified [] once');
58081
+ equal(observer.timesCalled('@each'), 0, 'should not have notified @each once');
58082
+ equal(observer.timesCalled('length'), 1, 'should have notified length once');
58083
+
58084
+ equal(observer.validate('firstObject'), false, 'should NOT have notified firstObject');
58085
+ equal(observer.validate('lastObject'), true, 'should have notified lastObject');
58086
+ });
58087
+
58012
58088
  exports.default = suite;
58013
58089
  });
58014
58090
  QUnit.module('ESLint | ember-runtime/tests/suites/mutable_array/pushObject.js');
@@ -58386,6 +58462,27 @@ enifed('ember-runtime/tests/suites/mutable_array/replace', ['exports', 'ember-ru
58386
58462
  equal(observer.validate('firstObject'), false, 'should NOT have notified firstObject once');
58387
58463
  });
58388
58464
 
58465
+ suite.test('[A,B,C,D].replace(-1,1) => [A,B,C] + notify', function () {
58466
+ var before = this.newFixture(4);
58467
+ var after = [before[0], before[1], before[2]];
58468
+
58469
+ var obj = this.newObject(before);
58470
+ var observer = this.newObserver(obj, '[]', '@each', 'length', 'firstObject', 'lastObject');
58471
+
58472
+ obj.getProperties('firstObject', 'lastObject'); /* Prime the cache */
58473
+
58474
+ obj.replace(-1, 1);
58475
+
58476
+ deepEqual(this.toArray(obj), after, 'post item results');
58477
+
58478
+ equal(observer.timesCalled('[]'), 1, 'should have notified [] once');
58479
+ equal(observer.timesCalled('@each'), 0, 'should not have notified @each once');
58480
+ equal(observer.timesCalled('length'), 1, 'should have notified length once');
58481
+ equal(observer.timesCalled('lastObject'), 1, 'should have notified lastObject once');
58482
+
58483
+ equal(observer.validate('firstObject'), false, 'should NOT have notified firstObject once');
58484
+ });
58485
+
58389
58486
  suite.test('Adding object should notify enumerable observer', function () {
58390
58487
  var fixtures = this.newFixture(4);
58391
58488
  var obj = this.newObject(fixtures);
@@ -58660,7 +58757,7 @@ enifed('ember-runtime/tests/suites/mutable_array/unshiftObject', ['exports', 'em
58660
58757
  equal(observer.timesCalled('@each'), 0, 'should not have notified @each once');
58661
58758
  equal(observer.timesCalled('length'), 1, 'should have notified length once');
58662
58759
 
58663
- equal(observer.validate('firstObject'), false, 'should NOT have notified firstObject');
58760
+ equal(observer.validate('firstObject'), true, 'should have notified firstObject');
58664
58761
  equal(observer.validate('lastObject'), false, 'should NOT have notified lastObject');
58665
58762
  });
58666
58763
 
@@ -6,7 +6,7 @@
6
6
  * Portions Copyright 2008-2011 Apple Inc. All rights reserved.
7
7
  * @license Licensed under MIT license
8
8
  * See https://raw.github.com/emberjs/ember.js/master/LICENSE
9
- * @version 2.15.0-beta.1
9
+ * @version 2.15.0-beta.2
10
10
  */
11
11
 
12
12
  var enifed, requireModule, Ember;
@@ -1632,11 +1632,11 @@ enifed('ember-application/tests/system/application_instance_test', ['ember-babel
1632
1632
  return chatEngineInstance.boot().then(function () {
1633
1633
  assert.ok(true, 'boot successful');
1634
1634
 
1635
- ['route:basic', 'event_dispatcher:main', 'service:-routing', 'service:-glimmer-environment'].forEach(function (key) {
1635
+ ['route:basic', 'service:-routing', 'service:-glimmer-environment'].forEach(function (key) {
1636
1636
  assert.strictEqual(chatEngineInstance.resolveRegistration(key), appInstance.resolveRegistration(key), 'Engine and parent app share registrations for \'' + key + '\'');
1637
1637
  });
1638
1638
 
1639
- var singletons = ['router:main', (0, _container.privatize)(_templateObject), '-view-registry:main', '-environment:main', 'service:-document'];
1639
+ var singletons = ['router:main', (0, _container.privatize)(_templateObject), '-view-registry:main', '-environment:main', 'service:-document', 'event_dispatcher:main'];
1640
1640
 
1641
1641
  var env = appInstance.lookup('-environment:main');
1642
1642
  singletons.push(env.isInteractive ? 'renderer:-dom' : 'renderer:-inert');
@@ -30613,6 +30613,50 @@ enifed('ember-glimmer/tests/integration/mount-test', ['ember-babel', 'ember-util
30613
30613
  });
30614
30614
  };
30615
30615
 
30616
+ _class4.prototype['@test it declares the event dispatcher as a singleton'] = function () {
30617
+ var _this13 = this;
30618
+
30619
+ this.router.map(function () {
30620
+ this.route('engine-event-dispatcher-singleton');
30621
+ });
30622
+
30623
+ var controller = void 0;
30624
+ var component = void 0;
30625
+
30626
+ this.add('controller:engine-event-dispatcher-singleton', _emberRuntime.Controller.extend({
30627
+ init: function () {
30628
+ this._super.apply(this, arguments);
30629
+ controller = this;
30630
+ }
30631
+ }));
30632
+ this.addTemplate('engine-event-dispatcher-singleton', '{{mount "foo"}}');
30633
+
30634
+ this.add('engine:foo', _emberApplication.Engine.extend({
30635
+ router: null,
30636
+ init: function () {
30637
+ this._super.apply(this, arguments);
30638
+ this.register('template:application', (0, _helpers.compile)('<h2>Foo Engine: {{tagless-component}}</h2>', { moduleName: 'application' }));
30639
+ this.register('component:tagless-component', _helpers.Component.extend({
30640
+ tagName: "",
30641
+ init: function () {
30642
+ this._super.apply(this, arguments);
30643
+ component = this;
30644
+ }
30645
+ }));
30646
+ this.register('template:components/tagless-component', (0, _helpers.compile)('Tagless Component', { moduleName: 'components/tagless-component' }));
30647
+ }
30648
+ }));
30649
+
30650
+ return this.visit('/engine-event-dispatcher-singleton').then(function () {
30651
+ _this13.assertComponentElement(_this13.firstChild, { content: '<h2>Foo Engine: Tagless Component</h2>' });
30652
+
30653
+ var controllerOwnerEventDispatcher = (0, _emberUtils.getOwner)(controller).lookup('event_dispatcher:main');
30654
+ var taglessComponentOwnerEventDispatcher = (0, _emberUtils.getOwner)(component).lookup('event_dispatcher:main');
30655
+
30656
+ _this13.assert.strictEqual(controllerOwnerEventDispatcher, taglessComponentOwnerEventDispatcher);
30657
+ });
30658
+ };
30659
+
30616
30660
  return _class4;
30617
30661
  }(_testCase.ApplicationTest));
30618
30662
 
@@ -30621,20 +30665,20 @@ enifed('ember-glimmer/tests/integration/mount-test', ['ember-babel', 'ember-util
30621
30665
 
30622
30666
  function _class5() {
30623
30667
 
30624
- var _this13 = (0, _emberBabel.possibleConstructorReturn)(this, _ApplicationTest2.call(this));
30668
+ var _this14 = (0, _emberBabel.possibleConstructorReturn)(this, _ApplicationTest2.call(this));
30625
30669
 
30626
- _this13.add('engine:paramEngine', _emberApplication.Engine.extend({
30670
+ _this14.add('engine:paramEngine', _emberApplication.Engine.extend({
30627
30671
  router: null,
30628
30672
  init: function () {
30629
30673
  this._super.apply(this, arguments);
30630
30674
  this.register('template:application', (0, _helpers.compile)('<h2>Param Engine: {{model.foo}}</h2>', { moduleName: 'application' }));
30631
30675
  }
30632
30676
  }));
30633
- return _this13;
30677
+ return _this14;
30634
30678
  }
30635
30679
 
30636
30680
  _class5.prototype['@test it renders with static parameters'] = function () {
30637
- var _this14 = this;
30681
+ var _this15 = this;
30638
30682
 
30639
30683
  this.router.map(function () {
30640
30684
  this.route('engine-params-static');
@@ -30642,12 +30686,12 @@ enifed('ember-glimmer/tests/integration/mount-test', ['ember-babel', 'ember-util
30642
30686
  this.addTemplate('engine-params-static', '{{mount "paramEngine" model=(hash foo="bar")}}');
30643
30687
 
30644
30688
  return this.visit('/engine-params-static').then(function () {
30645
- _this14.assertComponentElement(_this14.firstChild, { content: '<h2>Param Engine: bar</h2>' });
30689
+ _this15.assertComponentElement(_this15.firstChild, { content: '<h2>Param Engine: bar</h2>' });
30646
30690
  });
30647
30691
  };
30648
30692
 
30649
30693
  _class5.prototype['@test it renders with bound parameters'] = function () {
30650
- var _this15 = this;
30694
+ var _this16 = this;
30651
30695
 
30652
30696
  this.router.map(function () {
30653
30697
  this.route('engine-params-bound');
@@ -30663,48 +30707,48 @@ enifed('ember-glimmer/tests/integration/mount-test', ['ember-babel', 'ember-util
30663
30707
  this.addTemplate('engine-params-bound', '{{mount "paramEngine" model=(hash foo=boundParamValue)}}');
30664
30708
 
30665
30709
  return this.visit('/engine-params-bound').then(function () {
30666
- _this15.assertComponentElement(_this15.firstChild, { content: '<h2>Param Engine: </h2>' });
30710
+ _this16.assertComponentElement(_this16.firstChild, { content: '<h2>Param Engine: </h2>' });
30667
30711
 
30668
- _this15.runTask(function () {
30712
+ _this16.runTask(function () {
30669
30713
  return (0, _emberMetal.set)(controller, 'boundParamValue', 'bar');
30670
30714
  });
30671
30715
 
30672
- _this15.assertComponentElement(_this15.firstChild, { content: '<h2>Param Engine: bar</h2>' });
30716
+ _this16.assertComponentElement(_this16.firstChild, { content: '<h2>Param Engine: bar</h2>' });
30673
30717
 
30674
- _this15.runTask(function () {
30718
+ _this16.runTask(function () {
30675
30719
  return (0, _emberMetal.set)(controller, 'boundParamValue', undefined);
30676
30720
  });
30677
30721
 
30678
- _this15.assertComponentElement(_this15.firstChild, { content: '<h2>Param Engine: </h2>' });
30722
+ _this16.assertComponentElement(_this16.firstChild, { content: '<h2>Param Engine: </h2>' });
30679
30723
 
30680
- _this15.runTask(function () {
30724
+ _this16.runTask(function () {
30681
30725
  return (0, _emberMetal.set)(controller, 'boundParamValue', 'bar');
30682
30726
  });
30683
30727
 
30684
- _this15.assertComponentElement(_this15.firstChild, { content: '<h2>Param Engine: bar</h2>' });
30728
+ _this16.assertComponentElement(_this16.firstChild, { content: '<h2>Param Engine: bar</h2>' });
30685
30729
 
30686
- _this15.runTask(function () {
30730
+ _this16.runTask(function () {
30687
30731
  return (0, _emberMetal.set)(controller, 'boundParamValue', 'baz');
30688
30732
  });
30689
30733
 
30690
- _this15.assertComponentElement(_this15.firstChild, { content: '<h2>Param Engine: baz</h2>' });
30734
+ _this16.assertComponentElement(_this16.firstChild, { content: '<h2>Param Engine: baz</h2>' });
30691
30735
 
30692
- _this15.runTask(function () {
30736
+ _this16.runTask(function () {
30693
30737
  return (0, _emberMetal.set)(controller, 'boundParamValue', 'bar');
30694
30738
  });
30695
30739
 
30696
- _this15.assertComponentElement(_this15.firstChild, { content: '<h2>Param Engine: bar</h2>' });
30740
+ _this16.assertComponentElement(_this16.firstChild, { content: '<h2>Param Engine: bar</h2>' });
30697
30741
 
30698
- _this15.runTask(function () {
30742
+ _this16.runTask(function () {
30699
30743
  return (0, _emberMetal.set)(controller, 'boundParamValue', null);
30700
30744
  });
30701
30745
 
30702
- _this15.assertComponentElement(_this15.firstChild, { content: '<h2>Param Engine: </h2>' });
30746
+ _this16.assertComponentElement(_this16.firstChild, { content: '<h2>Param Engine: </h2>' });
30703
30747
  });
30704
30748
  };
30705
30749
 
30706
30750
  _class5.prototype['@test it renders contextual components passed as parameter values'] = function () {
30707
- var _this16 = this;
30751
+ var _this17 = this;
30708
30752
 
30709
30753
  this.router.map(function () {
30710
30754
  this.route('engine-params-contextual-component');
@@ -30727,7 +30771,7 @@ enifed('ember-glimmer/tests/integration/mount-test', ['ember-babel', 'ember-util
30727
30771
  this.addTemplate('engine-params-contextual-component', '{{mount "componentParamEngine" model=(hash foo=(component "foo-component"))}}');
30728
30772
 
30729
30773
  return this.visit('/engine-params-contextual-component').then(function () {
30730
- _this16.assertComponentElement(_this16.firstChild.firstChild, { content: 'foo-component rendered! - rendered app-bar-component from the app' });
30774
+ _this17.assertComponentElement(_this17.firstChild.firstChild, { content: 'foo-component rendered! - rendered app-bar-component from the app' });
30731
30775
  });
30732
30776
  };
30733
30777
 
@@ -54010,10 +54054,20 @@ enifed('ember-runtime/tests/suites/mutable_array/insertAt', ['exports', 'ember-r
54010
54054
  var after = [before[0], item, before[1], before[2]];
54011
54055
  var obj = this.newObject(before);
54012
54056
  var observer = this.newObserver(obj, '[]', '@each', 'length', 'firstObject', 'lastObject');
54057
+ var objectAtCalls = [];
54058
+
54059
+ var objectAt = obj.objectAt;
54060
+ obj.objectAt = function (ix) {
54061
+ objectAtCalls.push(ix);
54062
+ return objectAt.call(obj, ix);
54063
+ };
54013
54064
 
54014
54065
  obj.getProperties('firstObject', 'lastObject'); /* Prime the cache */
54015
54066
 
54067
+ objectAtCalls.splice(0, objectAtCalls.length);
54068
+
54016
54069
  obj.insertAt(1, item);
54070
+ deepEqual(objectAtCalls, [], 'objectAt is not called when only inserting items');
54017
54071
 
54018
54072
  deepEqual(this.toArray(obj), after, 'post item results');
54019
54073
  equal((0, _emberMetal.get)(obj, 'length'), after.length, 'length');
@@ -54186,6 +54240,28 @@ enifed('ember-runtime/tests/suites/mutable_array/pushObject', ['exports', 'ember
54186
54240
  equal(observer.validate('firstObject'), false, 'should NOT have notified firstObject');
54187
54241
  });
54188
54242
 
54243
+ suite.test('[A,B,C,C].pushObject(A) => [A,B,C,C] + notify', function () {
54244
+ var before = this.newFixture(3);
54245
+ var item = before[2]; // note same object as current tail. should end up twice
54246
+ var after = [before[0], before[1], before[2], item];
54247
+ var obj = this.newObject(before);
54248
+ var observer = this.newObserver(obj, '[]', '@each', 'length', 'firstObject', 'lastObject');
54249
+
54250
+ obj.getProperties('firstObject', 'lastObject'); /* Prime the cache */
54251
+
54252
+ obj.pushObject(item);
54253
+
54254
+ deepEqual(this.toArray(obj), after, 'post item results');
54255
+ equal((0, _emberMetal.get)(obj, 'length'), after.length, 'length');
54256
+
54257
+ equal(observer.timesCalled('[]'), 1, 'should have notified [] once');
54258
+ equal(observer.timesCalled('@each'), 0, 'should not have notified @each once');
54259
+ equal(observer.timesCalled('length'), 1, 'should have notified length once');
54260
+
54261
+ equal(observer.validate('firstObject'), false, 'should NOT have notified firstObject');
54262
+ equal(observer.validate('lastObject'), true, 'should have notified lastObject');
54263
+ });
54264
+
54189
54265
  exports.default = suite;
54190
54266
  });
54191
54267
  enifed('ember-runtime/tests/suites/mutable_array/pushObjects', ['exports', 'ember-runtime/tests/suites/suite'], function (exports, _suite) {
@@ -54539,6 +54615,27 @@ enifed('ember-runtime/tests/suites/mutable_array/replace', ['exports', 'ember-ru
54539
54615
  equal(observer.validate('firstObject'), false, 'should NOT have notified firstObject once');
54540
54616
  });
54541
54617
 
54618
+ suite.test('[A,B,C,D].replace(-1,1) => [A,B,C] + notify', function () {
54619
+ var before = this.newFixture(4);
54620
+ var after = [before[0], before[1], before[2]];
54621
+
54622
+ var obj = this.newObject(before);
54623
+ var observer = this.newObserver(obj, '[]', '@each', 'length', 'firstObject', 'lastObject');
54624
+
54625
+ obj.getProperties('firstObject', 'lastObject'); /* Prime the cache */
54626
+
54627
+ obj.replace(-1, 1);
54628
+
54629
+ deepEqual(this.toArray(obj), after, 'post item results');
54630
+
54631
+ equal(observer.timesCalled('[]'), 1, 'should have notified [] once');
54632
+ equal(observer.timesCalled('@each'), 0, 'should not have notified @each once');
54633
+ equal(observer.timesCalled('length'), 1, 'should have notified length once');
54634
+ equal(observer.timesCalled('lastObject'), 1, 'should have notified lastObject once');
54635
+
54636
+ equal(observer.validate('firstObject'), false, 'should NOT have notified firstObject once');
54637
+ });
54638
+
54542
54639
  suite.test('Adding object should notify enumerable observer', function () {
54543
54640
  var fixtures = this.newFixture(4);
54544
54641
  var obj = this.newObject(fixtures);
@@ -54787,7 +54884,7 @@ enifed('ember-runtime/tests/suites/mutable_array/unshiftObject', ['exports', 'em
54787
54884
  equal(observer.timesCalled('@each'), 0, 'should not have notified @each once');
54788
54885
  equal(observer.timesCalled('length'), 1, 'should have notified length once');
54789
54886
 
54790
- equal(observer.validate('firstObject'), false, 'should NOT have notified firstObject');
54887
+ equal(observer.validate('firstObject'), true, 'should have notified firstObject');
54791
54888
  equal(observer.validate('lastObject'), false, 'should NOT have notified lastObject');
54792
54889
  });
54793
54890