Skip to content

Commit

Permalink
Update for Ember Data 1.13.x, closes #32
Browse files Browse the repository at this point in the history
  • Loading branch information
hhff committed Jun 28, 2015
1 parent 2c9b49f commit a8e70d7
Show file tree
Hide file tree
Showing 8 changed files with 50 additions and 16 deletions.
28 changes: 24 additions & 4 deletions addon/mixins/route.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import Ember from 'ember';
import { emberDataVersionIs } from 'ember-version-is';

/**
The Ember Infinity Route Mixin enables an application route to load paginated
Expand Down Expand Up @@ -88,9 +89,18 @@ export default Ember.Mixin.create({
* Path of the "total pages" param in
* the HTTP response
* @type {String}
* @default "meta.total_pages"
* @default "meta.total_pages"
*/
totalPagesParam: 'meta.total_pages',

/**
* The supported findMethod name for
* the developers Ember Data version.
* Provided here for backwards compat.
* @type {String}
* @default "query"
*/
_storeFindMethod: 'query',

/**
@private
Expand All @@ -115,7 +125,15 @@ export default Ember.Mixin.create({
*/
infinityModel(modelName, options) {

if (Ember.isEmpty(this.store) || Ember.isEmpty(this.store.find)){
if (emberDataVersionIs('greaterThan', '1.0.0-beta.19.2') && emberDataVersionIs('lessThan', '1.13.4')) {
throw new Ember.Error("Ember Infinity: You are using an unsupported version of Ember Data. Please upgrade to at least 1.13.4 or downgrade to 1.0.0-beta.19.2");
}

if (emberDataVersionIs('lessThan', '1.13.0')) {
this.set('_storeFindMethod', 'find');
}

if (Ember.isEmpty(this.store) || Ember.isEmpty(this.store[this._storeFindMethod])){
throw new Ember.Error("Ember Data store is not available to infinityModel");
} else if (modelName === undefined) {
throw new Ember.Error("You must pass a Model Name to infinityModel");
Expand All @@ -141,7 +159,8 @@ export default Ember.Mixin.create({
requestPayloadBase[this.get('pageParam')] = startingPage;

var params = Ember.merge(requestPayloadBase, options);
var promise = this.store.find(modelName, params);

let promise = this.store[this._storeFindMethod](modelName, params);

promise.then(
infinityModel => {
Expand Down Expand Up @@ -184,7 +203,8 @@ export default Ember.Mixin.create({
requestPayloadBase[this.get('pageParam')] = nextPage;

var params = Ember.merge(requestPayloadBase, this.get('_extraParams'));
var promise = this.store.find(modelName, params);

let promise = this.store[this._storeFindMethod](modelName, params);

promise.then(
infinityModel => {
Expand Down
4 changes: 2 additions & 2 deletions bower.json
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
{
"name": "ember-infinity",
"dependencies": {
"ember": "1.10.0",
"ember": "1.13.0",
"ember-cli-shims": "ember-cli/ember-cli-shims#0.0.3",
"ember-cli-test-loader": "ember-cli-test-loader#0.1.3",
"ember-data": "1.0.0-beta.19.1",
"ember-data": "1.13.4",
"ember-load-initializers": "ember-cli/ember-load-initializers#0.1.4",
"ember-qunit": "0.3.3",
"ember-qunit-notifications": "0.0.7",
Expand Down
8 changes: 8 additions & 0 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,13 @@ module.exports = {

init: function() {
checker.assertAbove(this, '0.2.0');
},

included: function(app) {
this.addons.forEach(function(addon){
if (addon.name === "ember-version-is") {
addon.included.apply(addon, [app]);
}
});
}
};
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@
"ember-addon"
],
"dependencies": {
"ember-version-is": "0.0.2",
"ember-cli-babel": "^5.0.0",
"ember-cli-htmlbars": "0.7.8",
"ember-cli-version-checker": "^1.0.2"
Expand Down
3 changes: 3 additions & 0 deletions tests/dummy/app/adapters/application.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import DS from 'ember-data';

export default DS.RESTAdapter;
4 changes: 2 additions & 2 deletions tests/dummy/app/templates/demo.hbs
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@
<h2 id="title">ember-infinity</h2>
</div>
<ul class="demo-items">
{{#each content as |item|}}
{{#each content key="@guid" as |item|}}
<li>{{item.id}}. {{item.name}}</li>
{{/each}}
{{infinity-loader
infinityModel=content
loadingText="Loading more awesome records..."
loadedText="Loaded all the records!"}}
</ul>
</div>
</div>
4 changes: 3 additions & 1 deletion tests/unit/components/infinity-loader-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,9 @@ import {
import Ember from 'ember';
import $ from 'jquery';

moduleForComponent('infinity-loader');
moduleForComponent('infinity-loader', {
unit: true
});

test('it renders', function(assert) {
assert.expect(2);
Expand Down
14 changes: 7 additions & 7 deletions tests/unit/mixins/route-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ test('it can not use infinityModel without a Model Name', assert => {
});
var route = RouteObject.create();
route.store = {
find() {}
query() {}
};

var infinityError;
Expand All @@ -61,7 +61,7 @@ test('it sets state before it reaches the end', assert => {
var route = RouteObject.create();

var dummyStore = {
find() {
query() {
return new Ember.RSVP.Promise(resolve => {
Ember.run(this, resolve, Ember.Object.create({
items: [{id: 1, name: 'Test'}],
Expand Down Expand Up @@ -100,7 +100,7 @@ test('it allows customizations of request params', assert => {
var route = RouteObject.create();

var dummyStore = {
find(modelType, findQuery) {
query(modelType, findQuery) {
assert.deepEqual(findQuery, {per: 25, p: 1});
return new Ember.RSVP.Promise(resolve => {
Ember.run(this, resolve, Ember.Object.create({
Expand Down Expand Up @@ -130,7 +130,7 @@ test('it allows customizations of meta parsing params', assert => {
var route = RouteObject.create();

var dummyStore = {
find(modelType, findQuery) {
query(modelType, findQuery) {
return new Ember.RSVP.Promise(resolve => {
Ember.run(this, resolve, Ember.Object.create({
items: [{id: 1, name: 'Walter White'}],
Expand Down Expand Up @@ -164,7 +164,7 @@ test('it sets state when it reaches the end', assert => {
var route = RouteObject.create();

var dummyStore = {
find() {
query() {
return new Ember.RSVP.Promise(resolve => {
Ember.run(this, resolve, Ember.Object.create({
items: [{id: 1, name: 'Test'}],
Expand Down Expand Up @@ -204,7 +204,7 @@ test('it uses extra params when loading more data', assert => {
var route = RouteObject.create();

var dummyStore = {
find(name, params) {
query(name, params) {
assert.equal('param', params.extra);
return new Ember.RSVP.Promise(resolve => {
Ember.run(this, resolve, Ember.Object.create({
Expand Down Expand Up @@ -265,7 +265,7 @@ test('it uses overridden params when loading more data', assert => {
var route = RouteObject.create();

var dummyStore = {
find(name, params) {
query(name, params) {
assert.equal(1, params.testPerPage);
assert.ok(params.testPage);
return new Ember.RSVP.Promise(resolve => {
Expand Down

0 comments on commit a8e70d7

Please sign in to comment.