aboutsummaryrefslogblamecommitdiffstats
path: root/_pytest/test_eventrouter.py
blob: b235512c6815bd80274801ff12bb85a2a3e5cc3e (plain) (tree)
1
             


































                                                                      


                                                                                         
                              


                                                                                         
                              


                                                                                         


                              


                       


            



                                                                                      
                                                                       

                                                                          






















                                              
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