UNPKG

planetproto

Version:

A Workshop for understanding JavaScript prototypes

115 lines (86 loc) 2.59 kB
var makeVerificator = require('../../lib/helpers').makeVerificator; var _ = require('underscore'); var assert = require('chai').assert; function verify(exercise, userMod, verifyCallback){ var errors = []; var it = makeVerificator(exercise, errors); var Robot = userMod.Robot; var robby = userMod.robby; var cranky = userMod.cranky; it("exports Robot", function () { assert.isDefined(Robot); }); it("exports robby", function () { assert.isDefined(robby); }); it("exports cranky", function () { assert.isDefined(cranky); }); it("Robot is a function", function () { assert.isFunction(Robot); }); it("robby is an instance of Robot", function () { assert.instanceOf(robby, Robot); }); it("cranky is an instance of Robot", function () { assert.instanceOf(cranky, Robot) }); it('an instance of Robot defines parts', function () { var other = new Robot(); assert.isDefined(other.parts); }); it('an instance of Robot defines capabilities', function () { var other = new Robot(); assert.isDefined(other.capabilities); }); it('parts is an array', function () { var other = new Robot(); assert.isArray(other.parts); }); it('capabilities is an array', function () { var other = new Robot(); assert.isArray(other.capabilities); }); it('parts is initially empty', function () { var other = new Robot(); assert.equal(other.parts.length, 0); }); it('finds an item in robby.parts', function () { assert.equal(robby.parts.length, 1); }); it('first item in robby.parts is core', function () { assert.equal(robby.parts[0], 'core'); }); it('finds zero items in cranky.parts', function () { assert.equal(cranky.parts.length, 0); }); it('capabilities is not directly added to robby', function () { assert.isFalse(robby.hasOwnProperty('capabilities')); }); it('capabilities is not directly added to cranky', function () { assert.isFalse(cranky.hasOwnProperty('capabilities')); }); it('finds one item in robby.capabilities', function () { assert.equal(robby.parts.length, 1); }); it('finds one item in cranky.capabilities', function () { assert.equal(cranky.capabilities.length, 1); }); it('finds fly in robby.capabilities', function () { assert.equal(robby.capabilities[0], 'fly'); }); it('finds fly in cranky.capabilities', function () { assert.equal(cranky.capabilities[0], 'fly'); }); if (errors.length) { verifyCallback(null, false); } else { verifyCallback(null, true); } } function run() { } module.exports = { verify: verify, run: run }