From 8adb04cb668742b45b3b02a9eac96ebd9cc4a8d8 Mon Sep 17 00:00:00 2001 From: Wesley Workman Date: Wed, 26 Aug 2015 16:32:44 -0400 Subject: [PATCH] [BUGFIX beta] Add a failing test for #12212 Demonstrates issues with Ember.computed.sort used on class with multiple instances. --- .../computed/reduce_computed_macros_test.js | 30 +++++++++++++++++-- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/packages/ember-runtime/tests/computed/reduce_computed_macros_test.js b/packages/ember-runtime/tests/computed/reduce_computed_macros_test.js index b037f308862..428fc28873c 100644 --- a/packages/ember-runtime/tests/computed/reduce_computed_macros_test.js +++ b/packages/ember-runtime/tests/computed/reduce_computed_macros_test.js @@ -1224,13 +1224,15 @@ QUnit.test('sorts correctly as only one property changes', function() { }); +var klass; QUnit.module('sort - concurrency', { setup() { - obj = EmberObject.extend({ + klass = EmberObject.extend({ sortProps: ['count'], sortedItems: sort('items', 'sortProps'), customSortedItems: sort('items.@each.count', (a, b) => a.count - b.count) - }).create({ + }); + obj = klass.create({ items: emberA([ { name: 'A', count: 1 }, { name: 'B', count: 2 }, @@ -1255,7 +1257,7 @@ QUnit.test('sorts correctly after mutation to the sort properties', function() { deepEqual(obj.get('sortedItems').mapBy('name'), ['A', 'D', 'B', 'C'], 'final'); }); -QUnit.test('sort correctl after mutation to the sor ', function() { +QUnit.test('sort correctly after mutation to the sort', function() { deepEqual(obj.get('customSortedItems').mapBy('name'), ['A', 'B', 'C', 'D'], 'initial'); set(obj.get('items')[1], 'count', 5); @@ -1266,6 +1268,28 @@ QUnit.test('sort correctl after mutation to the sor ', function() { deepEqual(obj.get('sortedItems').mapBy('name'), ['A', 'D', 'B', 'C'], 'final'); }); +QUnit.test('sort correctly on multiple instances of the same class', function() { + var obj2 = klass.create({ + items: Ember.A([ + { name: 'W', count: 23 }, + { name: 'X', count: 24 }, + { name: 'Y', count: 25 }, + { name: 'Z', count: 26 } + ]) + }); + + deepEqual(obj.get('sortedItems').mapBy('name'), ['A', 'B', 'C', 'D'], 'initial'); + deepEqual(obj2.get('sortedItems').mapBy('name'), ['W', 'X', 'Y', 'Z'], 'initial'); + + set(obj.get('items')[1], 'count', 5); + set(obj.get('items')[2], 'count', 6); + set(obj2.get('items')[1], 'count', 27); + set(obj2.get('items')[2], 'count', 28); + + deepEqual(obj.get('sortedItems').mapBy('name'), ['A', 'D', 'B', 'C'], 'final'); + deepEqual(obj2.get('sortedItems').mapBy('name'), ['W', 'Z', 'X', 'Y'], 'final'); +}); + QUnit.module('max', { setup() { obj = EmberObject.extend({