diff options
Diffstat (limited to 'kombu/tests/test_entities.py')
-rw-r--r-- | kombu/tests/test_entities.py | 109 |
1 files changed, 105 insertions, 4 deletions
diff --git a/kombu/tests/test_entities.py b/kombu/tests/test_entities.py index cdd9c34a..fadaf358 100644 --- a/kombu/tests/test_entities.py +++ b/kombu/tests/test_entities.py @@ -1,7 +1,10 @@ from __future__ import absolute_import -from kombu import Connection -from kombu.entity import Exchange, Queue +import pickle + +from mock import call + +from kombu import Connection, Exchange, Queue, binding from kombu.exceptions import NotBoundError from .mocks import Transport @@ -13,6 +16,48 @@ def get_conn(): return Connection(transport=Transport) +class test_binding(TestCase): + + def test_constructor(self): + x = binding(Exchange('foo'), 'rkey', + arguments={'barg': 'bval'}, + unbind_arguments={'uarg': 'uval'}, + ) + self.assertEqual(x.exchange, Exchange('foo')) + self.assertEqual(x.routing_key, 'rkey') + self.assertDictEqual(x.arguments, {'barg': 'bval'}) + self.assertDictEqual(x.unbind_arguments, {'uarg': 'uval'}) + + def test_declare(self): + chan = get_conn().channel() + x = binding(Exchange('foo'), 'rkey') + x.declare(chan) + self.assertIn('exchange_declare', chan) + + def test_declare_no_exchange(self): + chan = get_conn().channel() + x = binding() + x.declare(chan) + self.assertNotIn('exchange_declare', chan) + + def test_bind(self): + chan = get_conn().channel() + x = binding(Exchange('foo')) + x.bind(Exchange('bar')(chan)) + self.assertIn('exchange_bind', chan) + + def test_unbind(self): + chan = get_conn().channel() + x = binding(Exchange('foo')) + x.unbind(Exchange('bar')(chan)) + self.assertIn('exchange_unbind', chan) + + def test_repr(self): + b = binding(Exchange('foo'), 'rkey') + self.assertIn('foo', repr(b)) + self.assertIn('rkey', repr(b)) + + class test_Exchange(TestCase): def test_bound(self): @@ -24,7 +69,8 @@ class test_Exchange(TestCase): bound = exchange.bind(chan) self.assertTrue(bound.is_bound) self.assertIs(bound.channel, chan) - self.assertIn('<bound', repr(bound)) + self.assertIn('bound to chan:%r' % (chan.channel_id, ), + repr(bound)) def test_hash(self): self.assertEqual(hash(Exchange('a')), hash(Exchange('a'))) @@ -34,6 +80,11 @@ class test_Exchange(TestCase): self.assertTrue(Exchange('a', durable=True).can_cache_declaration) self.assertFalse(Exchange('a', durable=False).can_cache_declaration) + def test_pickle(self): + e1 = Exchange('foo', 'direct') + e2 = pickle.loads(pickle.dumps(e1)) + self.assertEqual(e1, e2) + def test_eq(self): e1 = Exchange('foo', 'direct') e2 = Exchange('foo', 'direct') @@ -111,6 +162,12 @@ class test_Exchange(TestCase): foo(chan).bind_to(bar) self.assertIn('exchange_bind', chan) + def test_bind_to_by_name(self): + chan = get_conn().channel() + foo = Exchange('foo', 'topic') + foo(chan).bind_to('bar') + self.assertIn('exchange_bind', chan) + def test_unbind_from(self): chan = get_conn().channel() foo = Exchange('foo', 'topic') @@ -118,6 +175,12 @@ class test_Exchange(TestCase): foo(chan).unbind_from(bar) self.assertIn('exchange_unbind', chan) + def test_unbind_from_by_name(self): + chan = get_conn().channel() + foo = Exchange('foo', 'topic') + foo(chan).unbind_from('bar') + self.assertIn('exchange_unbind', chan) + class test_Queue(TestCase): @@ -128,6 +191,14 @@ class test_Queue(TestCase): self.assertEqual(hash(Queue('a')), hash(Queue('a'))) self.assertNotEqual(hash(Queue('a')), hash(Queue('b'))) + def test_anonymous(self): + chan = Mock() + x = Queue(bindings=[binding(Exchange('foo'), 'rkey')]) + chan.queue_declare.return_value = 'generated', 0, 0 + xx = x(chan) + xx.declare() + self.assertEqual(xx.name, 'generated') + def test_when_bound_but_no_exchange(self): q = Queue('a') q.exchange = None @@ -141,7 +212,37 @@ class test_Queue(TestCase): q.declare() q.queue_declare.assert_called_with(False, passive=False) - q.queue_bind.assert_called_with(False) + + def test_bind_to_when_name(self): + chan = Mock() + q = Queue('a') + q(chan).bind_to('ex') + self.assertTrue(chan.queue_bind.called) + + def test_get_when_no_m2p(self): + chan = Mock() + q = Queue('a')(chan) + chan.message_to_python = None + self.assertTrue(q.get()) + + def test_multiple_bindings(self): + chan = Mock() + q = Queue('mul', [ + binding(Exchange('mul1'), 'rkey1'), + binding(Exchange('mul2'), 'rkey2'), + binding(Exchange('mul3'), 'rkey3'), + ]) + q(chan).declare() + self.assertIn( + call(nowait=False, + exchange='mul1', + auto_delete=False, + passive=False, + arguments=None, + type='direct', + durable=True, + ), chan.exchange_declare.call_args_list, + ) def test_can_cache_declaration(self): self.assertTrue(Queue('a', durable=True).can_cache_declaration) |