class TestContextVars(unittest.TestCase): def setUp(self): self.bus = VoomBus(raise_errors=True) self.context2 = 0 def do1(self, msg): self.msg = msg self.context = self.bus.message_context['c'] with self.bus.using(dict(c=self.context + 1), local=True): with self.bus.using(dict(c=self.context + 2), local=True): self.bus.publish("hello") self.bus.publish("hello") def do2(self, msg): self.msg2 = msg self.context2 += self.bus.message_context['c'] def test_vars(self): msg = 1 self.bus.subscribe(int, self.do1) self.bus.subscribe(str, self.do2) with self.bus.using(dict(c=100), local=True): self.bus.publish(msg) assert self.context == 100 assert self.context2 == 101 + 102
class TestSession(unittest.TestCase): def setUp(self): self.bus = VoomBus() def test_1(self): session = {} @receiver(str) def doer1(s): self.bus.session[s] = True session.update(self.bus.session) self.bus.register(doer1) with self.bus.using(dict(a=1, b=2)): self.bus.publish("meow") assert session == dict(a=1, b=2, meow=True) session = {} self.bus.publish("meow") assert session == dict(meow=True) @receiver(str) def doer2(s): if s == "meow": self.bus.publish("grr") self.bus.register(doer2) session = {} self.bus.publish("meow") assert session == dict(meow=True, grr=True)
class TestContextVars(unittest.TestCase): def setUp(self): self.bus = VoomBus(raise_errors=True) self.context = 0 self.context2 = 0 def do1(self, msg): self.msg = msg self.context += self.bus.session['c'] with self.bus.using(dict(c=self.context + 1)): with self.bus.using(dict(c=self.context + 2)): self.bus.publish("hello") self.bus.publish("hello") def do2(self, msg): self.msg2 = msg self.context2 += self.bus.session['c'] def test_vars_should_add_up(self): msg = 1 self.bus.subscribe(int, self.do1) self.bus.subscribe(str, self.do2) with self.bus.using(dict(c=100)): self.bus.publish(msg) assert self.context == 100 assert self.context2 == 101 + 102 def test_vars_should_add_up_twice(self): msg = 1 self.bus.subscribe(int, self.do1) self.bus.subscribe(str, self.do2) with self.bus.using(dict(c=100)): self.bus.publish(msg) self.bus.publish(msg) self.assertEquals(200, self.context) self.assertEquals(606, self.context2)
class TestBusReply(unittest.TestCase): def setUp(self): self.bus = VoomBus() self.forward = None def test_errors(self): with patch('voom.bus.VoomBus.session', {}): nose.tools.assert_raises(InvalidAddressError, self.bus.reply, None) #@UndefinedVariable with patch('voom.bus.VoomBus.session', {SessionKeys.REPLY_TO: "badaddr"}): assert self.bus.session == { SessionKeys.REPLY_TO: "badaddr" }, self.bus.session nose.tools.assert_raises(InvalidStateError, self.bus.reply, None) #@UndefinedVariable def test_reply_1(self): @receiver(str) def what_is_it(_): self.bus.reply('ponies') @receiver(MessageForwarded) def forward(msg): self.forward = msg self.bus.register(what_is_it) self.bus.register(forward) with self.bus.using( {SessionKeys.REPLY_TO: CurrentThreadChannel.ADDRESS}): self.bus.publish("meow") assert self.bus.thread_channel.pop_all() == ['ponies'] assert self.forward assert self.forward.message == "ponies", self.forward assert self.forward.address == CurrentThreadChannel.ADDRESS def test_reply_2(self): @receiver(str) def what_is_it(_): self.bus.reply('ponies') self.bus.register(what_is_it) self.bus.raise_errors = True nose.tools.assert_raises(InvalidAddressError, self.bus.publish, "my little")
class TestBusReply(unittest.TestCase): def setUp(self): self.bus = VoomBus() self.forward = None def test_errors(self): with patch('voom.bus.VoomBus.session', {}): nose.tools.assert_raises(InvalidAddressError, self.bus.reply, None) #@UndefinedVariable with patch('voom.bus.VoomBus.session', {SessionKeys.REPLY_TO: "badaddr"}): assert self.bus.session == {SessionKeys.REPLY_TO: "badaddr"}, self.bus.session nose.tools.assert_raises(InvalidStateError, self.bus.reply, None) #@UndefinedVariable def test_reply_1(self): @receiver(str) def what_is_it(_): self.bus.reply('ponies') @receiver(MessageForwarded) def forward(msg): self.forward = msg self.bus.register(what_is_it) self.bus.register(forward) with self.bus.using({SessionKeys.REPLY_TO: CurrentThreadChannel.ADDRESS}): self.bus.publish("meow") assert self.bus.thread_channel.pop_all() == ['ponies'] assert self.forward assert self.forward.message == "ponies", self.forward assert self.forward.address == CurrentThreadChannel.ADDRESS def test_reply_2(self): @receiver(str) def what_is_it(_): self.bus.reply('ponies') self.bus.register(what_is_it) self.bus.raise_errors = True nose.tools.assert_raises(InvalidAddressError, self.bus.publish, "my little")