Skip to content

Instantly share code, notes, and snippets.

@NullVoxPopuli
Forked from Keeo/controllers.application.js
Last active October 4, 2017 21:45
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save NullVoxPopuli/e04695f38a8291b490403a4f77b6293f to your computer and use it in GitHub Desktop.
Save NullVoxPopuli/e04695f38a8291b490403a4f77b6293f to your computer and use it in GitHub Desktop.
Computed properties
import Ember from 'ember';
export default Ember.Controller.extend({
appName: 'Ember Twiddle'
});
import Model from "ember-data/model";
import attr from "ember-data/attr";
import { belongsTo, hasMany } from "ember-data/relationships";
export default Model.extend({
user: belongsTo(),
path: attr(),
});
import Model from "ember-data/model";
import attr from "ember-data/attr";
import { belongsTo, hasMany } from "ember-data/relationships";
export default Model.extend({
files: hasMany('file'),
name: attr(),
});
import DS from 'ember-data';
export default DS.Store.extend({
});
<h1>Welcome to {{appName}}</h1>
<br>
<br>
{{outlet}}
<br>
<br>
import FactoryGuy from 'ember-data-factory-guy';
FactoryGuy.define('file', {
default: {
path: 'default-path',
name:'default-name',
},
});
import FactoryGuy from 'ember-data-factory-guy';
FactoryGuy.define('user', {
default: {
name: 'defualt-user-name',
},
});
import Resolver from '../../resolver';
import config from '../../config/environment';
const resolver = Resolver.create();
resolver.namespace = {
modulePrefix: config.modulePrefix,
podModulePrefix: config.podModulePrefix
};
export default resolver;
import resolver from './helpers/resolver';
import {
setResolver
} from 'ember-qunit';
setResolver(resolver);
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,
// this was the change
files: Ember.computed.alias('user.files'),
hasUserFiles: Ember.computed('files.@each', 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);
});
{
"version": "0.12.1",
"EmberENV": {
"FEATURES": {}
},
"options": {
"use_pods": false,
"enable-testing": true
},
"dependencies": {
"jquery": "https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.3/jquery.js",
"ember": "2.12.0",
"ember-template-compiler": "2.12.0",
"ember-testing": "2.12.0"
},
"addons": {
"ember-data": "2.12.1",
"ember-data-factory-guy": "2.13.1"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment