From df77abeedfe8adbee5cb837db94cfddeb1e5a0be Mon Sep 17 00:00:00 2001 From: Ricardo Mendes Date: Mon, 13 Feb 2017 15:50:48 +0000 Subject: [PATCH 1/2] [BUGFIX release] Fixes `isEmpty` when passed a non Ember.Map object with `size` property Fixes https://github.com/emberjs/ember.js/issues/14884 --- packages/ember-metal/lib/is_empty.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/ember-metal/lib/is_empty.js b/packages/ember-metal/lib/is_empty.js index 5e1b208ad93..c059d2a2895 100644 --- a/packages/ember-metal/lib/is_empty.js +++ b/packages/ember-metal/lib/is_empty.js @@ -1,5 +1,6 @@ import { get } from './property_get'; import isNone from './is_none'; +import EmberMap from './map'; /** Verifies that a value is `null` or an empty string, empty array, @@ -39,7 +40,7 @@ export default function isEmpty(obj) { let objectType = typeof obj; - if (objectType === 'object') { + if (objectType instanceof EmberMap) { let size = get(obj, 'size'); if (typeof size === 'number') { return !size; From 1a953c453b9b42aaccf1db15bdd73931ea729da6 Mon Sep 17 00:00:00 2001 From: Ricardo Mendes Date: Mon, 13 Feb 2017 15:54:06 +0000 Subject: [PATCH 2/2] Update is_empty_test.js --- packages/ember-metal/tests/is_empty_test.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/packages/ember-metal/tests/is_empty_test.js b/packages/ember-metal/tests/is_empty_test.js index 0f161e12e79..f1d2f4c218a 100644 --- a/packages/ember-metal/tests/is_empty_test.js +++ b/packages/ember-metal/tests/is_empty_test.js @@ -33,6 +33,13 @@ QUnit.test('Ember.isEmpty Ember.Map', function() { equal(false, isEmpty(map), 'Map is not empty'); }); +QUnit.test('Ember.isEmpty Object with size property', function() { + let obj = { size: 0 }; + equal(false, isEmpty(obj), 'Object is empty'); + obj.size = 1; + equal(false, isEmpty(obj), 'Object is empty'); +}); + QUnit.test('Ember.isEmpty Ember.OrderedSet', function() { let orderedSet = new OrderedSet(); equal(true, isEmpty(orderedSet), 'Empty ordered set is empty');