Repository module added, not integrated yet
This commit is contained in:
parent
0cd85988e4
commit
63e43cc553
|
@ -0,0 +1,50 @@
|
||||||
|
/*
|
||||||
|
* Repository
|
||||||
|
*
|
||||||
|
* The Repository contains references to all Drivers and Adaptors Cylon is aware
|
||||||
|
* of, along with which module they live in (e.g. cylon-firmata).
|
||||||
|
*
|
||||||
|
* cylonjs.com
|
||||||
|
*
|
||||||
|
* Copyright (c) 2013-2014 The Hybrid Group
|
||||||
|
* Licensed under the Apache 2.0 license.
|
||||||
|
*/
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
var Repository = {};
|
||||||
|
|
||||||
|
var search = function(entry, value) {
|
||||||
|
for (var name in Repository) {
|
||||||
|
var repo = Repository[name];
|
||||||
|
|
||||||
|
if (~repo[entry].indexOf(value)) {
|
||||||
|
return repo.module;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
register: function(module) {
|
||||||
|
var pkg = require(module);
|
||||||
|
|
||||||
|
Repository[module] = {
|
||||||
|
module: pkg,
|
||||||
|
adaptors: pkg.adaptors,
|
||||||
|
drivers: pkg.drivers
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
findByAdaptor: function(adaptor) {
|
||||||
|
return search("adaptors", adaptor);
|
||||||
|
},
|
||||||
|
|
||||||
|
findByDriver: function(driver) {
|
||||||
|
return search("drivers", driver);
|
||||||
|
},
|
||||||
|
|
||||||
|
// here for tests, should not be publicly used
|
||||||
|
_data: Repository
|
||||||
|
};
|
|
@ -0,0 +1,45 @@
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
var Repository = source('repository');
|
||||||
|
|
||||||
|
var path = './../spec/support/mock_module.js';
|
||||||
|
|
||||||
|
var module = require('./../support/mock_module.js')
|
||||||
|
|
||||||
|
describe("Repository", function() {
|
||||||
|
describe("#register", function() {
|
||||||
|
it("adds the supplied module to the Registry", function() {
|
||||||
|
expect(Repository._data).to.be.eql({});
|
||||||
|
|
||||||
|
Repository.register(path);
|
||||||
|
|
||||||
|
expect(Repository._data).to.be.eql({
|
||||||
|
"./../spec/support/mock_module.js": {
|
||||||
|
module: module,
|
||||||
|
drivers: ['test-driver'],
|
||||||
|
adaptors: ['test-adaptor']
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("#findByAdaptor", function() {
|
||||||
|
beforeEach(function() {
|
||||||
|
Repository.register(path)
|
||||||
|
});
|
||||||
|
|
||||||
|
it("finds the appropriate module containing the adaptor", function() {
|
||||||
|
expect(Repository.findByAdaptor('test-adaptor')).to.be.eql(module);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("#findByDriver", function() {
|
||||||
|
beforeEach(function() {
|
||||||
|
Repository.register(path)
|
||||||
|
});
|
||||||
|
|
||||||
|
it("finds the appropriate module containing the driver", function() {
|
||||||
|
expect(Repository.findByDriver('test-driver')).to.be.eql(module);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
|
@ -0,0 +1,7 @@
|
||||||
|
// A mock Cylon module for use in internal testing.
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
adaptors: [ 'test-adaptor' ],
|
||||||
|
drivers: [ 'test-driver' ]
|
||||||
|
};
|
Loading…
Reference in New Issue