var all_requests = {} var all_requests_length = 0

XMLHttpRequest.prototype.open = function(method, url){

all_requests_length += 1
all_requests[url] = {onload: this.onload}

}

function triggerRequest(url, data){

var request = all_requests[url]
all_requests_length -= 1
request.response = JSON.stringify(data)
request.status = 200
request.onload(request)

}

function assertAllRequestsRun(){

if (all_requests_length != 0){
  throw("some requests not called")
}

}

XMLHttpRequest.prototype.send = function(){ }

function triggerRequest(url, data){

var request = all_requests[url]
all_requests_length -= 1
request.response = JSON.stringify(data)
request.status = 200
request.onload(request)

}

MockChannel = function(name){

this.initialize(name)

}

var all_channels = {} MockChannel.prototype = {

events: {},
initialize: function(name){
  this.name = name
},
bind: function(event, callback){
  this.events[event] = callback
},
triggerEvent: function(event, data){
  this.events[event](data)
}

}

WebSocketRails.prototype.subscribe = function(channel){

var new_channel = new MockChannel("channel")
all_channels[channel] = new_channel
return new_channel

}