add Profile model

This commit is contained in:
Matias Alejo Garcia 2014-09-27 15:14:32 -03:00
commit 8d53fa82ed
2 changed files with 95 additions and 0 deletions

38
js/models/Profile.js Normal file
View file

@ -0,0 +1,38 @@
'use strict';
var preconditions = require('preconditions').singleton();
var _ = require('underscore');
var log = require('../log');
var bitcore = require('bitcore');
function Profile(opts, storage) {
preconditions.checkArgument(opts.email);
preconditions.checkArgument(opts.password);
preconditions.checkArgument(storage);
preconditions.checkArgument(storage.getItem);
this.email = opts.email;
this.password = opts.password;
this.hash = bitcore.util.sha256ripe160(this.email + this.password);
this.extra = opts.extra;
};
Profile.fromObj = function(obj, storage) {
return new Profile(obj, storage);
};
Profile.prototype.toObj = function() {
return JSON.parse(JSON.stringify(this));
};
Profile.prototype.store = function(cb) {
// TODO
return cb();
// this.storage.setItem(this.hash, this.toObj());
};
module.exports = Profile;

57
test/test.Profile.js Normal file
View file

@ -0,0 +1,57 @@
'use strict';
var chai = chai || require('chai');
var should = chai.should();
var bitcore = bitcore || require('bitcore');
var buffertools = bitcore.buffertools;
var Profile = require('../js/models/Profile')
var sinon = require('sinon');
var FakeStorage = function() {};
describe('Profile model', function() {
var email = 'email@pepe.com';
var password = 'iamnotsatoshi';
var storage = new FakeStorage();
var opts = {
email: email,
password: password,
};
beforeEach(function() {
storage.getItem = sinon.stub();
});
it('should fail create an instance', function() {
(function() {
new Profile({
email: email,
}, storage)
}).should.throw('Illegal Arg');
});
it('should create an instance', function() {
var p = new Profile({
email: email,
password: password
}, storage);
should.exist(p);
});
it('#fromObj #toObj round trip', function() {
var p = new Profile(opts, storage);
var p2 = Profile.fromObj(p.toObj(), storage);
p2.should.deep.equal(p);
});
it('#store', function(done) {
var p = new Profile(opts, storage);
p.store(function(err) {
should.not.exist(err);
done();
})
});
});