diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 46ee1e5..6a1a0f2 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -18,6 +18,7 @@ When submitting issues on GitHub, please include as much detail as possible to m 1. `cd js-data-sql; npm install; bower install;` 1. Write your code, including relevant documentation and tests 1. Run `grunt test` (build and test) + - You need io.js or Node 4.x that includes generator support without a flag 1. Your code will be linted and checked for formatting, the tests will be run 1. The `dist/` folder & files will be generated, do NOT commit `dist/*`! They will be committed when a release is cut. 1. Submit your PR and we'll review! diff --git a/README.md b/README.md index cfbb7ce..e75af03 100644 --- a/README.md +++ b/README.md @@ -76,6 +76,7 @@ When submitting issues on GitHub, please include as much detail as possible to m 1. `cd js-data-sql; npm install; bower install;` 1. Write your code, including relevant documentation and tests 1. Run `grunt test` (build and test) + - You need io.js or Node 4.x that includes generator support without a flag 1. Your code will be linted and checked for formatting, the tests will be run 1. The `dist/` folder & files will be generated, do NOT commit `dist/*`! They will be committed when a release is cut. 1. Submit your PR and we'll review! diff --git a/circle.yml b/circle.yml index 2b1af1c..629d1cc 100644 --- a/circle.yml +++ b/circle.yml @@ -1,3 +1,7 @@ +machine: + node: + version: 4.1.0 + database: override: - mysql -u ubuntu circle_test < test/setup.sql diff --git a/mocha.start.js b/mocha.start.js index 142323e..5a420d2 100644 --- a/mocha.start.js +++ b/mocha.start.js @@ -6,6 +6,8 @@ assert.equalObjects = function (a, b, m) { assert.deepEqual(JSON.parse(JSON.stringify(a)), JSON.parse(JSON.stringify(b)), m || 'Objects should be equal!'); }; var mocha = require('mocha'); +var coMocha = require('co-mocha'); +coMocha(mocha); var sinon = require('sinon'); var JSData = require('js-data'); JSData.DSUtils.Promise = require('bluebird'); diff --git a/package.json b/package.json index d95c9cf..e080b8b 100644 --- a/package.json +++ b/package.json @@ -30,6 +30,7 @@ "babel-loader": "5.3.2", "bluebird": "2.10.0", "chai": "3.2.0", + "co-mocha": "^1.1.2", "grunt": "0.4.5", "grunt-contrib-watch": "0.6.1", "grunt-karma-coveralls": "2.5.4", diff --git a/test/create.spec.js b/test/create.spec.js index d196b9d..e9fc6b0 100644 --- a/test/create.spec.js +++ b/test/create.spec.js @@ -1,27 +1,23 @@ describe('DSSqlAdapter#create', function () { - it('should create a user in a sql db', function () { - var id; - return adapter.create(User, {name: 'John'}).then(function (user) { - id = user.id; - assert.equal(user.name, 'John'); - assert.isDefined(user.id); - return adapter.find(User, user.id); - }) - .then(function (user) { - assert.equal(user.name, 'John'); - assert.isDefined(user.id); - assert.equalObjects(user, {id: id, name: 'John', age: null, profileId: null}); - return adapter.destroy(User, user.id); - }) - .then(function (user) { - assert.isFalse(!!user); - return adapter.find(User, id); - }) - .then(function () { - throw new Error('Should not have reached here!'); - }) - .catch(function (err) { - assert.equal(err.message, 'Not Found!'); - }); + it('should create a user in a sql db', function* () { + var createUser = yield adapter.create(User, {name: 'John'}); + var id = createUser.id; + assert.equal(createUser.name, 'John'); + assert.isDefined(createUser.id); + + var findUser = yield adapter.find(User, createUser.id); + assert.equal(findUser.name, 'John'); + assert.isDefined(findUser.id); + assert.equalObjects(findUser, {id: id, name: 'John', age: null, profileId: null}); + + var destoryUser = yield adapter.destroy(User, findUser.id); + assert.isFalse(!!destoryUser); + + try { + var findUser2 = yield adapter.find(User, id); + throw new Error('Should not have reached here!'); + } catch(err) { + assert.equal(err.message, 'Not Found!'); + } }); }); diff --git a/test/destroy.spec.js b/test/destroy.spec.js index 21b989c..91c75d4 100644 --- a/test/destroy.spec.js +++ b/test/destroy.spec.js @@ -1,20 +1,16 @@ describe('DSSqlAdapter#destroy', function () { - it('should destroy a user from a Sql db', function () { - var id; - return adapter.create(User, {name: 'John'}) - .then(function (user) { - id = user.id; - return adapter.destroy(User, user.id); - }) - .then(function (user) { - assert.isFalse(!!user); - return adapter.find(User, id); - }) - .then(function () { - throw new Error('Should not have reached here!'); - }) - .catch(function (err) { - assert.equal(err.message, 'Not Found!'); - }); + it('should destroy a user from a Sql db', function* () { + var createUser = yield adapter.create(User, {name: 'John'}) + var id = createUser.id; + + var destroyUser = yield adapter.destroy(User, createUser.id); + assert.isFalse(!!destroyUser); + + try { + var findUser = yield adapter.find(User, id); + throw new Error('Should not have reached here!'); + } catch (err) { + assert.equal(err.message, 'Not Found!'); + } }); }); diff --git a/test/destroyAll.spec.js b/test/destroyAll.spec.js index 49cb71a..171dcf1 100644 --- a/test/destroyAll.spec.js +++ b/test/destroyAll.spec.js @@ -1,24 +1,14 @@ describe('DSSqlAdapter#destroyAll', function () { - it('should destroy all items', function () { - var id; - return adapter.create(User, {name: 'John'}) - .then(function (user) { - id = user.id; - return adapter.findAll(User, { - name: 'John' - }); - }).then(function (users) { - assert.equal(users.length, 1); - assert.equalObjects(users[0], {id: id, name: 'John', age: null, profileId: null}); - return adapter.destroyAll(User, { - name: 'John' - }); - }).then(function () { - return adapter.findAll(User, { - name: 'John' - }); - }).then(function (users) { - assert.equal(users.length, 0); - }); + it('should destroy all items', function* () { + var createUser = yield adapter.create(User, {name: 'John'}); + var id = createUser.id; + + var findUsers = yield adapter.findAll(User, { name: 'John' }); + assert.equal(findUsers.length, 1); + assert.equalObjects(findUsers[0], {id: id, name: 'John', age: null, profileId: null}); + + var destroyUser = yield adapter.destroyAll(User, { name: 'John' }); + var findUsers2 = yield adapter.findAll(User, { name: 'John' }); + assert.equal(findUsers2.length, 0); }); }); diff --git a/test/find.spec.js b/test/find.spec.js index 84a0bf3..e7e2fd9 100644 --- a/test/find.spec.js +++ b/test/find.spec.js @@ -1,74 +1,85 @@ var Promise = require('bluebird'); describe('DSSqlAdapter#find', function () { - it('should find a user in a Sql db', function () { - var id, id2, _user, _post, _comments; - return adapter.create(User, {name: 'John'}) - .then(function (user) { - _user = user; - id = user.id; - assert.equal(user.name, 'John'); - assert.isDefined(user.id); - return adapter.find(User, user.id); + it('should find a user in a Sql db', function* () { + var user = yield adapter.create(User, {name: 'John'}); + var userId = user.id; + assert.equal(user.name, 'John'); + assert.isDefined(user.id); + + var user2 = yield adapter.find(User, user.id); + assert.equal(user2.name, 'John'); + assert.isDefined(user2.id); + assert.equalObjects(user2, {id: userId, name: 'John', age: null, profileId: null}); + + var post = yield adapter.create(Post, { content: 'test', userId: userId }); + var postId = post.id; + assert.equal(post.content, 'test'); + assert.isDefined(post.id); + assert.isDefined(post.userId); + + var comments = yield [ + adapter.create(Comment, { + content: 'test2', + postId: post.id, + userId: user.id + }), + adapter.create(Comment, { + content: 'test3', + postId: post.id, + userId: user.id }) - .then(function (user) { - assert.equal(user.name, 'John'); - assert.isDefined(user.id); - assert.equalObjects(user, {id: id, name: 'John', age: null, profileId: null}); - return adapter.create(Post, { - content: 'test', - userId: user.id - }); - }) - .then(function (post) { - _post = post; - id2 = post.id; - assert.equal(post.content, 'test'); - assert.isDefined(post.id); - assert.isDefined(post.userId); - return Promise.all([ - adapter.create(Comment, { - content: 'test2', - postId: post.id, - userId: _user.id - }), - adapter.create(Comment, { - content: 'test3', - postId: post.id, - userId: _user.id - }) - ]); - }) - .then(function (comments) { - _comments = comments; - _comments.sort(function (a, b) { - return a.content > b.content; - }); - return adapter.find(Post, _post.id, {with: ['user', 'comment']}); - }) - .then(function (post) { - post.comments.sort(function (a, b) { - return a.content > b.content; - }); - assert.equalObjects(post.user, _user); - assert.equalObjects(post.comments, _comments); - return adapter.destroyAll(Comment); - }) - .then(function () { - return adapter.destroy(Post, id2); - }) - .then(function () { - return adapter.destroy(User, id); - }) - .then(function (user) { - assert.isFalse(!!user); - return adapter.find(User, id); - }) - .then(function () { - throw new Error('Should not have reached here!'); - }) - .catch(function (err) { - console.log(err.stack); - assert.equal(err.message, 'Not Found!'); - }); + ]; + + comments.sort(function (a, b) { + return a.content > b.content; + }); + + var findPost = yield adapter.find(Post, postId, {with: ['user', 'comment']}); + findPost.comments.sort(function (a, b) { + return a.content > b.content; + }); + assert.equalObjects(findPost.user, user); + assert.equalObjects(findPost.comments, comments); + + yield adapter.destroyAll(Comment); + yield adapter.destroy(Post, postId); + var destroyUser = yield adapter.destroy(User, userId); + assert.isFalse(!!destroyUser); + + try { + yield adapter.find(User, userId); + throw new Error('Should not have reached here!'); + } catch (err) { + console.log(err.stack); + assert.equal(err.message, 'Not Found!'); + } + }); + + it('should load belongsTo relations', function* () { + var profile = yield adapter.create(Profile, { email: 'foo@test.com' }); + var user = yield adapter.create(User, {name: 'John', profileId: profile.id}); + var post = yield adapter.create(Post, {content: 'foo', userId: user.id}); + var comment = yield adapter.create(Comment, { content: 'test2', postId: post.id, userId: post.userId }); + + var comment = yield adapter.find(Comment, comment.id, {'with': ['user', 'user.profile', 'post', 'post.user']}); + assert.isDefined(comment); + assert.isDefined(comment.post); + assert.isDefined(comment.post.user); + assert.isDefined(comment.user); + assert.isDefined(comment.user.profile); + }); + + it('should load hasMany and belongsTo relations', function* () { + var profile = yield adapter.create(Profile, { email: 'foo@test.com' }); + var user = yield adapter.create(User, {name: 'John', profileId: profile.id}); + var post = yield adapter.create(Post, {content: 'foo', userId: user.id}); + var comment = yield adapter.create(Comment, { content: 'test2', postId: post.id, userId: post.userId }); + + var foundPost = yield adapter.find(Post, post.id, {'with': ['user', 'comment', 'comment.user', 'comment.user.profile']}); + assert.isDefined(foundPost.comments); + assert.isDefined(foundPost.comments[0].user); + assert.isDefined(foundPost.comments[0].user.profile); + assert.isDefined(foundPost.user); }); + }); diff --git a/test/findAll.spec.js b/test/findAll.spec.js index 033a5e9..9c17175 100644 --- a/test/findAll.spec.js +++ b/test/findAll.spec.js @@ -1,80 +1,68 @@ var Promise = require('bluebird'); -describe.only('DSSqlAdapter#findAll', function () { - it('should filter users', function () { - var id; - - return adapter.findAll(User, { - age: 30 - }).then(function (users) { - assert.equal(users.length, 0); - return adapter.create(User, {name: 'John'}); - }).then(function (user) { - id = user.id; - return adapter.findAll(User, { - name: 'John' - }); - }).then(function (users) { - assert.equal(users.length, 1); - assert.equalObjects(users[0], {id: id, name: 'John', age: null, profileId: null}); - return adapter.destroy(User, id); - }).then(function (destroyedUser) { - assert.isFalse(!!destroyedUser); - }); +describe('DSSqlAdapter#findAll', function () { + it('should filter users', function* () { + var users = yield adapter.findAll(User, { age: 30 }); + assert.equal(users.length, 0); + + var user = yield adapter.create(User, {name: 'John'}); + var id = user.id; + + var users2 = yield adapter.findAll(User, { name: 'John' }); + assert.equal(users2.length, 1); + assert.equalObjects(users2[0], {id: id, name: 'John', age: null, profileId: null}); + + var destroyedUser = yield adapter.destroy(User, id); + assert.isFalse(!!destroyedUser); }); - it('should filter users using the "in" operator', function () { - var id; - return adapter.findAll(User, { + it('should filter users using the "in" operator', function* () { + var users = yield adapter.findAll(User, { where: { age: { 'in': [30] } } - }).then(function (users) { - assert.equal(users.length, 0); - return adapter.create(User, {name: 'John'}); - }).then(function (user) { - id = user.id; - return adapter.findAll(User, { - name: 'John' - }); - }).then(function (users) { - assert.equal(users.length, 1); - assert.equalObjects(users[0], {id: id, name: 'John', age: null, profileId: null}); - return adapter.destroy(User, id); - }).then(function (destroyedUser) { - assert.isFalse(!!destroyedUser); }); + assert.equal(users.length, 0); + + var user = yield adapter.create(User, {name: 'John'}); + var id = user.id; + + var users2 = yield adapter.findAll(User, { name: 'John' }); + assert.equal(users2.length, 1); + assert.equalObjects(users2[0], {id: id, name: 'John', age: null, profileId: null}); + + var destroyedUser = yield adapter.destroy(User, id); + assert.isFalse(!!destroyedUser); }); - it('should filter users using the "like" operator', function () { - var id; - return adapter.findAll(User, { + it('should filter users using the "like" operator', function* () { + var users = yield adapter.findAll(User, { where: { name: { 'like': '%J%' } } - }).then(function (users) { - assert.equal(users.length, 0); - return adapter.create(User, {name: 'John'}); - }).then(function (user) { - id = user.id; - return adapter.findAll(User, { - where: { - name: { - 'like': '%J%' - } + }); + assert.equal(users.length, 0); + + var user = yield adapter.create(User, {name: 'John'}); + var id = user.id; + + var users2 = yield adapter.findAll(User, { + where: { + name: { + 'like': '%J%' } - }); - }).then(function (users) { - assert.equal(users.length, 1); - assert.deepEqual(users[0], {id: id, name: 'John', age: null, profileId: null}); - return adapter.destroy(User, id); - }).then(function (destroyedUser) { - assert.isFalse(!!destroyedUser); + } }); + assert.equal(users2.length, 1); + assert.deepEqual(users2[0], {id: id, name: 'John', age: null, profileId: null}); + + var destroyedUser = yield adapter.destroy(User, id); + assert.isFalse(!!destroyedUser); }); + it('should throw "Operator not found" error', function () { var op = '>=<'; @@ -89,84 +77,44 @@ describe.only('DSSqlAdapter#findAll', function () { } , Error, 'Operator not found'); }); - it('should load belongsTo relations', function () { - return adapter.create(Profile, { - email: 'foo@test.com' - }).then(function (profile) { - return Promise.all([ - adapter.create(User, {name: 'John', profileId: profile.id}).then(function (user) { - return adapter.create(Post, {content: 'foo', userId: user.id}); - }), - adapter.create(User, {name: 'Sally'}).then(function (user) { - return adapter.create(Post, {content: 'bar', userId: user.id}); - }) - ]) - }) - .spread(function (post1, post2) { - return Promise.all([ - adapter.create(Comment, { - content: 'test2', - postId: post1.id, - userId: post1.userId - }), - adapter.create(Comment, { - content: 'test3', - postId: post2.id, - userId: post2.userId - }) - ]); - }) - .then(function () { - return adapter.findAll(Comment, {}, {'with': ['user', 'user.profile', 'post', 'post.user']}); - }) - .then(function (comments) { - assert.isDefined(comments[0].post); - assert.isDefined(comments[0].post.user); - assert.isDefined(comments[0].user); - assert.isDefined(comments[0].user.profile || comments[1].user.profile); - assert.isDefined(comments[1].post); - assert.isDefined(comments[1].post.user); - assert.isDefined(comments[1].user); - }); + + it('should load belongsTo relations', function* () { + var profile1 = yield adapter.create(Profile, { email: 'foo@test.com' }); + var user1 = yield adapter.create(User, {name: 'John', profileId: profile1.id}); + var post1 = yield adapter.create(Post, {content: 'foo', userId: user1.id}); + var comment1 = yield adapter.create(Comment, { content: 'test2', postId: post1.id, userId: post1.userId }); + + var user2 = yield adapter.create(User, {name: 'Sally'}); + var post2 = yield adapter.create(Post, {content: 'bar', userId: user2.id}); + var comment2 = yield adapter.create(Comment, { content: 'test3', postId: post2.id, userId: post2.userId }); + + var comments = yield adapter.findAll(Comment, {}, {'with': ['user', 'user.profile', 'post', 'post.user']}); + assert.isDefined(comments[0].post); + assert.isDefined(comments[0].post.user); + assert.isDefined(comments[0].user); + assert.isDefined(comments[0].user.profile || comments[1].user.profile); + assert.isDefined(comments[1].post); + assert.isDefined(comments[1].post.user); + assert.isDefined(comments[1].user); }); - it('should load hasMany and belongsTo relations', function () { - return adapter.create(Profile, { - email: 'foo@test.com' - }).then(function (profile) { - return Promise.all([ - adapter.create(User, {name: 'John', profileId: profile.id}).then(function (user) { - return adapter.create(Post, {content: 'foo', userId: user.id}); - }), - adapter.create(User, {name: 'Sally'}).then(function (user) { - return adapter.create(Post, {content: 'bar', userId: user.id}); - }) - ]); - }) - .spread(function (post1, post2) { - return Promise.all([ - adapter.create(Comment, { - content: 'test2', - postId: post1.id, - userId: post1.userId - }), - adapter.create(Comment, { - content: 'test3', - postId: post2.id, - userId: post2.userId - }) - ]); - }) - .then(function () { - return adapter.findAll(Post, {}, {'with': ['user', 'comment', 'comment.user', 'comment.user.profile']}); - }) - .then(function (posts) { - assert.isDefined(posts[0].comments); - assert.isDefined(posts[0].comments[0].user); - assert.isDefined(posts[0].comments[0].user.profile || posts[1].comments[0].user.profile); - assert.isDefined(posts[0].user); - assert.isDefined(posts[1].comments); - assert.isDefined(posts[1].comments[0].user); - assert.isDefined(posts[1].user); - }); + + it('should load hasMany and belongsTo relations', function* () { + var profile = yield adapter.create(Profile, { email: 'foo@test.com' }); + var user1 = yield adapter.create(User, {name: 'John', profileId: profile.id}); + var post1 = yield adapter.create(Post, {content: 'foo', userId: user1.id}); + var comment1 = yield adapter.create(Comment, { content: 'test2', postId: post1.id, userId: post1.userId }); + + var user2 = yield adapter.create(User, {name: 'Sally'}); + var post2 = yield adapter.create(Post, {content: 'bar', userId: user2.id}); + var comment2 = yield adapter.create(Comment, { content: 'test3', postId: post2.id, userId: post2.userId }); + + var posts = yield adapter.findAll(Post, {}, {'with': ['user', 'comment', 'comment.user', 'comment.user.profile']}); + assert.isDefined(posts[0].comments); + assert.isDefined(posts[0].comments[0].user); + assert.isDefined(posts[0].comments[0].user.profile || posts[1].comments[0].user.profile); + assert.isDefined(posts[0].user); + assert.isDefined(posts[1].comments); + assert.isDefined(posts[1].comments[0].user); + assert.isDefined(posts[1].user); }); }); diff --git a/test/update.spec.js b/test/update.spec.js index 1099024..03e185d 100644 --- a/test/update.spec.js +++ b/test/update.spec.js @@ -1,40 +1,33 @@ describe('DSSqlAdapter#update', function () { - it('should update a user in a Sql db', function () { - var id; - return adapter.create(User, {name: 'John'}) - .then(function (user) { - id = user.id; - assert.equal(user.name, 'John'); - assert.isDefined(user.id); - return adapter.find(User, user.id); - }) - .then(function (foundUser) { - assert.equal(foundUser.name, 'John'); - assert.isDefined(foundUser.id); - assert.equalObjects(foundUser, {id: id, name: 'John', age: null, profileId: null}); - return adapter.update(User, foundUser.id, {name: 'Johnny'}); - }) - .then(function (updatedUser) { - assert.equal(updatedUser.name, 'Johnny'); - assert.isDefined(updatedUser.id); - assert.equalObjects(updatedUser, {id: id, name: 'Johnny', age: null, profileId: null}); - return adapter.find(User, updatedUser.id); - }) - .then(function (foundUser) { - assert.equal(foundUser.name, 'Johnny'); - assert.isDefined(foundUser.id); - assert.equalObjects(foundUser, {id: id, name: 'Johnny', age: null, profileId: null}); - return adapter.destroy(User, foundUser.id); - }) - .then(function (user) { - assert.isFalse(!!user); - return adapter.find(User, id); - }) - .then(function () { - throw new Error('Should not have reached here!'); - }) - .catch(function (err) { - assert.equal(err.message, 'Not Found!'); - }); + it('should update a user in a Sql db', function* () { + var user = yield adapter.create(User, {name: 'John'}) + var id = user.id; + assert.equal(user.name, 'John'); + assert.isDefined(user.id); + + var foundUser = yield adapter.find(User, user.id); + assert.equal(foundUser.name, 'John'); + assert.isDefined(foundUser.id); + assert.equalObjects(foundUser, {id: id, name: 'John', age: null, profileId: null}); + + var updatedUser = yield adapter.update(User, foundUser.id, {name: 'Johnny'}); + assert.equal(updatedUser.name, 'Johnny'); + assert.isDefined(updatedUser.id); + assert.equalObjects(updatedUser, {id: id, name: 'Johnny', age: null, profileId: null}); + + var foundUser2 = yield adapter.find(User, updatedUser.id); + assert.equal(foundUser2.name, 'Johnny'); + assert.isDefined(foundUser2.id); + assert.equalObjects(foundUser2, {id: id, name: 'Johnny', age: null, profileId: null}); + + var destroyUser = yield adapter.destroy(User, foundUser2.id); + assert.isFalse(!!destroyUser); + + try { + yield adapter.find(User, id); + throw new Error('Should not have reached here!'); + } catch (err) { + assert.equal(err.message, 'Not Found!'); + } }); }); diff --git a/test/updateAll.spec.js b/test/updateAll.spec.js index f918eb5..cda2ad1 100644 --- a/test/updateAll.spec.js +++ b/test/updateAll.spec.js @@ -1,62 +1,43 @@ describe('DSSqlAdapter#updateAll', function () { - it('should update all items', function () { - var id, id2; - return adapter.create(User, {name: 'John', age: 20}) - .then(function (user) { - id = user.id; - return adapter.create(User, {name: 'John', age: 30}); - }).then(function (user) { - id2 = user.id; - return adapter.findAll(User, { - name: 'John' - }); - }).then(function (users) { - users.sort(function (a, b) { - return a.age - b.age; - }); - assert.equalObjects(users, [{id: id, name: 'John', age: 20, profileId: null}, { - id: id2, - name: 'John', - age: 30, - profileId: null - }]); - return adapter.updateAll(User, { - name: 'Johnny' - }, { - name: 'John' - }); - }).then(function (users) { - users.sort(function (a, b) { - return a.age - b.age; - }); - assert.equalObjects(users, [{id: id, name: 'Johnny', age: 20, profileId: null}, { - id: id2, - name: 'Johnny', - age: 30, - profileId: null - }]); - return adapter.findAll(User, { - name: 'John' - }); - }).then(function (users) { - assert.equalObjects(users, []); - assert.equal(users.length, 0); - return adapter.findAll(User, { - name: 'Johnny' - }); - }).then(function (users) { - users.sort(function (a, b) { - return a.age - b.age; - }); - assert.equalObjects(users, [{id: id, name: 'Johnny', age: 20, profileId: null}, { - id: id2, - name: 'Johnny', - age: 30, - profileId: null - }]); - return adapter.destroyAll(User); - }).then(function (destroyedUser) { - assert.isFalse(!!destroyedUser); - }); + it('should update all items', function* () { + var user1 = yield adapter.create(User, {name: 'John', age: 20}) + var userId1 = user1.id; + + var user2 = yield adapter.create(User, {name: 'John', age: 30}); + var userId2 = user2.id; + + var users = yield adapter.findAll(User, { name: 'John' }); + users.sort(function (a, b) { + return a.age - b.age; + }); + assert.equalObjects(users, [ + {id: userId1, name: 'John', age: 20, profileId: null}, + {id: userId2, name: 'John', age: 30, profileId: null} + ]); + + var users2 = yield adapter.updateAll(User, { name: 'Johnny' }, { name: 'John' }); + users2.sort(function (a, b) { + return a.age - b.age; + }); + assert.equalObjects(users2, [ + {id: userId1, name: 'Johnny', age: 20, profileId: null}, + {id: userId2, name: 'Johnny', age: 30, profileId: null} + ]); + + var users3 = yield adapter.findAll(User, { name: 'John' }); + assert.equalObjects(users3, []); + assert.equal(users3.length, 0); + + var users4 = yield adapter.findAll(User, { name: 'Johnny' }); + users4.sort(function (a, b) { + return a.age - b.age; + }); + assert.equalObjects(users4, [ + {id: userId1, name: 'Johnny', age: 20, profileId: null}, + {id: userId2, name: 'Johnny', age: 30, profileId: null} + ]); + + var destroyedUser = yield adapter.destroyAll(User); + assert.isFalse(!!destroyedUser); }); });