From 88f908abaa0550be88fc8707ed30de31f2d1f2fb Mon Sep 17 00:00:00 2001 From: Igor Santos Date: Mon, 27 Apr 2015 01:46:28 -0300 Subject: [PATCH 01/21] Fixing bug where hasMany could not get classname in some cases. closes #51 --- addon/serializers/application.js | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/addon/serializers/application.js b/addon/serializers/application.js index 9a0e375..f94f94e 100644 --- a/addon/serializers/application.js +++ b/addon/serializers/application.js @@ -172,9 +172,10 @@ export default DS.RESTSerializer.extend({ }, serializeHasMany: function( record, json, relationship ) { - var key = relationship.key, - hasMany = record.get( key ), - options = relationship.options; + var key = relationship.key, + hasMany = record.get( key ), + options = relationship.options, + serializer = this; if ( hasMany && hasMany.get( 'length' ) > 0 ) { json[key] = { 'objects': [] }; @@ -190,7 +191,7 @@ export default DS.RESTSerializer.extend({ hasMany.forEach( function( child ) { json[key].objects.push({ '__type' : 'Pointer', - 'className' : child.parseClassName(), + 'className' : serializer.parseClassName( child.typeKey ), 'objectId' : child.get( 'id' ) }); }); @@ -229,4 +230,4 @@ export default DS.RESTSerializer.extend({ } } -}); \ No newline at end of file +}); From 0fdd8c45868d4a3c376256b8017a26d9884b2cde Mon Sep 17 00:00:00 2001 From: Igor Santos Date: Sun, 17 May 2015 18:27:39 -0300 Subject: [PATCH 02/21] Upgrading computed properties for new syntax on Ember 0.12 (fixes deprecation warning) --- addon/adapters/application.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/addon/adapters/application.js b/addon/adapters/application.js index d68f0f4..c09e531 100644 --- a/addon/adapters/application.js +++ b/addon/adapters/application.js @@ -173,10 +173,11 @@ export default DS.RESTAdapter.extend({ return this._super( store, type, query ); }, - sessionToken: Ember.computed( 'headers.X-Parse-Session-Token', function( key, value ) { - if ( arguments.length < 2 ) { + sessionToken: Ember.computed( 'headers.X-Parse-Session-Token', { + get( key ) { return this.get( 'headers.X-Parse-Session-Token' ); - } else { + }, + set( key, value ) { this.set( 'headers.X-Parse-Session-Token', value ); return value; } From c11a645d253eb8697b1b25f02ee2b701d2d58a3b Mon Sep 17 00:00:00 2001 From: Igor Santos Date: Mon, 1 Jun 2015 01:52:10 -0300 Subject: [PATCH 03/21] Fixing id getter on hasMany serialization --- addon/serializers/application.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addon/serializers/application.js b/addon/serializers/application.js index 86e07af..da945d8 100644 --- a/addon/serializers/application.js +++ b/addon/serializers/application.js @@ -191,7 +191,7 @@ export default DS.RESTSerializer.extend({ json[key].objects.push({ '__type' : 'Pointer', 'className' : _this.parseClassName(child.type.typeKey), - 'objectId' : child.attr( 'id' ) + 'objectId' : child.id }); }); @@ -229,4 +229,4 @@ export default DS.RESTSerializer.extend({ } } -}); \ No newline at end of file +}); From b15b7c6b121bf63ffb96e5fd0a5559a6264ac519 Mon Sep 17 00:00:00 2001 From: Igor Santos Date: Sun, 7 Jun 2015 14:30:13 -0300 Subject: [PATCH 04/21] Fixing some code-styling issues and huge issue on custom-named belongsTo relations --- addon/serializers/application.js | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/addon/serializers/application.js b/addon/serializers/application.js index da945d8..9e23b9c 100644 --- a/addon/serializers/application.js +++ b/addon/serializers/application.js @@ -148,25 +148,24 @@ export default DS.RESTSerializer.extend({ } }, - serializeBelongsTo: function( snapshot, json, relationship ) { + serializeBelongsTo: function(snapshot, json, relationship) { var key = relationship.key, belongsToId = snapshot.belongsTo(key, { id: true }); - if ( belongsToId ) { + if (belongsToId) { json[key] = { '__type' : 'Pointer', - 'className' : this.parseClassName(key), + 'className' : this.parseClassName(relationship.type.typeKey), 'objectId' : belongsToId }; } }, - parseClassName: function( key ) { - if ( 'parseUser' === key) { + parseClassName: function(key) { + if ('parseUser' === key) { return '_User'; - } else { - return Ember.String.capitalize( Ember.String.camelize( key ) ); + return Ember.String.capitalize(Ember.String.camelize(key)); } }, From 0e5d29f3784d3ea5cb51a5140a42a5abb4c1131c Mon Sep 17 00:00:00 2001 From: Igor Santos Date: Tue, 9 Jun 2015 02:23:41 -0300 Subject: [PATCH 05/21] Using new CP syntax with ES5 getter/setter syntax, as babel does not seem to be working fine here --- addon/adapters/application.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/addon/adapters/application.js b/addon/adapters/application.js index c09e531..56d65be 100644 --- a/addon/adapters/application.js +++ b/addon/adapters/application.js @@ -173,12 +173,12 @@ export default DS.RESTAdapter.extend({ return this._super( store, type, query ); }, - sessionToken: Ember.computed( 'headers.X-Parse-Session-Token', { - get( key ) { - return this.get( 'headers.X-Parse-Session-Token' ); + sessionToken: Ember.computed('headers.X-Parse-Session-Token', { + get: function get() { + return this.get('headers.X-Parse-Session-Token'); }, - set( key, value ) { - this.set( 'headers.X-Parse-Session-Token', value ); + set: function set(value) { + this.set('headers.X-Parse-Session-Token', value); return value; } }) From 138f7fe05853cf67dee7de8a90e637412735b6f6 Mon Sep 17 00:00:00 2001 From: Josh Fester Date: Mon, 10 Aug 2015 14:52:45 -0500 Subject: [PATCH 06/21] updated ember-cli to 1.13.8 --- .watchmanconfig | 3 +++ config/ember-try.js | 35 +++++++++++++++++++++++++++++++++++ ember-cli-build.js | 17 +++++++++++++++++ package.json | 2 +- 4 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 .watchmanconfig create mode 100644 config/ember-try.js create mode 100644 ember-cli-build.js diff --git a/.watchmanconfig b/.watchmanconfig new file mode 100644 index 0000000..5e9462c --- /dev/null +++ b/.watchmanconfig @@ -0,0 +1,3 @@ +{ + "ignore_dirs": ["tmp"] +} diff --git a/config/ember-try.js b/config/ember-try.js new file mode 100644 index 0000000..83dab0f --- /dev/null +++ b/config/ember-try.js @@ -0,0 +1,35 @@ +module.exports = { + scenarios: [ + { + name: 'default', + dependencies: { } + }, + { + name: 'ember-release', + dependencies: { + 'ember': 'components/ember#release' + }, + resolutions: { + 'ember': 'release' + } + }, + { + name: 'ember-beta', + dependencies: { + 'ember': 'components/ember#beta' + }, + resolutions: { + 'ember': 'beta' + } + }, + { + name: 'ember-canary', + dependencies: { + 'ember': 'components/ember#canary' + }, + resolutions: { + 'ember': 'canary' + } + } + ] +}; diff --git a/ember-cli-build.js b/ember-cli-build.js new file mode 100644 index 0000000..d37d64c --- /dev/null +++ b/ember-cli-build.js @@ -0,0 +1,17 @@ +/* global require, module */ +var EmberApp = require('ember-cli/lib/broccoli/ember-addon'); + +module.exports = function(defaults) { + var app = new EmberApp(defaults, { + // Add options here + }); + + /* + This build file specifes the options for the dummy test app of this + addon, located in `/tests/dummy` + This build file does *not* influence how the addon or the app using it + behave. You most likely want to be modifying `./index.js` or app's build file + */ + + return app.toTree(); +}; diff --git a/package.json b/package.json index b0436ef..4c42a9a 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,7 @@ "license": "MIT", "devDependencies": { "broccoli-asset-rev": "^2.0.0", - "ember-cli": "0.2.7", + "ember-cli": "1.13.8", "ember-cli-app-version": "0.3.2", "ember-cli-babel": "^4.0.0", "ember-cli-content-security-policy": "0.3.0", From 2d1283a46c16c13ffe24fa085d0699ceb843d20c Mon Sep 17 00:00:00 2001 From: Josh Fester Date: Mon, 10 Aug 2015 15:40:01 -0500 Subject: [PATCH 07/21] updated to ember 1.13.7 --- bower.json | 2 +- tests/unit/initializers/initialize-test.js | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/bower.json b/bower.json index 43ddc4c..a407dfc 100644 --- a/bower.json +++ b/bower.json @@ -2,7 +2,7 @@ "name": "ember-parse-adapter", "dependencies": { "jquery": "^1.11.1", - "ember": "1.10.0", + "ember": "1.13.7", "ember-data": "1.0.0-beta.15", "ember-resolver": "~0.1.12", "loader.js": "ember-cli/loader.js#3.2.0", diff --git a/tests/unit/initializers/initialize-test.js b/tests/unit/initializers/initialize-test.js index a645237..f8c9bcc 100644 --- a/tests/unit/initializers/initialize-test.js +++ b/tests/unit/initializers/initialize-test.js @@ -16,7 +16,7 @@ module( 'Unit - initializer:initialize', { test( 'Adapter is registered on container', function( assert ) { assert.equal( typeof App.__container__.lookup( 'adapter:-parse' ), 'object' ); - assert.equal( App.__container__._options['adapter:-parse'].instantiate, undefined ); + assert.equal( App.registry._options['adapter:-parse'].instantiate, undefined ); }); test( 'Adapter has header values set to expected values', function( assert ) { @@ -26,25 +26,25 @@ test( 'Adapter has header values set to expected values', function( assert ) { test( 'Serializer is registered on container', function( assert ) { assert.equal( typeof App.__container__.lookup( 'serializer:-parse' ), 'object' ); - assert.equal( App.__container__._options['serializer:-parse'].instantiate, undefined ); + assert.equal( App.registry._options['serializer:-parse'].instantiate, undefined ); }); test( 'Parse Date transform is registered on container', function( assert ) { assert.equal( typeof App.__container__.lookup( 'transform:parse-date' ), 'object' ); - assert.equal( App.__container__._options['transform:parse-date'].instantiate, undefined ); + assert.equal( App.registry._options['transform:parse-date'].instantiate, undefined ); }); test( 'Parse File transform is registered on container', function( assert ) { assert.equal( typeof App.__container__.lookup( 'transform:parse-file' ), 'object' ); - assert.equal( App.__container__._options['transform:parse-file'].instantiate, undefined ); + assert.equal( App.registry._options['transform:parse-file'].instantiate, undefined ); }); test( 'Parse GeoPoint transform is registered on container', function( assert ) { assert.equal( typeof App.__container__.lookup( 'transform:parse-geo-point' ), 'object' ); - assert.equal( App.__container__._options['transform:parse-geo-point'].instantiate, undefined ); + assert.equal( App.registry._options['transform:parse-geo-point'].instantiate, undefined ); }); test( 'Parse User model is registered on container', function( assert ) { - assert.equal( typeof App.__container__._options['model:parse-user'], 'object' ); - assert.equal( App.__container__._options['model:parse-user'].instantiate, undefined ); + assert.equal( typeof App.registry._options['model:parse-user'], 'object' ); + assert.equal( App.registry._options['model:parse-user'].instantiate, undefined ); }); \ No newline at end of file From c1ec9f64e393a33267fb5fd2a1b9dace67ddaec8 Mon Sep 17 00:00:00 2001 From: Josh Fester Date: Mon, 10 Aug 2015 15:40:32 -0500 Subject: [PATCH 08/21] brocfile deprecation --- Brocfile.js | 21 --------------------- 1 file changed, 21 deletions(-) delete mode 100644 Brocfile.js diff --git a/Brocfile.js b/Brocfile.js deleted file mode 100644 index 042a64d..0000000 --- a/Brocfile.js +++ /dev/null @@ -1,21 +0,0 @@ -/* jshint node: true */ -/* global require, module */ - -var EmberAddon = require('ember-cli/lib/broccoli/ember-addon'); - -var app = new EmberAddon(); - -// Use `app.import` to add additional libraries to the generated -// output files. -// -// If you need to use different assets in different -// environments, specify an object as the first parameter. That -// object's keys should be the environment name and the values -// should be the asset to use in that environment. -// -// If the library that you are including contains AMD or ES6 -// modules that you would like to import into your application -// please specify an object with the list of modules as keys -// along with the exports of each module as its value. - -module.exports = app.toTree(); From 0807f782965de991f5864ada26c35acd78cb7855 Mon Sep 17 00:00:00 2001 From: Josh Fester Date: Mon, 10 Aug 2015 16:01:34 -0500 Subject: [PATCH 09/21] updated all dependencies except ember data --- bower.json | 12 ++++++------ package.json | 16 ++++++++-------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/bower.json b/bower.json index a407dfc..5b7e7fd 100644 --- a/bower.json +++ b/bower.json @@ -4,13 +4,13 @@ "jquery": "^1.11.1", "ember": "1.13.7", "ember-data": "1.0.0-beta.15", - "ember-resolver": "~0.1.12", - "loader.js": "ember-cli/loader.js#3.2.0", + "ember-resolver": "~0.1.15", + "loader.js": "ember-cli/loader.js#3.3.0", "ember-cli-shims": "ember-cli/ember-cli-shims#0.0.3", - "ember-cli-test-loader": "ember-cli-test-loader#0.1.3", - "ember-load-initializers": "ember-cli/ember-load-initializers#0.0.2", - "ember-qunit": "0.2.8", + "ember-cli-test-loader": "ember-cli-test-loader#0.2.0", + "ember-load-initializers": "ember-cli/ember-load-initializers#0.1.5", + "ember-qunit": "0.4.9", "ember-qunit-notifications": "0.0.7", - "qunit": "~1.17.1" + "qunit": "~1.18.0" } } \ No newline at end of file diff --git a/package.json b/package.json index 4c42a9a..ef58424 100644 --- a/package.json +++ b/package.json @@ -28,16 +28,16 @@ "broccoli-asset-rev": "^2.0.0", "ember-cli": "1.13.8", "ember-cli-app-version": "0.3.2", - "ember-cli-babel": "^4.0.0", - "ember-cli-content-security-policy": "0.3.0", - "ember-cli-dependency-checker": "0.0.8", - "ember-cli-htmlbars": "0.7.4", - "ember-cli-ic-ajax": "0.1.1", - "ember-cli-inject-live-reload": "^1.3.0", - "ember-cli-qunit": "0.3.9", + "ember-cli-babel": "5.1.3", + "ember-cli-content-security-policy": "0.4.0", + "ember-cli-dependency-checker": "1.0.1", + "ember-cli-htmlbars": "0.7.9", + "ember-cli-ic-ajax": "0.2.1", + "ember-cli-inject-live-reload": "1.3.1", + "ember-cli-qunit": "1.0.0", "ember-cli-uglify": "1.0.1", "ember-data": "1.0.0-beta.15", - "ember-export-application-global": "^1.0.2" + "ember-export-application-global": "1.0.3" }, "keywords": [ "ember-addon", From 43990cea4bddab8dc2780f743fa88efbcf99499a Mon Sep 17 00:00:00 2001 From: Josh Fester Date: Mon, 10 Aug 2015 16:07:22 -0500 Subject: [PATCH 10/21] updated content security policy for dummy app --- tests/dummy/config/environment.js | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/tests/dummy/config/environment.js b/tests/dummy/config/environment.js index 8c7195e..58b8075 100644 --- a/tests/dummy/config/environment.js +++ b/tests/dummy/config/environment.js @@ -20,6 +20,16 @@ module.exports = function(environment) { restApiId: 'BH0IoMxroXSVU3GTMQTVaM4BXjvdX7lKtFujgvzO' } }; + + ENV.contentSecurityPolicy = { + 'default-src': "'none'", + 'script-src': "'self' http://cdnjs.cloudflare.com", + 'font-src': "'self' http://cdnjs.cloudflare.com", + 'connect-src': "'self' https://api.mixpanel.com http://custom-api.local", + 'img-src': "'self'", + 'style-src': "'self' 'unsafe-inline' http://cdnjs.cloudflare.com", + 'media-src': "'self'" + } if (environment === 'development') { // ENV.APP.LOG_RESOLVER = true; From f8c2484a88c32eb11dc0b435b705128aa3addba2 Mon Sep 17 00:00:00 2001 From: Josh Fester Date: Mon, 10 Aug 2015 16:13:04 -0500 Subject: [PATCH 11/21] whoops didn't finish the content security policy --- tests/dummy/config/environment.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/dummy/config/environment.js b/tests/dummy/config/environment.js index 58b8075..da6024d 100644 --- a/tests/dummy/config/environment.js +++ b/tests/dummy/config/environment.js @@ -25,7 +25,7 @@ module.exports = function(environment) { 'default-src': "'none'", 'script-src': "'self' http://cdnjs.cloudflare.com", 'font-src': "'self' http://cdnjs.cloudflare.com", - 'connect-src': "'self' https://api.mixpanel.com http://custom-api.local", + 'connect-src': "'self' https://api.parse.com", 'img-src': "'self'", 'style-src': "'self' 'unsafe-inline' http://cdnjs.cloudflare.com", 'media-src': "'self'" From 1afda4673348f7fdec3626cac42212f40caefdb3 Mon Sep 17 00:00:00 2001 From: Josh Fester Date: Mon, 10 Aug 2015 16:44:31 -0500 Subject: [PATCH 12/21] a new record with no hasmany relationships yet should send nothing instead of an empty array --- addon/serializers/application.js | 2 +- tests/dummy/app/controllers/hasmany.js | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/addon/serializers/application.js b/addon/serializers/application.js index 86e07af..0abc7fa 100644 --- a/addon/serializers/application.js +++ b/addon/serializers/application.js @@ -225,7 +225,7 @@ export default DS.RESTSerializer.extend({ } } else { - json[key] = []; + json[key] = null; } } diff --git a/tests/dummy/app/controllers/hasmany.js b/tests/dummy/app/controllers/hasmany.js index 14b2993..bb29a36 100644 --- a/tests/dummy/app/controllers/hasmany.js +++ b/tests/dummy/app/controllers/hasmany.js @@ -11,6 +11,8 @@ export default Ember.Controller.extend({ controller = this; tiger.set( 'name', this.get( 'name' ) ); + + console.log(tiger); tiger.save().then( function() { controller.set( 'saved', true ); From c6aec484abf5000935a3aabd495c7d0910f9f7df Mon Sep 17 00:00:00 2001 From: Josh Fester Date: Mon, 10 Aug 2015 16:47:42 -0500 Subject: [PATCH 13/21] dummy app needs to save tiger after adding a stripe --- tests/dummy/app/controllers/hasmany.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/tests/dummy/app/controllers/hasmany.js b/tests/dummy/app/controllers/hasmany.js index bb29a36..5166657 100644 --- a/tests/dummy/app/controllers/hasmany.js +++ b/tests/dummy/app/controllers/hasmany.js @@ -11,8 +11,6 @@ export default Ember.Controller.extend({ controller = this; tiger.set( 'name', this.get( 'name' ) ); - - console.log(tiger); tiger.save().then( function() { controller.set( 'saved', true ); @@ -23,7 +21,7 @@ export default Ember.Controller.extend({ var tiger = this.get( 'model' ), stripe = tiger.get( 'stripes' ).createRecord(); - stripe.save().then( function( tiger ) { + stripe.save().then( function( stripe ) { tiger.save(); }); } From 382342203d5986d9c712bf1f75240242aea72567 Mon Sep 17 00:00:00 2001 From: Josh Fester Date: Mon, 10 Aug 2015 17:15:03 -0500 Subject: [PATCH 14/21] update computed property for sessionToken. update test to expect null for an empty hasmany relationship --- addon/adapters/application.js | 2 +- tests/unit/adapters/application-test.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/addon/adapters/application.js b/addon/adapters/application.js index 56d65be..f8b7e19 100644 --- a/addon/adapters/application.js +++ b/addon/adapters/application.js @@ -177,7 +177,7 @@ export default DS.RESTAdapter.extend({ get: function get() { return this.get('headers.X-Parse-Session-Token'); }, - set: function set(value) { + set: function set(key, value) { this.set('headers.X-Parse-Session-Token', value); return value; } diff --git a/tests/unit/adapters/application-test.js b/tests/unit/adapters/application-test.js index 2f9ed85..5d96c9f 100644 --- a/tests/unit/adapters/application-test.js +++ b/tests/unit/adapters/application-test.js @@ -266,7 +266,7 @@ test( 'Create Record', function( assert ) { // Passing comments as an Ember array. This is due to a bug in Ember-Data // expecting an Ember array for data and not a raw array: // https://github.com/emberjs/data/pull/1939 - assert.deepEqual( ajaxHash.data, {comments: Ember.A(), title: 'Testing Create'}, 'raw data is posted' ); + assert.deepEqual( ajaxHash.data, {comments: null, title: 'Testing Create'}, 'raw data is posted' ); ajaxHash.success({ objectId : 'created321', From dbac273b33e273f0e092a6af5a11e58595e92394 Mon Sep 17 00:00:00 2001 From: Josh Fester Date: Mon, 10 Aug 2015 17:58:54 -0500 Subject: [PATCH 15/21] hasmany relationships now work --- addon/serializers/application.js | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/addon/serializers/application.js b/addon/serializers/application.js index a03822e..24fe926 100644 --- a/addon/serializers/application.js +++ b/addon/serializers/application.js @@ -86,7 +86,7 @@ export default DS.RESTSerializer.extend({ // the links property so the adapter can async call the // relationship. // The adapter findHasMany has been overridden to make use of this. - if(options.relation) { + //if(options.relation) { // hash[key] contains the response of Parse.com: eg {__type: Relation, className: MyParseClassName} // this is an object that make ember-data fail, as it expects nothing or an array ids that represent the records hash[key] = []; @@ -98,7 +98,7 @@ export default DS.RESTSerializer.extend({ } hash.links[key] = JSON.stringify({typeKey: relationship.type.typeKey, key: key}); - } + //} if ( options.array ) { // Parse will return [null] for empty relationships @@ -178,13 +178,17 @@ export default DS.RESTSerializer.extend({ if ( hasMany && hasMany.get( 'length' ) > 0 ) { json[key] = { 'objects': [] }; - if ( options.relation ) { + // an array is not a relationship, right? + + /*if ( options.relation ) { json[key].__op = 'AddRelation'; } if ( options.array ) { json[key].__op = 'AddUnique'; - } + }*/ + + json[key].__op = 'AddRelation'; hasMany.forEach( function( child ) { json[key].objects.push({ From de16194a7a79c19e1293ba1059c76dd833a9b30d Mon Sep 17 00:00:00 2001 From: Josh Fester Date: Mon, 10 Aug 2015 20:08:13 -0500 Subject: [PATCH 16/21] updated to ember data 1.0.0-beta.16 --- addon/adapters/application.js | 18 +++++++++--------- bower.json | 2 +- package.json | 2 +- tests/dummy/app/controllers/hasmany.js | 1 + tests/dummy/app/models/stripe.js | 2 +- tests/dummy/app/models/tiger.js | 2 +- tests/dummy/app/templates/hasmany.hbs | 2 +- 7 files changed, 15 insertions(+), 14 deletions(-) diff --git a/addon/adapters/application.js b/addon/adapters/application.js index f8b7e19..853f4b0 100644 --- a/addon/adapters/application.js +++ b/addon/adapters/application.js @@ -42,9 +42,8 @@ export default DS.RESTAdapter.extend({ * properties onto existing data so that the record maintains * latest data. */ - createRecord: function( store, type, record ) { + createRecord: function( store, type, snapshot ) { var serializer = store.serializerFor( type.typeKey ), - snapshot = record._createSnapshot(), data = {}, adapter = this; @@ -69,10 +68,9 @@ export default DS.RESTAdapter.extend({ * properties onto existing data so that the record maintains * latest data. */ - updateRecord: function(store, type, record) { + updateRecord: function(store, type, snapshot) { var serializer = store.serializerFor( type.typeKey ), - snapshot = record._createSnapshot(), - id = record.get( 'id' ), + id = snapshot.id, sendDeletes = false, deleteds = {}, data = {}, @@ -129,20 +127,22 @@ export default DS.RESTAdapter.extend({ * Implementation of a hasMany that provides a Relation query for Parse * objects. */ - findHasMany: function( store, record, relatedInfo ) { - var relatedInfo_ = JSON.parse( relatedInfo ), + findHasMany: function( store, snapshot, url/*, relationship */ ) { + var relatedInfo_ = JSON.parse( url ), query = { where: { '$relatedTo': { 'object': { '__type' : 'Pointer', - 'className' : this.parseClassName( record.typeKey ), - 'objectId' : record.get( 'id' ) + 'className' : this.parseClassName( snapshot.typeKey ), + 'objectId' : snapshot.id }, key: relatedInfo_.key } } }; + + // the request is to the related type and not the type for the record. // the query is where there is a pointer to this record. diff --git a/bower.json b/bower.json index 5b7e7fd..04efc8a 100644 --- a/bower.json +++ b/bower.json @@ -3,7 +3,7 @@ "dependencies": { "jquery": "^1.11.1", "ember": "1.13.7", - "ember-data": "1.0.0-beta.15", + "ember-data": "1.0.0-beta.16", "ember-resolver": "~0.1.15", "loader.js": "ember-cli/loader.js#3.3.0", "ember-cli-shims": "ember-cli/ember-cli-shims#0.0.3", diff --git a/package.json b/package.json index ef58424..48bdfd4 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,7 @@ "ember-cli-inject-live-reload": "1.3.1", "ember-cli-qunit": "1.0.0", "ember-cli-uglify": "1.0.1", - "ember-data": "1.0.0-beta.15", + "ember-data": "1.0.0-beta.16", "ember-export-application-global": "1.0.3" }, "keywords": [ diff --git a/tests/dummy/app/controllers/hasmany.js b/tests/dummy/app/controllers/hasmany.js index 5166657..44fe322 100644 --- a/tests/dummy/app/controllers/hasmany.js +++ b/tests/dummy/app/controllers/hasmany.js @@ -25,5 +25,6 @@ export default Ember.Controller.extend({ tiger.save(); }); } + } }); \ No newline at end of file diff --git a/tests/dummy/app/models/stripe.js b/tests/dummy/app/models/stripe.js index a8f780e..d777d50 100644 --- a/tests/dummy/app/models/stripe.js +++ b/tests/dummy/app/models/stripe.js @@ -2,5 +2,5 @@ import Ember from 'ember'; import DS from 'ember-data'; export default DS.Model.extend({ - tiger: DS.belongsTo( 'tiger' ) + tiger: DS.belongsTo( 'tiger', { async: true } ) }); \ No newline at end of file diff --git a/tests/dummy/app/models/tiger.js b/tests/dummy/app/models/tiger.js index ae11fe4..d1885af 100644 --- a/tests/dummy/app/models/tiger.js +++ b/tests/dummy/app/models/tiger.js @@ -3,5 +3,5 @@ import DS from 'ember-data'; export default DS.Model.extend({ name: DS.attr( 'string' ), - stripes: DS.hasMany( 'stripe' ) + stripes: DS.hasMany( 'stripe', { async: true } ) }); \ No newline at end of file diff --git a/tests/dummy/app/templates/hasmany.hbs b/tests/dummy/app/templates/hasmany.hbs index 3474da9..415f126 100644 --- a/tests/dummy/app/templates/hasmany.hbs +++ b/tests/dummy/app/templates/hasmany.hbs @@ -26,4 +26,4 @@ -{{/if}} +{{/if}} \ No newline at end of file From a191d64eeab8adb5bcb7e61dc79be981ed9e8a38 Mon Sep 17 00:00:00 2001 From: Josh Fester Date: Mon, 10 Aug 2015 20:30:55 -0500 Subject: [PATCH 17/21] updated to ember data 1.0.0-beta.18 --- addon/adapters/application.js | 2 +- addon/serializers/application.js | 2 +- bower.json | 2 +- package.json | 2 +- tests/dummy/app/controllers/hasmany.js | 17 +++++++++++++++++ tests/dummy/app/templates/hasmany.hbs | 14 +++++++++++++- 6 files changed, 34 insertions(+), 5 deletions(-) diff --git a/addon/adapters/application.js b/addon/adapters/application.js index 853f4b0..082deb1 100644 --- a/addon/adapters/application.js +++ b/addon/adapters/application.js @@ -21,7 +21,7 @@ export default DS.RESTAdapter.extend({ classesPath: 'classes', pathForType: function( type ) { - if ( 'parseUser' === type ) { + if ( 'parseUser' === type || 'parse-user' === type ) { return 'users'; } else if ( 'login' === type ) { return 'login'; diff --git a/addon/serializers/application.js b/addon/serializers/application.js index 24fe926..c390bf3 100644 --- a/addon/serializers/application.js +++ b/addon/serializers/application.js @@ -19,7 +19,7 @@ export default DS.RESTSerializer.extend({ return this._super( store, primaryType, namespacedPayload, recordId ); }, - typeForRoot: function( key ) { + modelNameFromPayloadKey: function( key ) { return Ember.String.dasherize( Ember.String.singularize( key ) ); }, diff --git a/bower.json b/bower.json index 04efc8a..db0d805 100644 --- a/bower.json +++ b/bower.json @@ -3,7 +3,7 @@ "dependencies": { "jquery": "^1.11.1", "ember": "1.13.7", - "ember-data": "1.0.0-beta.16", + "ember-data": "1.0.0-beta.18", "ember-resolver": "~0.1.15", "loader.js": "ember-cli/loader.js#3.3.0", "ember-cli-shims": "ember-cli/ember-cli-shims#0.0.3", diff --git a/package.json b/package.json index 48bdfd4..1137b3b 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,7 @@ "ember-cli-inject-live-reload": "1.3.1", "ember-cli-qunit": "1.0.0", "ember-cli-uglify": "1.0.1", - "ember-data": "1.0.0-beta.16", + "ember-data": "1.0.0-beta.18", "ember-export-application-global": "1.0.3" }, "keywords": [ diff --git a/tests/dummy/app/controllers/hasmany.js b/tests/dummy/app/controllers/hasmany.js index 44fe322..a3de751 100644 --- a/tests/dummy/app/controllers/hasmany.js +++ b/tests/dummy/app/controllers/hasmany.js @@ -24,6 +24,23 @@ export default Ember.Controller.extend({ stripe.save().then( function( stripe ) { tiger.save(); }); + }, + + getTiger: function() { + this.store.find('tiger', 'PSXJQXnnyU') + .then(function(tiger) { + console.log(tiger); + }); + }, + + getStripes: function() { + this.store.find('tiger', 'PSXJQXnnyU') + .then(function(tiger) { + return tiger.get('stripes'); + }) + .then(function(stripes) { + console.log(stripes); + }); } } diff --git a/tests/dummy/app/templates/hasmany.hbs b/tests/dummy/app/templates/hasmany.hbs index 415f126..48cb9d1 100644 --- a/tests/dummy/app/templates/hasmany.hbs +++ b/tests/dummy/app/templates/hasmany.hbs @@ -26,4 +26,16 @@ -{{/if}} \ No newline at end of file +{{/if}} + +
+
+ +
+
+ +
+
+ +
+
\ No newline at end of file From 332c6a75021ccb8b5a03bc871e8c104ac38c4135 Mon Sep 17 00:00:00 2001 From: Josh Fester Date: Mon, 10 Aug 2015 20:40:42 -0500 Subject: [PATCH 18/21] initial changes for update to ember data 1.0.0-beta.19 --- addon/models/parse-user.js | 14 +++++++------- bower.json | 2 +- package.json | 2 +- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/addon/models/parse-user.js b/addon/models/parse-user.js index 9d6f549..f926a63 100644 --- a/addon/models/parse-user.js +++ b/addon/models/parse-user.js @@ -18,7 +18,7 @@ var ParseUser = DS.Model.extend({ ParseUser.reopenClass({ requestPasswordReset: function( email ) { - var adapter = this.get( 'store' ).adapterFor( this ), + var adapter = this.get( 'store' ).adapterFor( 'parse-user' ), data = { email: email }; return adapter.ajax( adapter.buildURL( 'requestPasswordReset' ), 'POST', { data:data } )['catch'] ( @@ -30,8 +30,8 @@ ParseUser.reopenClass({ login: function( store, data ) { var model = this, - adapter = store.adapterFor( model ), - serializer = store.serializerFor( model ); + adapter = store.adapterFor( 'parse-user' ), + serializer = store.serializerFor( 'parse-user' ); if ( Ember.isEmpty( this.typeKey ) ) { throw new Error( 'Parse login must be called on a model fetched via store.modelFor' ); @@ -40,7 +40,7 @@ ParseUser.reopenClass({ return adapter.ajax( adapter.buildURL( 'login' ), 'GET', { data: data } ).then( function( response ) { serializer.normalize( model, response ); - var record = store.push( model, response ); + var record = store.push( 'parse-user', response ); return record; }, function( response ) { @@ -51,8 +51,8 @@ ParseUser.reopenClass({ signup: function( store, data ) { var model = this, - adapter = store.adapterFor(model), - serializer = store.serializerFor(model); + adapter = store.adapterFor('parse-user'), + serializer = store.serializerFor('parse-user'); if ( Ember.isEmpty( this.typeKey ) ) { throw new Error( 'Parse signup must be called on a model fetched via store.modelFor' ); @@ -63,7 +63,7 @@ ParseUser.reopenClass({ serializer.normalize( model, response ); response.email = response.email || data.email; response.username = response.username || data.username; - var record = store.push( model, response ); + var record = store.push( 'parse-user', response ); return record; }, function( response ) { diff --git a/bower.json b/bower.json index db0d805..ffd2c57 100644 --- a/bower.json +++ b/bower.json @@ -3,7 +3,7 @@ "dependencies": { "jquery": "^1.11.1", "ember": "1.13.7", - "ember-data": "1.0.0-beta.18", + "ember-data": "1.0.0-beta.19", "ember-resolver": "~0.1.15", "loader.js": "ember-cli/loader.js#3.3.0", "ember-cli-shims": "ember-cli/ember-cli-shims#0.0.3", diff --git a/package.json b/package.json index 1137b3b..fa195fc 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,7 @@ "ember-cli-inject-live-reload": "1.3.1", "ember-cli-qunit": "1.0.0", "ember-cli-uglify": "1.0.1", - "ember-data": "1.0.0-beta.18", + "ember-data": "1.0.0-beta.19", "ember-export-application-global": "1.0.3" }, "keywords": [ From eb99a8d8f329bc61656f1b58330d81337d4a39ab Mon Sep 17 00:00:00 2001 From: Josh Fester Date: Mon, 10 Aug 2015 21:20:13 -0500 Subject: [PATCH 19/21] working and passing tests --- addon/adapters/application.js | 4 ++-- addon/serializers/application.js | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/addon/adapters/application.js b/addon/adapters/application.js index 082deb1..2001d47 100644 --- a/addon/adapters/application.js +++ b/addon/adapters/application.js @@ -127,7 +127,7 @@ export default DS.RESTAdapter.extend({ * Implementation of a hasMany that provides a Relation query for Parse * objects. */ - findHasMany: function( store, snapshot, url/*, relationship */ ) { + findHasMany: function( store, snapshot, url, relationship ) { var relatedInfo_ = JSON.parse( url ), query = { where: { @@ -146,7 +146,7 @@ export default DS.RESTAdapter.extend({ // the request is to the related type and not the type for the record. // the query is where there is a pointer to this record. - return this.ajax( this.buildURL( relatedInfo_.typeKey ), "GET", { data: query } ); + return this.ajax( this.buildURL( relationship.type ), "GET", { data: query } ); }, /** diff --git a/addon/serializers/application.js b/addon/serializers/application.js index c390bf3..4f7d003 100644 --- a/addon/serializers/application.js +++ b/addon/serializers/application.js @@ -155,7 +155,7 @@ export default DS.RESTSerializer.extend({ if (belongsToId) { json[key] = { '__type' : 'Pointer', - 'className' : this.parseClassName(relationship.type.typeKey), + 'className' : this.parseClassName(relationship.type), 'objectId' : belongsToId }; } From bfce1229ed6d0669e18f5bc03ba8b5fab9cc8cf3 Mon Sep 17 00:00:00 2001 From: Josh Fester Date: Mon, 10 Aug 2015 21:24:56 -0500 Subject: [PATCH 20/21] keep forgetting to remove my personal tests in the dummy app --- tests/dummy/app/controllers/hasmany.js | 17 ----------------- tests/dummy/app/templates/hasmany.hbs | 14 +------------- 2 files changed, 1 insertion(+), 30 deletions(-) diff --git a/tests/dummy/app/controllers/hasmany.js b/tests/dummy/app/controllers/hasmany.js index a3de751..44fe322 100644 --- a/tests/dummy/app/controllers/hasmany.js +++ b/tests/dummy/app/controllers/hasmany.js @@ -24,23 +24,6 @@ export default Ember.Controller.extend({ stripe.save().then( function( stripe ) { tiger.save(); }); - }, - - getTiger: function() { - this.store.find('tiger', 'PSXJQXnnyU') - .then(function(tiger) { - console.log(tiger); - }); - }, - - getStripes: function() { - this.store.find('tiger', 'PSXJQXnnyU') - .then(function(tiger) { - return tiger.get('stripes'); - }) - .then(function(stripes) { - console.log(stripes); - }); } } diff --git a/tests/dummy/app/templates/hasmany.hbs b/tests/dummy/app/templates/hasmany.hbs index 48cb9d1..415f126 100644 --- a/tests/dummy/app/templates/hasmany.hbs +++ b/tests/dummy/app/templates/hasmany.hbs @@ -26,16 +26,4 @@ -{{/if}} - -
-
- -
-
- -
-
- -
-
\ No newline at end of file +{{/if}} \ No newline at end of file From 6b28a04a3e07d84a80cddcb872c2538847f71fd0 Mon Sep 17 00:00:00 2001 From: Josh Fester Date: Mon, 10 Aug 2015 21:47:56 -0500 Subject: [PATCH 21/21] change relationship.type.typeKey to relationship.type in normalizeRelationships --- addon/serializers/application.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addon/serializers/application.js b/addon/serializers/application.js index 4f7d003..0798744 100644 --- a/addon/serializers/application.js +++ b/addon/serializers/application.js @@ -97,7 +97,7 @@ export default DS.RESTSerializer.extend({ hash.links = {}; } - hash.links[key] = JSON.stringify({typeKey: relationship.type.typeKey, key: key}); + hash.links[key] = JSON.stringify({typeKey: relationship.type, key: key}); //} if ( options.array ) {