define(["sugar-web/bus"], function (bus) {
|
|
|
|
'use strict';
|
|
|
|
describe("bus requests", function () {
|
|
var client;
|
|
|
|
function MockClient() {
|
|
this.result = [];
|
|
this.error = null;
|
|
}
|
|
|
|
MockClient.prototype.send = function (data) {
|
|
var that = this;
|
|
setTimeout(function () {
|
|
var parsed = JSON.parse(data);
|
|
|
|
var message = {
|
|
data: JSON.stringify({
|
|
result: that.result,
|
|
error: that.error,
|
|
id: parsed.id
|
|
})
|
|
};
|
|
|
|
that.onMessage(message);
|
|
}, 0);
|
|
};
|
|
|
|
MockClient.prototype.close = function () {};
|
|
|
|
beforeEach(function () {
|
|
client = new MockClient();
|
|
bus.listen(client);
|
|
});
|
|
|
|
afterEach(function () {
|
|
bus.close();
|
|
client = null;
|
|
});
|
|
|
|
it("should receive a response", function () {
|
|
var responseReceived;
|
|
|
|
runs(function () {
|
|
responseReceived = false;
|
|
|
|
function onResponseReceived(error, result) {
|
|
expect(error).toBeNull();
|
|
expect(result).toEqual(["hello"]);
|
|
responseReceived = true;
|
|
}
|
|
|
|
client.result = ["hello"];
|
|
|
|
bus.sendMessage("hello", [], onResponseReceived);
|
|
});
|
|
|
|
waitsFor(function () {
|
|
return responseReceived;
|
|
}, "a response should be received");
|
|
});
|
|
|
|
it("should receive an error", function () {
|
|
var errorReceived;
|
|
|
|
runs(function () {
|
|
errorReceived = false;
|
|
|
|
function onResponseReceived(error, result) {
|
|
expect(error).toEqual(jasmine.any(Error));
|
|
expect(result).toBeNull();
|
|
|
|
errorReceived = true;
|
|
}
|
|
|
|
client.result = null;
|
|
client.error = new Error("error");
|
|
|
|
bus.sendMessage("hello", [], onResponseReceived);
|
|
});
|
|
|
|
waitsFor(function () {
|
|
return errorReceived;
|
|
}, "an error should be received");
|
|
});
|
|
|
|
});
|
|
|
|
describe("bus notifications", function () {
|
|
var client;
|
|
|
|
function MockClient() {
|
|
this.params = null;
|
|
}
|
|
|
|
MockClient.prototype.send_notification = function (method, params) {
|
|
var that = this;
|
|
|
|
setTimeout(function () {
|
|
var message = {
|
|
data: JSON.stringify({
|
|
method: method,
|
|
params: that.params
|
|
})
|
|
};
|
|
|
|
that.onMessage(message);
|
|
}, 0);
|
|
};
|
|
|
|
MockClient.prototype.close = function () {};
|
|
|
|
beforeEach(function () {
|
|
client = new MockClient();
|
|
bus.listen(client);
|
|
});
|
|
|
|
afterEach(function () {
|
|
bus.close();
|
|
client = null;
|
|
});
|
|
|
|
it("should receive a notification", function () {
|
|
var notificationReceived;
|
|
var notificationParams;
|
|
var originalParams = {
|
|
param1: true,
|
|
param2: "foo"
|
|
};
|
|
|
|
runs(function () {
|
|
notificationReceived = false;
|
|
notificationParams = null;
|
|
|
|
function onNotificationReceived(params) {
|
|
notificationReceived = true;
|
|
notificationParams = params;
|
|
}
|
|
|
|
bus.onNotification("hey.there", onNotificationReceived);
|
|
|
|
client.params = originalParams;
|
|
client.send_notification("hey.there");
|
|
});
|
|
|
|
waitsFor(function () {
|
|
return notificationReceived;
|
|
}, "a notification should be received");
|
|
|
|
runs(function () {
|
|
expect(notificationParams).toEqual(originalParams);
|
|
});
|
|
});
|
|
});
|
|
});
|