Skip to content

Instantly share code, notes, and snippets.

@apeckham
Created September 9, 2011 04:26
Show Gist options
  • Save apeckham/1205497 to your computer and use it in GitHub Desktop.
Save apeckham/1205497 to your computer and use it in GitHub Desktop.
jasmine fakes for titanium (first pass, pretty rough)
var fake = function(methods) {
methods = methods || [];
var object = {listeners: {}};
for (var i = 0; i < methods.length; i++) {
object[methods[i]] = jasmine.createSpy();
};
object.addEventListener = function(event, callback) {
object.listeners[event] = callback;
};
object.fireEvent = function(event, params) {
object.listeners[event](params);
};
return object;
};
function createFactory(base, name, methods) {
base[name] = function(properties) {
var object = fake(methods);
for (var key in properties) {
object[key] = properties[key];
}
base[name].last = object;
return object;
};
};
var setupFakes = function() {
window.Ti = window.Titanium = {
App: fake(),
Network: {},
API: fake(["debug"]),
UI: {},
Filesystem: {
getFile: function(name) {
return {
"emailSubject.mustache": {read: function() {
return {text: "{{word}}"}
}},
"emailBody.mustache": {read: function() {
return {text: "{{definition}} {{example}}"}
}},
"template.mustache": {read: function() {
return {text: "the template"}
}}
}[name];
}
},
Gesture: fake(),
include: jasmine.createSpy(),
};
createFactory(Ti.Network, "createHTTPClient", ["open", "send"]);
createFactory(Ti.UI, "createWindow", ["add", "open"]);
createFactory(Ti.UI, "createView", ["add"]);
createFactory(Ti.UI, "createSearchBar", ["blur"]);
createFactory(Ti.UI, "createWebView");
createFactory(Ti.UI, "createEmailDialog", ["open"]);
};
beforeEach(function() {
setupFakes();
startApp();
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment