import Ember from 'ember'; import {moduleFor, test} from 'ember-qunit'; import FactoryGuy, {manualSetup, mockCreate, build, mockTeardown, make} from 'ember-data-factory-guy'; import wait from 'ember-test-helpers/wait'; moduleFor('service:store', 'TODO: put something here', { // Specify the other units that are required for this test. needs: [ 'model:user', 'model:file', ], beforeEach() { manualSetup(this.container); }, afterEach() { mockTeardown(); }, }); const Wrapper = Ember.Object.extend({ user: null, hasUserFiles: Ember.computed('user.files.[]', function() { return this.get('user').hasMany('files').ids().length; }), }); test('it recomputes computed property', function(assert) { let store = this.subject(); FactoryGuy.setStore(store); const user = make('user'); const file = make('file', {user}); assert.equal(file.belongsTo('user').id(), user.get('id')); assert.deepEqual(user.hasMany('files').ids(), [file.get('id')]); const wrapper = Wrapper.create({ user, }); assert.equal(wrapper.get('hasUserFiles'), 1); const file2 = make('file', {user}); assert.deepEqual(user.hasMany('files').ids(), [file.get('id'), file2.get('id')]); // uncomment this line or change ember-data to 2.10 //wrapper.notifyPropertyChange('hasUserFiles'); assert.equal(wrapper.get('hasUserFiles'), 2); });