ember-source 2.13.0.beta.2 → 2.13.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.
@@ -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.13.0-beta.2
9
+ * @version 2.13.0
10
10
  */
11
11
 
12
12
  var enifed, requireModule, Ember;
@@ -7246,22 +7246,16 @@ enifed('ember-metal/chains', ['exports', 'ember-metal/property_get', 'ember-meta
7246
7246
  }
7247
7247
  }
7248
7248
 
7249
- function finishChains(obj) {
7250
- // We only create meta if we really have to
7251
- var m = _emberMetalMeta.peekMeta(obj);
7252
- if (m !== undefined) {
7253
- m = _emberMetalMeta.meta(obj);
7254
-
7255
- // finish any current chains node watchers that reference obj
7256
- var chainWatchers = m.readableChainWatchers();
7257
- if (chainWatchers !== undefined) {
7258
- chainWatchers.revalidateAll();
7259
- }
7260
- // ensure that if we have inherited any chains they have been
7261
- // copied onto our own meta.
7262
- if (m.readableChains() !== undefined) {
7263
- m.writableChains(_emberMetalWatch_path.makeChainNode);
7264
- }
7249
+ function finishChains(meta) {
7250
+ // finish any current chains node watchers that reference obj
7251
+ var chainWatchers = meta.readableChainWatchers();
7252
+ if (chainWatchers !== undefined) {
7253
+ chainWatchers.revalidateAll();
7254
+ }
7255
+ // ensure that if we have inherited any chains they have been
7256
+ // copied onto our own meta.
7257
+ if (meta.readableChains() !== undefined) {
7258
+ meta.writableChains(_emberMetalWatch_path.makeChainNode);
7265
7259
  }
7266
7260
  }
7267
7261
 
@@ -8029,7 +8023,7 @@ enifed('ember-metal/error_handler', ['exports', 'ember-console', 'ember-debug'],
8029
8023
  var stack = error.stack;
8030
8024
  var message = error.message;
8031
8025
 
8032
- if (stack && !stack.includes(message)) {
8026
+ if (stack && stack.indexOf(message) === -1) {
8033
8027
  stack = message + '\n' + stack;
8034
8028
  }
8035
8029
 
@@ -8622,6 +8616,7 @@ enifed('ember-metal/index', ['exports', 'ember-metal/core', 'ember-metal/compute
8622
8616
  exports.PROPERTY_DID_CHANGE = _emberMetalProperty_events.PROPERTY_DID_CHANGE;
8623
8617
  exports.defineProperty = _emberMetalProperties.defineProperty;
8624
8618
  exports.Descriptor = _emberMetalProperties.Descriptor;
8619
+ exports._hasCachedComputedProperties = _emberMetalProperties._hasCachedComputedProperties;
8625
8620
  exports.watchKey = _emberMetalWatch_key.watchKey;
8626
8621
  exports.unwatchKey = _emberMetalWatch_key.unwatchKey;
8627
8622
  exports.ChainNode = _emberMetalChains.ChainNode;
@@ -9882,6 +9877,7 @@ enifed('ember-metal/meta', ['exports', 'ember-utils', 'ember-metal/meta_listener
9882
9877
  this._chains = undefined;
9883
9878
  this._tag = undefined;
9884
9879
  this._tags = undefined;
9880
+ this._factory = undefined;
9885
9881
 
9886
9882
  // initial value for all flags right now is false
9887
9883
  // see FLAGS const for detailed list of flags used
@@ -10130,6 +10126,15 @@ enifed('ember-metal/meta', ['exports', 'ember-utils', 'ember-metal/meta_listener
10130
10126
  }
10131
10127
  };
10132
10128
 
10129
+ babelHelpers.createClass(Meta, [{
10130
+ key: 'factory',
10131
+ set: function (factory) {
10132
+ this._factory = factory;
10133
+ },
10134
+ get: function () {
10135
+ return this._factory;
10136
+ }
10137
+ }]);
10133
10138
  return Meta;
10134
10139
  })();
10135
10140
 
@@ -11797,6 +11802,7 @@ enifed('ember-metal/properties', ['exports', 'ember-debug', 'ember-metal/meta',
11797
11802
  exports.DEFAULT_GETTER_FUNCTION = DEFAULT_GETTER_FUNCTION;
11798
11803
  exports.INHERITING_GETTER_FUNCTION = INHERITING_GETTER_FUNCTION;
11799
11804
  exports.defineProperty = defineProperty;
11805
+ exports._hasCachedComputedProperties = _hasCachedComputedProperties;
11800
11806
 
11801
11807
  // ..........................................................
11802
11808
  // DESCRIPTOR
@@ -11919,24 +11925,20 @@ enifed('ember-metal/properties', ['exports', 'ember-debug', 'ember-metal/meta',
11919
11925
  */
11920
11926
 
11921
11927
  function defineProperty(obj, keyName, desc, data, meta) {
11922
- var possibleDesc = undefined,
11923
- existingDesc = undefined,
11924
- watching = undefined,
11925
- value = undefined;
11926
-
11927
11928
  if (!meta) {
11928
11929
  meta = _emberMetalMeta.meta(obj);
11929
11930
  }
11930
11931
  var watchEntry = meta.peekWatching(keyName);
11931
- possibleDesc = obj[keyName];
11932
- existingDesc = possibleDesc !== null && typeof possibleDesc === 'object' && possibleDesc.isDescriptor ? possibleDesc : undefined;
11932
+ var possibleDesc = obj[keyName];
11933
+ var existingDesc = possibleDesc !== null && typeof possibleDesc === 'object' && possibleDesc.isDescriptor ? possibleDesc : undefined;
11933
11934
 
11934
- watching = watchEntry !== undefined && watchEntry > 0;
11935
+ var watching = watchEntry !== undefined && watchEntry > 0;
11935
11936
 
11936
11937
  if (existingDesc) {
11937
11938
  existingDesc.teardown(obj, keyName);
11938
11939
  }
11939
11940
 
11941
+ var value = undefined;
11940
11942
  if (desc instanceof Descriptor) {
11941
11943
  value = desc;
11942
11944
  if (true) {
@@ -11953,7 +11955,10 @@ enifed('ember-metal/properties', ['exports', 'ember-debug', 'ember-metal/meta',
11953
11955
  } else {
11954
11956
  obj[keyName] = value;
11955
11957
  }
11956
- if (desc.setup) {
11958
+
11959
+ didDefineComputedProperty(obj.constructor);
11960
+
11961
+ if (typeof desc.setup === 'function') {
11957
11962
  desc.setup(obj, keyName);
11958
11963
  }
11959
11964
  } else {
@@ -11998,13 +12003,30 @@ enifed('ember-metal/properties', ['exports', 'ember-debug', 'ember-metal/meta',
11998
12003
 
11999
12004
  // The `value` passed to the `didDefineProperty` hook is
12000
12005
  // either the descriptor or data, whichever was passed.
12001
- if (obj.didDefineProperty) {
12006
+ if (typeof obj.didDefineProperty === 'function') {
12002
12007
  obj.didDefineProperty(obj, keyName, value);
12003
12008
  }
12004
12009
 
12005
12010
  return this;
12006
12011
  }
12007
12012
 
12013
+ var hasCachedComputedProperties = false;
12014
+
12015
+ function _hasCachedComputedProperties() {
12016
+ hasCachedComputedProperties = true;
12017
+ }
12018
+
12019
+ function didDefineComputedProperty(constructor) {
12020
+ if (hasCachedComputedProperties === false) {
12021
+ return;
12022
+ }
12023
+ var cache = _emberMetalMeta.meta(constructor).readableCache();
12024
+
12025
+ if (cache && cache._computedProperties !== undefined) {
12026
+ cache._computedProperties = undefined;
12027
+ }
12028
+ }
12029
+
12008
12030
  function handleBrokenPhantomDefineProperty(obj, keyName, desc) {
12009
12031
  // https://github.com/ariya/phantomjs/issues/11856
12010
12032
  Object.defineProperty(obj, keyName, { configurable: true, writable: true, value: 'iCry' });
@@ -16113,13 +16135,40 @@ enifed('ember-utils/to-string', ['exports'], function (exports) {
16113
16135
  exports.default = toString;
16114
16136
  var objectToString = Object.prototype.toString;
16115
16137
 
16138
+ function isNone(obj) {
16139
+ return obj === null || obj === undefined;
16140
+ }
16141
+
16116
16142
  /*
16117
16143
  A `toString` util function that supports objects without a `toString`
16118
16144
  method, e.g. an object created with `Object.create(null)`.
16119
16145
  */
16120
16146
 
16121
16147
  function toString(obj) {
16122
- if (obj && typeof obj.toString === 'function') {
16148
+ var type = typeof obj;
16149
+ if (type === "string") {
16150
+ return obj;
16151
+ }
16152
+
16153
+ if (Array.isArray(obj)) {
16154
+ // Reimplement Array.prototype.join according to spec (22.1.3.13)
16155
+ // Changing ToString(element) with this safe version of ToString.
16156
+ var len = obj.length;
16157
+ var sep = ',';
16158
+ var r = '';
16159
+
16160
+ for (var k = 0; k < len; k++) {
16161
+ if (k > 0) {
16162
+ r += ',';
16163
+ }
16164
+
16165
+ if (!isNone(obj[k])) {
16166
+ r += toString(obj[k]);
16167
+ }
16168
+ }
16169
+
16170
+ return r;
16171
+ } else if (obj != null && typeof obj.toString === 'function') {
16123
16172
  return obj.toString();
16124
16173
  } else {
16125
16174
  return objectToString.call(obj);
@@ -16151,7 +16200,7 @@ enifed("ember/features", ["exports"], function (exports) {
16151
16200
  enifed("ember/version", ["exports"], function (exports) {
16152
16201
  "use strict";
16153
16202
 
16154
- exports.default = "2.13.0-beta.2";
16203
+ exports.default = "2.13.0";
16155
16204
  });
16156
16205
  enifed("handlebars", ["exports"], function (exports) {
16157
16206
  /* istanbul ignore next */
@@ -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.13.0-beta.2
9
+ * @version 2.13.0
10
10
  */
11
11
 
12
12
  var enifed, requireModule, Ember;
@@ -1841,6 +1841,9 @@ enifed('ember-testing/test/waiters', ['exports', 'ember-debug'], function (expor
1841
1841
  return array;
1842
1842
  }
1843
1843
  });
1844
- requireModule("ember-testing");
1845
-
1844
+ var testing = requireModule('ember-testing');
1845
+ Ember.Test = testing.Test;
1846
+ Ember.Test.Adapter = testing.Adapter;
1847
+ Ember.Test.QUnitAdapter = testing.QUnitAdapter;
1848
+ Ember.setupForTesting = testing.setupForTesting;
1846
1849
  }());
@@ -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.13.0-beta.2
9
+ * @version 2.13.0
10
10
  */
11
11
 
12
12
  var enifed, requireModule, Ember;
@@ -279,7 +279,7 @@ enifed('container/tests/container_test', ['exports', 'ember-utils', 'ember-envir
279
279
  equal(PostFactory._debugContainerKey, 'controller:post', 'factory instance receives _debugContainerKey');
280
280
  });
281
281
 
282
- QUnit.test('fallback for to create time injections if factory has no extend', function () {
282
+ QUnit.test('uses create time injections if factory has no extend', function () {
283
283
  var registry = new _containerIndex.Registry();
284
284
  var container = registry.container();
285
285
  var AppleController = _internalTestHelpers.factory();
@@ -293,7 +293,6 @@ enifed('container/tests/container_test', ['exports', 'ember-utils', 'ember-envir
293
293
 
294
294
  var postController = container.lookup('controller:post');
295
295
 
296
- equal(postController._debugContainerKey, 'controller:post', 'instance receives _debugContainerKey');
297
296
  ok(postController.apple instanceof AppleController, 'instance receives an apple of instance AppleController');
298
297
  });
299
298
 
@@ -365,9 +364,6 @@ enifed('container/tests/container_test', ['exports', 'ember-utils', 'ember-envir
365
364
  var postController = container.lookup('controller:post');
366
365
  var store = container.lookup('store:main');
367
366
 
368
- equal(store._debugContainerKey, 'store:main');
369
-
370
- equal(postController._debugContainerKey, 'controller:post');
371
367
  equal(postController.store, store, 'has the correct store injected');
372
368
  });
373
369
 
@@ -766,8 +762,9 @@ enifed('container/tests/container_test', ['exports', 'ember-utils', 'ember-envir
766
762
  });
767
763
 
768
764
  QUnit.test('A deprecated `container` property is appended to every object instantiated from an extendable factory', function () {
765
+ var owner = {};
769
766
  var registry = new _containerIndex.Registry();
770
- var container = registry.container();
767
+ var container = owner.__container__ = registry.container({ owner: owner });
771
768
  var PostController = _internalTestHelpers.factory();
772
769
  registry.register('controller:post', PostController);
773
770
  var postController = container.lookup('controller:post');
@@ -1010,11 +1007,78 @@ enifed('container/tests/container_test', ['exports', 'ember-utils', 'ember-envir
1010
1007
  registry.injection('component:foo-bar', 'ajax', 'util:ajax');
1011
1008
 
1012
1009
  var componentFactory = container.factoryFor('component:foo-bar');
1013
-
1014
1010
  var instrance = componentFactory.create({ ajax: 'fetch' });
1015
1011
 
1016
1012
  assert.equal(instrance.ajax, 'fetch');
1017
1013
  });
1014
+
1015
+ QUnit.test('#factoryFor does not add properties to the object being instantiated when _initFactory is present', function (assert) {
1016
+ var owner = {};
1017
+ var registry = new _containerIndex.Registry();
1018
+ var container = registry.container();
1019
+
1020
+ var factory = undefined;
1021
+
1022
+ var Component = (function () {
1023
+ function Component() {
1024
+ babelHelpers.classCallCheck(this, Component);
1025
+ }
1026
+
1027
+ Component._initFactory = function _initFactory(_factory) {
1028
+ factory = _factory;
1029
+ };
1030
+
1031
+ Component.create = function create(options) {
1032
+ var instance = new this();
1033
+ _emberUtils.assign(instance, options);
1034
+ return instance;
1035
+ };
1036
+
1037
+ return Component;
1038
+ })();
1039
+
1040
+ registry.register('component:foo-bar', Component);
1041
+
1042
+ var componentFactory = container.factoryFor('component:foo-bar');
1043
+ var instance = componentFactory.create();
1044
+
1045
+ // note: _guid and isDestroyed are being set in the `factory` constructor
1046
+ // not via registry/container shenanigans
1047
+ assert.deepEqual(Object.keys(instance), []);
1048
+ });
1049
+
1050
+ // this is skipped until templates and the glimmer environment do not require `OWNER` to be
1051
+ // passed in as constructor args
1052
+ QUnit.skip('#factoryFor does not add properties to the object being instantiated', function (assert) {
1053
+ var owner = {};
1054
+ var registry = new _containerIndex.Registry();
1055
+ var container = registry.container();
1056
+
1057
+ var factory = undefined;
1058
+
1059
+ var Component = (function () {
1060
+ function Component() {
1061
+ babelHelpers.classCallCheck(this, Component);
1062
+ }
1063
+
1064
+ Component.create = function create(options) {
1065
+ var instance = new this();
1066
+ _emberUtils.assign(instance, options);
1067
+ return instance;
1068
+ };
1069
+
1070
+ return Component;
1071
+ })();
1072
+
1073
+ registry.register('component:foo-bar', Component);
1074
+
1075
+ var componentFactory = container.factoryFor('component:foo-bar');
1076
+ var instance = componentFactory.create();
1077
+
1078
+ // note: _guid and isDestroyed are being set in the `factory` constructor
1079
+ // not via registry/container shenanigans
1080
+ assert.deepEqual(Object.keys(instance), []);
1081
+ });
1018
1082
  }
1019
1083
  });
1020
1084
  enifed('container/tests/container_test.lint-test', ['exports'], function (exports) {
@@ -39627,8 +39691,13 @@ enifed('ember-metal/tests/chains_test', ['exports', 'ember-metal/observer', 'emb
39627
39691
  _emberMetalObserver.addObserver(obj, 'foo.bar', null, didChange);
39628
39692
 
39629
39693
  var childObj = Object.create(obj);
39630
- _emberMetalChains.finishChains(childObj);
39631
- ok(_emberMetalMeta.peekMeta(obj) !== _emberMetalMeta.peekMeta(childObj).readableChains(), 'The chains object is copied');
39694
+
39695
+ var parentMeta = _emberMetalMeta.meta(obj);
39696
+ var childMeta = _emberMetalMeta.meta(childObj);
39697
+
39698
+ _emberMetalChains.finishChains(childMeta);
39699
+
39700
+ ok(parentMeta.readableChains() !== childMeta.readableChains(), 'The chains object is copied');
39632
39701
  });
39633
39702
 
39634
39703
  QUnit.test('does not observe primative values', function (assert) {
@@ -67782,6 +67851,13 @@ enifed('ember-utils/tests/to-string-test', ['exports', 'ember-utils/index'], fun
67782
67851
 
67783
67852
  strictEqual(_emberUtilsIndex.toString(obj), ({}).toString());
67784
67853
  });
67854
+
67855
+ QUnit.test('toString does not fail when called on Arrays with objects without toString method', function () {
67856
+ var obj = Object.create(null);
67857
+ var arr = [obj, 2];
67858
+
67859
+ strictEqual(_emberUtilsIndex.toString(arr), ({}).toString() + ',2');
67860
+ });
67785
67861
  });
67786
67862
  enifed('ember-utils/tests/to-string-test.lint-test', ['exports'], function (exports) {
67787
67863
  'use strict';
@@ -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.13.0-beta.2
9
+ * @version 2.13.0
10
10
  */
11
11
 
12
12
  var enifed, requireModule, Ember;
@@ -268,7 +268,7 @@ enifed('container/tests/container_test', ['exports', 'ember-utils', 'ember-envir
268
268
  equal(PostFactory._debugContainerKey, 'controller:post', 'factory instance receives _debugContainerKey');
269
269
  });
270
270
 
271
- QUnit.test('fallback for to create time injections if factory has no extend', function () {
271
+ QUnit.test('uses create time injections if factory has no extend', function () {
272
272
  var registry = new _containerIndex.Registry();
273
273
  var container = registry.container();
274
274
  var AppleController = _internalTestHelpers.factory();
@@ -282,7 +282,6 @@ enifed('container/tests/container_test', ['exports', 'ember-utils', 'ember-envir
282
282
 
283
283
  var postController = container.lookup('controller:post');
284
284
 
285
- equal(postController._debugContainerKey, 'controller:post', 'instance receives _debugContainerKey');
286
285
  ok(postController.apple instanceof AppleController, 'instance receives an apple of instance AppleController');
287
286
  });
288
287
 
@@ -354,9 +353,6 @@ enifed('container/tests/container_test', ['exports', 'ember-utils', 'ember-envir
354
353
  var postController = container.lookup('controller:post');
355
354
  var store = container.lookup('store:main');
356
355
 
357
- equal(store._debugContainerKey, 'store:main');
358
-
359
- equal(postController._debugContainerKey, 'controller:post');
360
356
  equal(postController.store, store, 'has the correct store injected');
361
357
  });
362
358
 
@@ -755,8 +751,9 @@ enifed('container/tests/container_test', ['exports', 'ember-utils', 'ember-envir
755
751
  });
756
752
 
757
753
  QUnit.test('A deprecated `container` property is appended to every object instantiated from an extendable factory', function () {
754
+ var owner = {};
758
755
  var registry = new _containerIndex.Registry();
759
- var container = registry.container();
756
+ var container = owner.__container__ = registry.container({ owner: owner });
760
757
  var PostController = _internalTestHelpers.factory();
761
758
  registry.register('controller:post', PostController);
762
759
  var postController = container.lookup('controller:post');
@@ -999,11 +996,74 @@ enifed('container/tests/container_test', ['exports', 'ember-utils', 'ember-envir
999
996
  registry.injection('component:foo-bar', 'ajax', 'util:ajax');
1000
997
 
1001
998
  var componentFactory = container.factoryFor('component:foo-bar');
1002
-
1003
999
  var instrance = componentFactory.create({ ajax: 'fetch' });
1004
1000
 
1005
1001
  assert.equal(instrance.ajax, 'fetch');
1006
1002
  });
1003
+
1004
+ QUnit.test('#factoryFor does not add properties to the object being instantiated when _initFactory is present', function (assert) {
1005
+ var owner = {};
1006
+ var registry = new _containerIndex.Registry();
1007
+ var container = registry.container();
1008
+
1009
+ var factory = undefined;
1010
+
1011
+ var Component = (function () {
1012
+ function Component() {}
1013
+
1014
+ Component._initFactory = function _initFactory(_factory) {
1015
+ factory = _factory;
1016
+ };
1017
+
1018
+ Component.create = function create(options) {
1019
+ var instance = new this();
1020
+ _emberUtils.assign(instance, options);
1021
+ return instance;
1022
+ };
1023
+
1024
+ return Component;
1025
+ })();
1026
+
1027
+ registry.register('component:foo-bar', Component);
1028
+
1029
+ var componentFactory = container.factoryFor('component:foo-bar');
1030
+ var instance = componentFactory.create();
1031
+
1032
+ // note: _guid and isDestroyed are being set in the `factory` constructor
1033
+ // not via registry/container shenanigans
1034
+ assert.deepEqual(Object.keys(instance), []);
1035
+ });
1036
+
1037
+ // this is skipped until templates and the glimmer environment do not require `OWNER` to be
1038
+ // passed in as constructor args
1039
+ QUnit.skip('#factoryFor does not add properties to the object being instantiated', function (assert) {
1040
+ var owner = {};
1041
+ var registry = new _containerIndex.Registry();
1042
+ var container = registry.container();
1043
+
1044
+ var factory = undefined;
1045
+
1046
+ var Component = (function () {
1047
+ function Component() {}
1048
+
1049
+ Component.create = function create(options) {
1050
+ var instance = new this();
1051
+ _emberUtils.assign(instance, options);
1052
+ return instance;
1053
+ };
1054
+
1055
+ return Component;
1056
+ })();
1057
+
1058
+ registry.register('component:foo-bar', Component);
1059
+
1060
+ var componentFactory = container.factoryFor('component:foo-bar');
1061
+ var instance = componentFactory.create();
1062
+
1063
+ // note: _guid and isDestroyed are being set in the `factory` constructor
1064
+ // not via registry/container shenanigans
1065
+ assert.deepEqual(Object.keys(instance), []);
1066
+ });
1007
1067
  }
1008
1068
  });
1009
1069
  enifed('container/tests/container_test.lint-test', ['exports'], function (exports) {
@@ -39261,8 +39321,13 @@ enifed('ember-metal/tests/chains_test', ['exports', 'ember-metal/observer', 'emb
39261
39321
  _emberMetalObserver.addObserver(obj, 'foo.bar', null, didChange);
39262
39322
 
39263
39323
  var childObj = Object.create(obj);
39264
- _emberMetalChains.finishChains(childObj);
39265
- ok(_emberMetalMeta.peekMeta(obj) !== _emberMetalMeta.peekMeta(childObj).readableChains(), 'The chains object is copied');
39324
+
39325
+ var parentMeta = _emberMetalMeta.meta(obj);
39326
+ var childMeta = _emberMetalMeta.meta(childObj);
39327
+
39328
+ _emberMetalChains.finishChains(childMeta);
39329
+
39330
+ ok(parentMeta.readableChains() !== childMeta.readableChains(), 'The chains object is copied');
39266
39331
  });
39267
39332
 
39268
39333
  QUnit.test('does not observe primative values', function (assert) {
@@ -67388,6 +67453,13 @@ enifed('ember-utils/tests/to-string-test', ['exports', 'ember-utils/index'], fun
67388
67453
 
67389
67454
  strictEqual(_emberUtilsIndex.toString(obj), ({}).toString());
67390
67455
  });
67456
+
67457
+ QUnit.test('toString does not fail when called on Arrays with objects without toString method', function () {
67458
+ var obj = Object.create(null);
67459
+ var arr = [obj, 2];
67460
+
67461
+ strictEqual(_emberUtilsIndex.toString(arr), ({}).toString() + ',2');
67462
+ });
67391
67463
  });
67392
67464
  enifed('ember-utils/tests/to-string-test.lint-test', ['exports'], function (exports) {
67393
67465
  'use strict';