import pytest
from wee_slack import EventRouter, ProcessNotImplemented, SlackRequest
def test_EventRouter(mock_weechat):
# Sending valid json adds to the queue.
e = EventRouter()
e.receive_json('{}')
assert len(e.queue) == 1
# Handling an event removes from the queue.
e = EventRouter()
# Create a function to test we are called
e.proc['testfunc'] = lambda x, y: x
e.receive_json('{"type": "testfunc"}')
e.handle_next()
assert len(e.queue) == 0
# Handling a local event removes from the queue.
e = EventRouter()
# Create a function to test we are called
e.proc['local_testfunc'] = lambda x, y: x
e.receive_json('{"type": "local_testfunc"}')
e.handle_next()
assert len(e.queue) == 0
# Handling an event without an associated processor
# raises an exception.
e = EventRouter()
# Create a function to test we are called
e.receive_json('{"type": "testfunc"}')
with pytest.raises(ProcessNotImplemented):
e.handle_next()
def test_EventRouterReceivedata(mock_weechat):
e = EventRouter()
context = e.store_context(SlackRequest('xoxoxoxox', "rtm.startold", {"meh": "blah"}))
print context
e.receive_httprequest_callback(context, 1, -1, ' {"JSON": "MEH", ', 4)
#print len(e.reply_buffer)
context = e.store_context(SlackRequest('xoxoxoxox', "rtm.startold", {"meh": "blah"}))
print context
e.receive_httprequest_callback(context, 1, -1, ' "JSON2": "MEH", ', 4)
#print len(e.reply_buffer)
context = e.store_context(SlackRequest('xoxoxoxox', "rtm.startold", {"meh": "blah"}))
print context
e.receive_httprequest_callback(context, 1, 0, ' "JSON3": "MEH"}', 4)
#print len(e.reply_buffer)
try:
e.handle_next()
e.handle_next()
e.handle_next()
e.handle_next()
except:
pass
print e.context
#assert False
context = e.store_context(SlackRequest('xoxoxoxox', "rtm.start", {"meh": "blah"}))
rtmstartdata = open('_pytest/data/http/rtm.start.json', 'r').read()
e.receive_httprequest_callback(context, 1, -1, rtmstartdata[:5000], 4)
e.receive_httprequest_callback(context, 1, 0, rtmstartdata[5000:], 4)
e.handle_next()
#print len(e.reply_buffer)
#print e.teams
for t in e.teams:
#print vars(e.teams[t])
for c in e.teams[t].channels:
pass
#print c
for u in e.teams[t].users:
pass
#print vars(u)
# e = EventRouter()
# # Create a function to test we are called
# e.receive_json('{"type": "message"}')
# e.handle_next()
# assert False
#assert False