|  | @@ -0,0 +1,73 @@
 | 
	
		
			
				|  |  | +import unittest
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +from celery import events
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +class MockPublisher(object):
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    def __init__(self, *args, **kwargs):
 | 
	
		
			
				|  |  | +        self.sent = []
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    def send(self, msg, *args, **kwargs):
 | 
	
		
			
				|  |  | +        self.sent.append(msg)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    def close(self):
 | 
	
		
			
				|  |  | +        pass
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    def has_event(self, kind):
 | 
	
		
			
				|  |  | +        for event in self.sent:
 | 
	
		
			
				|  |  | +            if event["type"] == kind:
 | 
	
		
			
				|  |  | +                return event
 | 
	
		
			
				|  |  | +        return False
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +class TestEvent(unittest.TestCase):
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    def test_constructor(self):
 | 
	
		
			
				|  |  | +        event = events.Event("world war II")
 | 
	
		
			
				|  |  | +        self.assertEquals(event["type"], "world war II")
 | 
	
		
			
				|  |  | +        self.assertTrue(event["timestamp"])
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +class TestEventDispatcher(unittest.TestCase):
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    def test_send(self):
 | 
	
		
			
				|  |  | +        publisher = MockPublisher()
 | 
	
		
			
				|  |  | +        eventer = events.EventDispatcher(object(), publisher=publisher)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        eventer.publisher = publisher
 | 
	
		
			
				|  |  | +        eventer.enabled = True
 | 
	
		
			
				|  |  | +        eventer.send("World War II", ended=True)
 | 
	
		
			
				|  |  | +        self.assertTrue(publisher.has_event("World War II"))
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +class TestEventReceiver(unittest.TestCase):
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    def test_process(self):
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        message = {"type": "world-war"}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        got_event = [False]
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        def my_handler(event):
 | 
	
		
			
				|  |  | +            got_event[0] = True
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        r = events.EventReceiver(object(), handlers={
 | 
	
		
			
				|  |  | +                                    "world-war": my_handler})
 | 
	
		
			
				|  |  | +        r._receive(message, object())
 | 
	
		
			
				|  |  | +        self.assertTrue(got_event[0])
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    def test_catch_all_event(self):
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        message = {"type": "world-war"}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        got_event = [False]
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        def my_handler(event):
 | 
	
		
			
				|  |  | +            got_event[0] = True
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        r = events.EventReceiver(object())
 | 
	
		
			
				|  |  | +        events.EventReceiver.handlers["*"] = my_handler
 | 
	
		
			
				|  |  | +        try:
 | 
	
		
			
				|  |  | +            r._receive(message, object())
 | 
	
		
			
				|  |  | +            self.assertTrue(got_event[0])
 | 
	
		
			
				|  |  | +        finally:
 | 
	
		
			
				|  |  | +            events.EventReceiver.handlers = {}
 |