Skip to content

Commit

Permalink
Only use $htMultiCall if calling multiple methods on the same service
Browse files Browse the repository at this point in the history
  • Loading branch information
SomeoneWeird committed May 29, 2015
1 parent d74639d commit 1716a7a
Show file tree
Hide file tree
Showing 2 changed files with 57 additions and 17 deletions.
15 changes: 13 additions & 2 deletions src/client.js
Original file line number Diff line number Diff line change
Expand Up @@ -259,9 +259,20 @@ Client.prototype.end = function(callback) {
let methods = tmp.map(function(serviceCall) {

let call = {
service: serviceCall.service,
method: "$htMultiCall",
data: serviceCall.calls
};

if(serviceCall.calls.length === 1) {
// If we're only calling 1 method on the
// service, call it directly and don't
// use $htMultiCall
call = {
service: serviceCall.service,
method: "$htMultiCall",
data: serviceCall.calls
method: serviceCall.calls[0].method,
data: serviceCall.calls[0].data
};
}

return call;
Expand Down
59 changes: 44 additions & 15 deletions test-src/client.js
Original file line number Diff line number Diff line change
Expand Up @@ -798,15 +798,15 @@ describe("Client", function() {
let services = {
s1: mockTransport({
call(method, data, callback) {
assert.equal(data[0].data, str);
return callback(null, data[0].data);
assert.equal(data, str);
return callback(null, data);
}
})(),
s2: mockTransport({
call(method, data, callback) {
// reverse
assert.equal(data[0].data, str);
return callback(null, data[0].data.split("").reverse().join(""));
assert.equal(data, str);
return callback(null, data.split("").reverse().join(""));
}
})()
};
Expand All @@ -825,18 +825,47 @@ describe("Client", function() {

let client = new Client({});

client.chain("s1", "method")
.end(function(err, result) {
assert.deepEqual(err, {
service: "s1",
method: "$htMultiCall",
error: {
error: "unknown-service"
}
});
assert.equal(result, undefined);
done();
client.chain("s1", "method").end(function(err, result) {
assert.deepEqual(err, {
service: "s1",
method: "method",
error: {
error: "unknown-service"
}
});
assert.equal(result, undefined);
done();
});

});

it("should use normal call instead of $htMultiCall if there is only 1 method being called on a service", function(done) {

let services = {
s1: mockTransport({
call(method, data, callback) {
assert.equal(method, "m1");
return callback(null, _data);
}
})(),
s2: mockTransport({
call(method, data, callback) {
assert.equal(method, "$htMultiCall");
assert.equal(data[0].method, "m1");
assert.equal(data[1].method, "m2");
assert.deepEqual(data[0].data, _data);
return callback(null, _data2);
}
})()
}

let client = new Client(services);

client.chain("s1", "m1").chain("s2", "m1").chain("s2", "m2").end(function(err, data) {
assert.ifError(err);
assert.deepEqual(data, _data2);
done();
});

});

Expand Down

0 comments on commit 1716a7a

Please sign in to comment.