Skip to content

Commit

Permalink
feat: Add mixins for store and model
Browse files Browse the repository at this point in the history
This allows for better composition, and to not have Ember Data as a dependency
  • Loading branch information
Ilya Radchenko committed Feb 25, 2017
1 parent ae68e9a commit 4425755
Show file tree
Hide file tree
Showing 4 changed files with 77 additions and 0 deletions.
24 changes: 24 additions & 0 deletions addon/mixins/task-model.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import Ember from 'ember';
import { task } from 'ember-concurrency';

export default Ember.Mixin.create({
save() {
let promise = this._super(...arguments);
return this.get('wrap').perform(promise);
},

reload() {
let promise = this._super(...arguments);
return this.get('wrap').perform(promise);
},

destroyRecord() {
let promise = this._super(...arguments);
return this.get('wrap').perform(promise);
},

wrap: task(function * (promise) {
let result = yield promise;
return result;
})
});
29 changes: 29 additions & 0 deletions addon/mixins/task-store.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import Ember from 'ember';
import { task } from 'ember-concurrency';

export default Ember.Mixin.create({
findAll() {
let promise = this._super(...arguments);
return this.get('wrap').perform(promise);
},

query() {
let promise = this._super(...arguments);
return this.get('wrap').perform(promise);
},

findRecord() {
let promise = this._super(...arguments);
return this.get('wrap').perform(promise);
},

queryRecord() {
let promise = this._super(...arguments);
return this.get('wrap').perform(promise);
},

wrap: task(function * (promise) {
let result = yield promise;
return result;
})
});
12 changes: 12 additions & 0 deletions tests/unit/mixins/task-model-test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import Ember from 'ember';
import TaskModelMixin from 'ember-data-tasks/mixins/task-model';
import { module, test } from 'qunit';

module('Unit | Mixin | task model');

// Replace this with your real tests.
test('it works', function(assert) {
let TaskModelObject = Ember.Object.extend(TaskModelMixin);
let subject = TaskModelObject.create();
assert.ok(subject);
});
12 changes: 12 additions & 0 deletions tests/unit/mixins/task-store-test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import Ember from 'ember';
import TaskStoreMixin from 'ember-data-tasks/mixins/task-store';
import { module, test } from 'qunit';

module('Unit | Mixin | task store');

// Replace this with your real tests.
test('it works', function(assert) {
let TaskStoreObject = Ember.Object.extend(TaskStoreMixin);
let subject = TaskStoreObject.create();
assert.ok(subject);
});

0 comments on commit 4425755

Please sign in to comment.