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 Aug 20, 2015
1 parent 3079f98 commit 2c5716d
Show file tree
Hide file tree
Showing 16 changed files with 212 additions and 108 deletions.
2 changes: 2 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,15 @@ env:
- EMBER_TRY_SCENARIO=ember-1.10
- EMBER_TRY_SCENARIO=ember-1.11
- EMBER_TRY_SCENARIO=ember-1.12
- EMBER_TRY_SCENARIO=ember-1.13
- EMBER_TRY_SCENARIO=ember-release
- EMBER_TRY_SCENARIO=ember-beta
- EMBER_TRY_SCENARIO=ember-canary

matrix:
fast_finish: true
allow_failures:
- env: EMBER_TRY_SCENARIO=ember-release
- env: EMBER_TRY_SCENARIO=ember-beta
- env: EMBER_TRY_SCENARIO=ember-canary

Expand Down
23 changes: 0 additions & 23 deletions Brocfile.js

This file was deleted.

47 changes: 31 additions & 16 deletions addon/mixins/route.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import Ember from 'ember';
import { emberDataVersionIs } from 'ember-version-is';

const { get } = Ember;

const keys = Object.keys || Ember.keys;
/**
The Ember Infinity Route Mixin enables an application route to load paginated
records for the route `model` as triggered by the controller (or Infinity Loader
Expand Down Expand Up @@ -98,9 +98,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 @@ -126,10 +135,18 @@ export default Ember.Mixin.create({
*/
infinityModel(modelName, options, boundParams) {

if (Ember.isEmpty(get(this, 'store')) || Ember.isEmpty(get(this, 'store').find)){
throw new Ember.Error("Ember Data store is not available to infinityModel");
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 Infinity: Ember Data store is not available to infinityModel");
} else if (modelName === undefined) {
throw new Ember.Error("You must pass a Model Name to infinityModel");
throw new Ember.Error("Ember Infinity: You must pass a Model Name to infinityModel");
}

this.set('_infinityModelName', modelName);
Expand Down Expand Up @@ -157,7 +174,7 @@ export default Ember.Mixin.create({
}

var params = Ember.merge(requestPayloadBase, options);
var promise = get(this, 'store').find(modelName, params);
let promise = this.store[this._storeFindMethod](modelName, params);

promise.then(
infinityModel => {
Expand All @@ -172,7 +189,7 @@ export default Ember.Mixin.create({
});
},
() => {
throw new Ember.Error("Could not fetch Infinity Model. Please check your serverside configuration.");
throw new Ember.Error("Ember Infinity: Could not fetch Infinity Model. Please check your serverside configuration.");
}
);

Expand Down Expand Up @@ -201,9 +218,9 @@ export default Ember.Mixin.create({
requestPayloadBase[this.get('pageParam')] = nextPage;

options = this._includeBoundParams(options, boundParams);

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

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

promise.then(
newObjects => {
Expand All @@ -224,7 +241,7 @@ export default Ember.Mixin.create({
},
() => {
this.set('_loadingMore', false);
throw new Ember.Error("Could not fetch Infinity Model. Please check your serverside configuration.");
throw new Ember.Error("Ember Infinity: Could not fetch Infinity Model. Please check your serverside configuration.");
}
);
} else {
Expand All @@ -245,10 +262,8 @@ export default Ember.Mixin.create({
@return {Object}
*/
_includeBoundParams: function(options, boundParams) {
if (Ember.keys(boundParams).length > 0) {
Ember.keys(boundParams).forEach( (key) => {
options[key] = this.get(boundParams[key]);
});
if (!Ember.isEmpty(boundParams)) {
keys(boundParams).forEach(k => options[k] = this.get(boundParams[k]));
}

return options;
Expand Down
19 changes: 11 additions & 8 deletions bower.json
Original file line number Diff line number Diff line change
@@ -1,19 +1,22 @@
{
"name": "ember-infinity",
"dependencies": {
"ember": "1.10.0",
"ember": "1.13.7",
"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.8",
"ember-load-initializers": "ember-cli/ember-load-initializers#0.1.5",
"ember-qunit": "0.4.1",
"ember-qunit": "0.4.9",
"ember-qunit-notifications": "0.0.7",
"ember-resolver": "~0.1.18",
"jquery": "^1.11.1",
"loader.js": "ember-cli/loader.js#3.2.0",
"pretender": "0.6.0",
"qunit": "~1.17.1",
"Faker": "~2.1.3",
"jquery": "^1.11.3",
"loader.js": "ember-cli/loader.js#3.2.1",
"qunit": "~1.18.0",
"pretender": "^0.9.0",
"Faker": "~3.0.1",
"babel-polyfill": "~0.0.1"
},
"resolutions": {
"FakeXMLHttpRequest": "~1.2.0"
}
}
25 changes: 16 additions & 9 deletions config/ember-try.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,46 +7,53 @@ module.exports = {
{
name: 'ember-1.10',
dependencies: {
'ember': '~1.10.0'
ember: '~1.10.0'
}
},
{
name: 'ember-1.11',
dependencies: {
'ember': '~1.11.3'
ember: '~1.11.3'
}
},
{
name: 'ember-1.12',
dependencies: {
'ember': '~1.12.0'
ember: '~1.12.0'
}
},
{
name: 'ember-1.13',
dependencies: {
ember: '~1.13.0'
}
},
{
name: 'ember-release',
dependencies: {
'ember': 'components/ember#release'
ember: 'components/ember#release'

},
resolutions: {
'ember': 'release'
ember: 'release'
}
},
{
name: 'ember-beta',
dependencies: {
'ember': 'components/ember#beta'
ember: 'components/ember#beta'
},
resolutions: {
'ember': 'beta'
ember: 'beta'
}
},
{
name: 'ember-canary',
dependencies: {
'ember': 'components/ember#canary'
ember: 'components/ember#canary'
},
resolutions: {
'ember': 'canary'
ember: 'canary'
}
}
]
Expand Down
8 changes: 4 additions & 4 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,9 @@ module.exports = {

included: function(app) {
this.addons.forEach(function(addon){
if (addon.name === "ember-version-is") {
addon.included.apply(addon, [app]);
}
});
if (addon.name === "ember-version-is") {
addon.included.apply(addon, [app]);
}
});
}
};
22 changes: 11 additions & 11 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,18 +18,18 @@
"author": "Hugh Francis",
"license": "MIT",
"devDependencies": {
"broccoli-asset-rev": "^2.0.2",
"ember-cli": "1.13.1",
"ember-cli-app-version": "~0.3.5",
"broccoli-asset-rev": "^2.1.2",
"ember-cli": "1.13.8",
"ember-cli-app-version": "0.5.0",
"ember-cli-content-security-policy": "0.4.0",
"ember-cli-dependency-checker": "^1.0.0",
"ember-cli-dependency-checker": "^1.0.1",
"ember-cli-github-pages": "0.0.6",
"ember-cli-ic-ajax": "0.2.1",
"ember-cli-inject-live-reload": "^1.3.0",
"ember-cli-inject-live-reload": "^1.3.1",
"ember-cli-pretender": "0.3.2",
"ember-cli-qunit": "0.3.15",
"ember-cli-uglify": "^1.0.1",
"ember-data": "1.0.0-beta.19.1",
"ember-cli-qunit": "^1.0.0",
"ember-cli-uglify": "^1.2.0",
"ember-data": "1.13.8",
"ember-disable-prototype-extensions": "^1.0.0",
"ember-disable-proxy-controllers": "^1.0.0",
"ember-export-application-global": "^1.0.2",
Expand All @@ -40,10 +40,10 @@
"ember-addon"
],
"dependencies": {
"ember-cli-babel": "^5.0.0",
"ember-version-is": "0.0.3",
"ember-cli-babel": "^5.1.3",
"ember-cli-htmlbars": "0.7.9",
"ember-cli-version-checker": "^1.0.2",
"ember-version-is": "0.0.3"
"ember-cli-version-checker": "^1.0.2"
},
"ember-addon": {
"configPath": "tests/dummy/config",
Expand Down
5 changes: 3 additions & 2 deletions tests/.jshintrc
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
"node": false,
"browser": false,
"boss": true,
"curly": false,
"curly": true,
"debug": false,
"devel": false,
"eqeqeq": true,
Expand All @@ -47,5 +47,6 @@
"strict": false,
"white": false,
"eqnull": true,
"esnext": true
"esnext": true,
"unused": true
}
2 changes: 1 addition & 1 deletion tests/acceptance/infinity-route-without-meta-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ module('Acceptance: Infinity Route', {
setup() {
App = startApp();
server = new Pretender(function() {
this.get('/posts', request => {
this.get('/posts', () => {
var posts = [
{ id: 1, name: "Squarepusher" },
{ id: 2, name: "Aphex Twin" }
Expand Down
5 changes: 5 additions & 0 deletions tests/dummy/app/adapters/application.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import DS from 'ember-data';

export default DS.RESTAdapter.extend({
shouldBackgroundReloadRecord() { return false; }
});
4 changes: 3 additions & 1 deletion tests/dummy/app/app.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,11 @@ import Resolver from 'ember/resolver';
import loadInitializers from 'ember/load-initializers';
import config from './config/environment';

var App;

Ember.MODEL_FACTORY_INJECTIONS = true;

var App = Ember.Application.extend({
App = Ember.Application.extend({
modulePrefix: config.modulePrefix,
podModulePrefix: config.podModulePrefix,
Resolver: Resolver
Expand Down
1 change: 0 additions & 1 deletion tests/dummy/app/routes/demo.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ export default Ember.Route.extend(InfinityRoute, {
var fakeData = generateFakeData(104);
this.set('pretender', new Pretender());
this.get('pretender').get('/posts', request => {
var queryParams = request.queryParams;
var fd = fakeData;
var page = parseInt(request.queryParams.page, 10);
var per = parseInt(request.queryParams.per_page, 10);
Expand Down
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>
3 changes: 1 addition & 2 deletions tests/helpers/start-app.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import Ember from 'ember';
import Application from '../../app';
import Router from '../../router';
import config from '../../config/environment';

export default function startApp(attrs) {
Expand All @@ -9,7 +8,7 @@ export default function startApp(attrs) {
var attributes = Ember.merge({}, config.APP);
attributes = Ember.merge(attributes, attrs); // use defaults, but you can override;

Ember.run(() => {
Ember.run(function() {
application = Application.create(attributes);
application.setupForTesting();
application.injectTestHelpers();
Expand Down
Loading

0 comments on commit 2c5716d

Please sign in to comment.