ampersand-state
Version:
An observable, extensible state object with derived watchable properties.
55 lines (45 loc) • 1.22 kB
JavaScript
var State = require('../ampersand-state');
exports.setUp = function (cb) {
this.Person = State.extend({
props: {
name: 'string'
}
});
cb();
};
exports['init with values'] = function (test) {
var person = new this.Person({name: 'henrik'});
test.ok(person);
test.equal(person.name, 'henrik');
test.done();
};
exports['extended object maintains existing props'] = function (test) {
var AwesomePerson = this.Person.extend({
props: {
awesomeness: 'number'
}
});
var awesome = new AwesomePerson({
name: 'Captain Awesome',
awesomeness: 11
});
test.equals(awesome.name, 'Captain Awesome');
test.equals(awesome.awesomeness, 11);
test.done();
};
exports['extended object maintains existing methods'] = function (test) {
var Person = State.extend({
props: {
awesomeness: 'number'
},
isTrulyAwesome: function () {
if (this.awesomeness > 10) return true;
}
});
var AwesomePerson = Person.extend({});
var awesome = new AwesomePerson({
awesomeness: 11
});
test.ok(awesome.isTrulyAwesome());
test.done();
};