diff --git a/packages/ember-runtime/lib/system/array_proxy.js b/packages/ember-runtime/lib/system/array_proxy.js index f34a81174a8..2b261340c9a 100644 --- a/packages/ember-runtime/lib/system/array_proxy.js +++ b/packages/ember-runtime/lib/system/array_proxy.js @@ -20,8 +20,6 @@ import alias from 'ember-metal/alias'; import { addArrayObserver, removeArrayObserver, - arrayContentDidChange, - arrayContentWillChange, objectAt } from 'ember-runtime/mixins/array'; @@ -374,11 +372,11 @@ export default EmberObject.extend(MutableArray, { }, arrangedContentArrayWillChange(item, idx, removedCnt, addedCnt) { - arrayContentWillChange(this, idx, removedCnt, addedCnt); + this.arrayContentWillChange(idx, removedCnt, addedCnt); }, arrangedContentArrayDidChange(item, idx, removedCnt, addedCnt) { - arrayContentDidChange(this, idx, removedCnt, addedCnt); + this.arrayContentDidChange(idx, removedCnt, addedCnt); }, init() { diff --git a/packages/ember-runtime/tests/system/array_proxy/arranged_content_test.js b/packages/ember-runtime/tests/system/array_proxy/arranged_content_test.js index 29d0698f152..233a00676f3 100644 --- a/packages/ember-runtime/tests/system/array_proxy/arranged_content_test.js +++ b/packages/ember-runtime/tests/system/array_proxy/arranged_content_test.js @@ -299,3 +299,32 @@ QUnit.test('lastObject - returns last arranged object', function() { QUnit.test('firstObject - returns first arranged object', function() { equal(array.get('firstObject'), '5', 'returns first arranged object'); }); + +QUnit.test('arrangedContentArray{Will,Did}Change are called when the arranged content changes', function() { + // The behaviour covered by this test may change in the future if we decide + // that built-in array methods are not overridable. + + let willChangeCallCount = 0; + let didChangeCallCount = 0; + + let content = emberA([1, 2, 3]); + ArrayProxy.extend({ + arrangedContentArrayWillChange() { + willChangeCallCount++; + this._super(...arguments); + }, + arrangedContentArrayDidChange() { + didChangeCallCount++; + this._super(...arguments); + } + }).create({ content }); + + equal(willChangeCallCount, 0); + equal(didChangeCallCount, 0); + + content.pushObject(4); + content.pushObject(5); + + equal(willChangeCallCount, 2); + equal(didChangeCallCount, 2); +}); diff --git a/packages/ember-runtime/tests/system/array_proxy/content_change_test.js b/packages/ember-runtime/tests/system/array_proxy/content_change_test.js index 9dba0ed21a1..aa53a25788e 100644 --- a/packages/ember-runtime/tests/system/array_proxy/content_change_test.js +++ b/packages/ember-runtime/tests/system/array_proxy/content_change_test.js @@ -94,3 +94,32 @@ QUnit.test('The ArrayProxy doesn\'t explode when assigned a destroyed object', f ok(true, 'No exception was raised'); }); + +QUnit.test('arrayContent{Will,Did}Change are called when the content changes', function() { + // The behaviour covered by this test may change in the future if we decide + // that built-in array methods are not overridable. + + let willChangeCallCount = 0; + let didChangeCallCount = 0; + + let content = emberA([1, 2, 3]); + ArrayProxy.extend({ + arrayContentWillChange() { + willChangeCallCount++; + this._super(...arguments); + }, + arrayContentDidChange() { + didChangeCallCount++; + this._super(...arguments); + } + }).create({ content }); + + equal(willChangeCallCount, 0); + equal(didChangeCallCount, 0); + + content.pushObject(4); + content.pushObject(5); + + equal(willChangeCallCount, 2); + equal(didChangeCallCount, 2); +});