From 5cb1b4bebaeede4aa192e84c253be1ec1de23f82 Mon Sep 17 00:00:00 2001 From: Dario Marcelino Date: Wed, 25 Feb 2015 01:27:48 +0000 Subject: [PATCH] Issue #43: successfully reproduced stackoverflow user's issue --- .../43-orientdb_requestError.js | 71 ++++++++++++++++++- .../43-orientdb_requestError/user.fixture.js | 33 +++++++++ 2 files changed, 101 insertions(+), 3 deletions(-) create mode 100644 test/integration-orientdb/bugs/43-orientdb_requestError/user.fixture.js diff --git a/test/integration-orientdb/bugs/43-orientdb_requestError/43-orientdb_requestError.js b/test/integration-orientdb/bugs/43-orientdb_requestError/43-orientdb_requestError.js index 21ed7cb..aa309ab 100644 --- a/test/integration-orientdb/bugs/43-orientdb_requestError/43-orientdb_requestError.js +++ b/test/integration-orientdb/bugs/43-orientdb_requestError/43-orientdb_requestError.js @@ -8,7 +8,8 @@ describe('Bug #43: OrientDB.RequestError on update', function() { before(function (done) { var fixtures = { ImageFixture: require('./image.fixture'), - SubprofileFixture: require('./post.fixture') + SubprofileFixture: require('./post.fixture'), + UserFixture: require('./user.fixture') }; CREATE_TEST_WATERLINE(self, 'test_bug_43', fixtures, done); }); @@ -16,7 +17,7 @@ describe('Bug #43: OrientDB.RequestError on update', function() { DELETE_TEST_WATERLINE('test_bug_43', done); }); - describe('update a created post', function() { + describe('rodrigorn: update a created post', function() { ///////////////////////////////////////////////////// // TEST SETUP //////////////////////////////////////////////////// @@ -42,7 +43,6 @@ describe('Bug #43: OrientDB.RequestError on update', function() { if(err) { return done(err); } done(); }); - }); }); }); @@ -107,6 +107,71 @@ describe('Bug #43: OrientDB.RequestError on update', function() { }); }); + }); + + + describe('stackoverflow issue: update a created user', function() { + ///////////////////////////////////////////////////// + // TEST SETUP + //////////////////////////////////////////////////// + + var userParent, userChild; + + before(function(done) { + self.collections.Dbuser.create({ username: 'parent' }, function(err, user) { + if(err) { return done(err); } + userParent = user; + + self.collections.Dbuser.create({ username: 'child' }, function(err, user2) { + if(err) { return done(err); } + userChild = user2; + + self.collections.Dbuser.findOne(userParent.id, function(err, dbUser){ + if(err) { return done(err); } + dbUser.follows.add(user2.id); + dbUser.save(function(err){ + //ignore the error for now + done(); + }); + }) + + }); + }); + }); + + + ///////////////////////////////////////////////////// + // TEST METHODS + //////////////////////////////////////////////////// + + it('control test: should have created child user', function(done) { + self.collections.Dbuser.findOne({ username: 'child' }) + .populate('followed') + .exec(function(err, user) { + assert(!err, err); + assert.equal(user.username, 'child'); + assert.equal(user.followed[0].username, 'parent'); + done(); + }); + }); + + it('should update user', function(done) { + userParent.token = 'iasbdasgdpsabçefbe'; + self.collections.Dbuser.create(userParent.id, userParent, function(err, user) { + if(err) { return done(err); } + assert(user); + done(); + }); + }); + + it('should create 2 users who reference each other', function(done) { + self.collections.Dbuser.update({ username: 'user1', follows: [ { username: 'user2' } ] }, function(err, user) { + if(err) { return done(err); } + assert(user); + done(); + }); + }); }); + }); diff --git a/test/integration-orientdb/bugs/43-orientdb_requestError/user.fixture.js b/test/integration-orientdb/bugs/43-orientdb_requestError/user.fixture.js new file mode 100644 index 0000000..bfb23a7 --- /dev/null +++ b/test/integration-orientdb/bugs/43-orientdb_requestError/user.fixture.js @@ -0,0 +1,33 @@ +module.exports = { + tableName : 'User', + identity : 'dbuser', + schema : true, + attributes : { + id : { + type : 'string', + primaryKey : true, + columnName : '@rid' + }, + username : { + type : 'string', + // required : true, + unique : true + }, + password : { + type : 'string', + // required : false + }, + token : { + type : 'string' + }, + follows : { + collection : 'dbuser', + via : 'followed', + dominant : true + }, + followed : { + collection : 'dbuser', + via : 'follows' + } + } +};