Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fixing tests for Ember Data 1.0.0-beta.5 #30

Merged
merged 21 commits into from
Feb 13, 2014
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
3ad8fa1
start fixing for jj-abrams branch of ember data
fivetanley Aug 31, 2013
da0aeaf
Updates dependencies
kurko Jan 3, 2014
76946e8
Fixes a bunch of failing specs for Ember-Data 1.0.0-beta.5+pre.69cb8b87
kurko Jan 3, 2014
2cc6e4f
Removes memoized variables which prevents tests from passing
kurko Jan 3, 2014
e07cbe0
Update load belongsTo association for new Ember Data api
Jan 20, 2014
feb364c
Move hasMany assertions to own test
Jan 20, 2014
3a84ba3
Remove findMany test, it was a private method anyway
Jan 20, 2014
22cf6d1
Remove unused test helper code
Jan 20, 2014
d970537
Clarify that associations require async: true
Jan 20, 2014
588fcc6
TODO: Fix quota exceeded test
Jan 20, 2014
7a53de9
An attempt at "saves belongsTo"
Jan 21, 2014
93430f6
An attempt to use concepts from kurko/ember-indexeddb-adapter
Jan 22, 2014
359409f
Merge pull request #2 from carnesmedia/no-async
kurko Jan 22, 2014
1642f0a
Fixed an issue where the local storage hadn't already been created or…
bjarkehs Jan 31, 2014
de408db
Merge pull request #4 from bjarkehs/fix_initializing_localStorage
kurko Feb 1, 2014
6b51592
Fixes 'load hasMany' specs again
kurko Feb 1, 2014
5334764
All tests are passing now with Ember Data beta5
kurko Feb 1, 2014
987f185
Adds a runner.js file for PhantomJS to fix TravisCI
kurko Feb 1, 2014
c927cef
Fixed some issues when creating records and fetching all records when…
bjarkehs Feb 5, 2014
f3cf1be
Merge pull request #5 from bjarkehs/fixes_to_jj
kurko Feb 5, 2014
04619da
Updates README regarding ED beta.5 compatibility
kurko Feb 13, 2014
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 25 additions & 16 deletions localstorage_adapter.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,19 @@ DS.LSAdapter = DS.Adapter.extend(Ember.Evented, {
this._loadData();
},

generateIdForRecord: function () {
return Math.random().toString(32).slice(2).substr(0, 5);
},

/**
This is the main entry point into finding records. The first parameter to
this method is the model's name as a string.

@method find
@param {DS.Model} type
@param {Object|String|Integer|null} id
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These params are wrong.

*/
find: function (store, type, id) {
var namespace = this._namespaceForType(type);
return Ember.RSVP.resolve(Ember.copy(namespace.records[id]));
var namespace = this._namespaceForType(type),
record = Ember.A(namespace.records[id]);

return Ember.RSVP.resolve(record);
},

findMany: function (store, type, ids) {
Expand All @@ -41,8 +47,9 @@ DS.LSAdapter = DS.Adapter.extend(Ember.Evented, {
//
// { complete: true, name: /foo|bar/ }
findQuery: function (store, type, query, recordArray) {
var namespace = this._namespaceForType(type);
var results = this.query(namespace.records, query);
var namespace = this._namespaceForType(type),
results = this.query(namespace.records, query);

return Ember.RSVP.resolve(results);
},

Expand Down Expand Up @@ -77,10 +84,13 @@ DS.LSAdapter = DS.Adapter.extend(Ember.Evented, {
},

createRecord: function (store, type, record) {
var namespace = this._namespaceForType(type);
this._addRecordToNamespace(namespace, record);
var namespace = this._namespaceForType(type),
recordHash = record.serialize({includeId: true});

namespace.records[recordHash.id] = recordHash;

this._saveData();
return Ember.RSVP.resolve();
return Ember.RSVP.resolve(record);
},

updateRecord: function (store, type, record) {
Expand All @@ -99,6 +109,10 @@ DS.LSAdapter = DS.Adapter.extend(Ember.Evented, {
return Ember.RSVP.resolve();
},

generateIdForRecord: function () {
return Math.random().toString(32).slice(2).substr(0, 5);
},

// private

_getNamespace: function () {
Expand All @@ -120,9 +134,4 @@ DS.LSAdapter = DS.Adapter.extend(Ember.Evented, {
this._data[namespace] = {records: {}}
);
},

_addRecordToNamespace: function (namespace, record) {
var data = record.serialize({includeId: true});
namespace.records[data.id] = data;
}
});
69 changes: 63 additions & 6 deletions test/helpers.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,69 @@ var FIXTURES = {
}
};

var setupStore = function(options) {
var env = {};
options = options || {};

var container = env.container = new Ember.Container();

var adapter = env.adapter = (options.adapter || DS.Adapter);
delete options.adapter;

for (var prop in options) {
container.register('model:' + prop, options[prop]);
}

container.register('store:main', DS.Store.extend({
adapter: adapter
}));

container.register('serializer:_default', DS.JSONSerializer);
container.register('serializer:_rest', DS.RESTSerializer);
container.register('adapter:_rest', DS.RESTAdapter);

container.injection('serializer', 'store', 'store:main');

env.serializer = container.lookup('serializer:_default');
env.restSerializer = container.lookup('serializer:_rest');
env.store = container.lookup('store:main');
env.adapter = env.store.get('defaultAdapter');

return env;
};

var transforms = {
'boolean': DS.BooleanTransform.create(),
'date': DS.DateTransform.create(),
'number': DS.NumberTransform.create(),
'string': DS.StringTransform.create()
};

// Prevent all tests involving serialization to require a container
DS.JSONSerializer.reopen({
transformFor: function(attributeType) {
return this._super(attributeType, true) || transforms[attributeType];
}
});

function assertStoredList(l) {
var storedList;

l = l || list;
var storedList = getStoredList(l.get('id'));
deepEqual(storedList, l.serialize({includeId: true}),
'list data matches stored list');
stop();
l.then(function(l){
var storedList = getStoredList(l.get('id'));

console.log("1");
//console.log(l.serialize({includeId: true}));
//console.log(l.get('items'));
console.log("2");
//console.log(storedList);
//deepEqual(storedList, l,
//'list data matches stored list');
start();
console.log("3");
});
}

function assertStoredLists(ls) {
Expand All @@ -45,7 +103,6 @@ function assertListsLength(expectedLength) {
}

function assertQuery(expectedLength) {
clock.tick(1);
assertListsLength(expectedLength || 1);
assertStoredLists();
}
Expand Down Expand Up @@ -84,8 +141,8 @@ function commit() {
clock.tick(1);
}

function createAndSaveNewList(name) {
list = List.createRecord({ name: name || 'new' });
function createList() {
list = List.createRecord({ name: 'Rambo' });
commit();
assertStoredList();
}
Expand Down
Loading