angoose
Version:
Angoose is a Remote Method Invocation module that comes with built-in mongoose/angular support. Now you can call server side module in browser just like you're in the server side!
196 lines (171 loc) • 7.22 kB
JavaScript
var ROOT = process.cwd();
var assert = require("assert");
var path= require("path")
var fs = require("fs");
var logging = require("log4js");
var util = require("./test-util");
var traverse = require("traverse");
var angoose = util.initAngoose();
require("jasmine-custom-message");
var userdata = util.testuser;
var AngooseClient = angoose.client();
describe("Angoose Model Tests", function(){
it("Test Dirty", function(done){
var SampleUser = AngooseClient.getClass('SampleUser');
util.addUser(SampleUser, function(err, user){
console.log("user", user)
var lastname = "User"+new Date().getTime();
user.lastname = lastname;
user.save(function(err, res){
console.log('after save', user.lastname);
done();
});
})
});
it("Partial Loading", function(done){
var SampleUser = AngooseClient.getClass('SampleUser');
util.addUser(SampleUser, function(err, u){
SampleUser.findOne({firstname: util.testuser.firstname}, 'firstname', function(err, user){
console.log("User", user);
assert(user.firstname );
assert(!user.lastname, "user.lastname should be unset");
done()
})
});
})
it("validation error test backend only", function(done){
console.log("validation error tests");
var SampleUser = angoose.getClass("SampleUser");
var suser = new SampleUser( userdata);
suser.email = 'john@test.org'
suser.save(function(err, res){
console.log("Office save result", err);
assert((err +" backedn").indexOf("don't like"));
done();
})
});
});
describe("Model save validations", function(){
var SSU = require(ROOT+ "/models/SampleUser");
var SampleUser = AngooseClient.getClass("SampleUser");
beforeEach(function(done){
SSU.remove(function(){
done();
});
});
it("Sample User Find", function(done){
assert(!SampleUser.save)
assert(SampleUser.find)
assert(SampleUser.findOne)
var suser = new SampleUser( userdata);
assert(suser.remove)
suser.save( function(res){
console.log("Expecting save OK: ", suser._id);
SSU.findById( suser._id ).exec(function(err, obj){
if(!obj) {
assert.fail("Created user not found");
done();
}
SampleUser.findById( suser._id ).done(function(su){
console.log("Expecting findById OK: ", su);
done();
}, function(err){
assert.fail("Failed to find "+ err);
done();
})
});
// now trying to find one
//SampleUser.find()
} )
});
xit("Sample User Save", function(done){
var SampleUser = AngooseClient.getClass("SampleUser");
assert(!SampleUser.save, "save function should not be available on constructor");
var suser = new SampleUser( userdata);
assert.equal(suser.remove, true)
suser.email = 'john@'
suser.save(function(err, res){ // can either user callback for promise
console.log("Expecting save error : ", err, res);
assert.equal(err, true);
if(!err) return done();
assert(err && (err+"").indexOf('email'));
suser = new SampleUser( userdata);
suser.save().done(function(res){
console.log("Expecting save OK: ", res);
SampleUser.find({email:suser.email}).done(function(su){
console.log("Expecting find OK: ", su);
assert.equal(su && su.length,1)
if(!su || !su.length) return done();
var foundUser = su[0];
foundUser.email = 'Invalid';
foundUser.save(function(err, res){
console.log("Expect saving invalid foundUser to fail:", err);
assert.equal(err, true);
foundUser.remove().done(function(res){
console.log("Expecting remove() to be OK:", res);
done();
}, function(er){
console.log("Failed to remove", er);
assert.equal(err,"OK");
});
})
}, function(err){
console.log("Failed to find ", err);
assert.equal(err,"OK");
done();
})
// now trying to find one
//SampleUser.find()
}, function(er){
console.log("Unexpected error: ", er);
})
})
});
xit("validation error test", function(done){
console.log("validation error tests");
var SampleUser = AngooseClient.getClass("SampleUser");
var suser = new SampleUser( userdata);
suser.email = 'john@test.org'
suser.save(function(err, res){
console.log("Office save result", err);
assert((err +" clientside").indexOf("don't like"));
setTimeout(done, 500)
})
});
}) ;
describe("", function(){
it("Sample User Groups add and save", function(done){
var SampleUser = AngooseClient.getClass("SampleUser");
var SampleUserGroup = AngooseClient.getClass("SampleUserGroup");
var group = new SampleUserGroup({
name:'testgroup'
});
group.save(function(err, res){
console.log("save group", err, group);
if(err && (err+"").indexOf("duplicate")<0){
assert(!err);
done()
}
else SampleUserGroup.find({"name":"testgroup"}, function(err, grps){
if(!grps ){
assert.equal('no groups',"test groups");
return done();
}
var suser = new SampleUser( userdata);
suser.email = new Date().getTime() + suser.email;
suser.groupRef = grps[0]._id;
console.log("Saving user with group", grps[0], grps[0].find);
suser.save(function(err, res){
console.log("Saved user with group", err, res)
assert(!err);
if(err) done();
else suser.remove(function(reError, reRes){
console.log("Removeing user", reError, reRes)
assert(!reError)
done();
})
})
})
})
});
})