autotest for rafi

This commit is contained in:
maxwell 2010-07-07 15:27:44 -07:00
parent 5350b40e3c
commit cc603a7943
3 changed files with 101 additions and 0 deletions

View file

@ -0,0 +1,43 @@
class SocketController < ApplicationController
def incoming(msg)
puts msg
end
def new_subscriber
WebSocket.subscribe
end
def outgoing(object)
puts "made it sucka"
WebSocket.push_to_clients(action_hash(object))
end
def delete_subscriber(sid)
WebSocket.unsubscribe(sid)
end
# need a data strucutre to keep track of who is where
#the way this is set up now, we have users on pages
#could have... a channel for every page/collection...not that cool
#or, have a single channel, which has a corresponding :current page => [sid]
# can i cherry pick subscribers from a a channel?
# we want all sorts of stuff that comes with being a controller
# like, protect from forgery, view rendering, etc
#these functions are not really routes
#so the question is, whats the best way to call them?
#also, this is an input output controller
end

View file

@ -0,0 +1,22 @@
module SocketHelper
def obj_id(object)
object.is_a? Post ? object.id : object.post_id
end
def action_hash(object)
begin
v = render_to_string(type_partial(object), :post => object) unless object.is_a? Retraction
rescue Exception => e
puts "in failzord " + v.inspect
puts object.inspect
puts e.message
raise e
end
{:class =>object.class.to_s.underscore.pluralize, :html => v, :post_id => obj_id(object)}
end
end

View file

@ -0,0 +1,36 @@
require File.dirname(__FILE__) + '/../spec_helper'
describe SocketController do
before do
Factory.create(:user)
WebSocket.unstub!(:push_to_clients)
WebSocket.unstub!(:unsubscribe)
WebSocket.unstub!(:subscribe)
#EventMachine::WebSocket.stub!(:start)
@controller = SocketController.new
end
it 'should unstub the websocket' do
EventMachine.run {
puts"hi"
WebSocket.initialize_channel
WebSocket.push_to_clients("what").should_not == "stub"
WebSocket.unsubscribe(1).should_not == "stub"
WebSocket.subscribe.should_not == "stub"
EventMachine.stop
}
puts "yo"
end
it 'should add a new subscriber to the websocket channel' do
EventMachine.run {
puts "foo"
WebSocket.initialize_channel
@controller.new_subscriber.should == 1
EventMachine.stop
}
end
end