<html>
<import src="../resources/chai.sky" />
<import src="../resources/mocha.sky" />
<script>
describe('Module', function() {
  it('should be constructable', function() {
    var doc1 = new Document();
    var app = new Application(doc1, "http://www.example.com/app");

    var doc2 = new Document();
    var module = new Module(app, doc2, "http://www.example.com/module");
    assert.equal(module.application, app);
    assert.equal(module.document, doc2);
    assert.equal(module.url, "http://www.example.com/module");
  });

  it('should have an empty object by default for exports', function() {
    var app = new Application(new Document(), "http://www.example.com/app");
    var module = new Module(app, new Document(), "http://www.example.com/module");
    assert.isObject(module.exports);
    assert.lengthOf(Object.keys(module.exports), 0);
  });
});
</script>
</html>
