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); Utils.subclass(Connection, EventEmitter);

View File

@ -1,16 +1,22 @@
"use strict"; "use strict";
var Robot = source("robot"), var Loopback = source('test/loopback'),
Robot = source("robot"),
Logger = source('logger'), Logger = source('logger'),
Utils = source('utils'); Utils = source('utils');
describe("Connection", function() { describe("Connection", function() {
var robot = new Robot({ var robot, connection;
name: "Robby",
connection: { name: 'loopback', adaptor: 'loopback', port: "/dev/null" } 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() { describe("#constructor", function() {
it("sets @robot to the passed robot", function() { it("sets @robot to the passed robot", function() {
@ -24,10 +30,29 @@ describe("Connection", function() {
it("sets @port to the passed port", function() { it("sets @port to the passed port", function() {
expect(connection.port.toString()).to.be.eql("/dev/null"); 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() { describe("#toJSON", function() {
var json = connection.toJSON(); var json;
beforeEach(function() {
json = connection.toJSON();
});
it("returns an object", function() { it("returns an object", function() {
expect(json).to.be.an('object'); expect(json).to.be.an('object');