not really known
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

156 lines
4.1 KiB

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);
});
});
});
});