Automatically proxy methods from Adaptors to Connections

This commit is contained in:
Andrew Stewart 2014-09-29 15:25:51 -07:00
parent 733c13df13
commit 77ecc2a82b
2 changed files with 36 additions and 7 deletions

View File

@ -40,7 +40,11 @@ var Connection = module.exports = function Connection(opts) {
}
}
Utils.proxyFunctionsToObject(this.adaptor.commands, this.adaptor, this);
for (var opt in this.adaptor) {
if (!this[opt] && typeof this.adaptor[opt] === 'function') {
this[opt] = this.adaptor[opt].bind(this.adaptor);
}
}
};
Utils.subclass(Connection, EventEmitter);

View File

@ -1,16 +1,22 @@
"use strict";
var Robot = source("robot"),
var Loopback = source('test/loopback'),
Robot = source("robot"),
Logger = source('logger'),
Utils = source('utils');
describe("Connection", function() {
var robot = new Robot({
name: "Robby",
connection: { name: 'loopback', adaptor: 'loopback', port: "/dev/null" }
var robot, connection;
beforeEach(function() {
robot = new Robot({
name: "Robby",
connection: { name: 'loopback', adaptor: 'loopback', port: "/dev/null" }
});
connection = robot.connections.loopback;
});
var connection = robot.connections.loopback;
describe("#constructor", function() {
it("sets @robot to the passed robot", function() {
@ -24,10 +30,29 @@ describe("Connection", function() {
it("sets @port to the passed port", function() {
expect(connection.port.toString()).to.be.eql("/dev/null");
});
it("proxies methods from the Adaptor", function() {
Loopback.prototype.test = function() { return "Test" };
robot = new Robot({
name: "Robby",
connection: { name: 'loopback', adaptor: 'loopback', port: "/dev/null" }
});
connection = robot.connections.loopback;
expect(connection.test()).to.be.eql("Test");
delete Loopback.prototype.test;
})
});
describe("#toJSON", function() {
var json = connection.toJSON();
var json;
beforeEach(function() {
json = connection.toJSON();
});
it("returns an object", function() {
expect(json).to.be.an('object');