def test_dumpmsgs(self): from djangosms.core.models import Incoming Incoming.from_uri("test://test", text="Test") from djangosms.core.management.commands.dumpmsgs import Command out = StringIO.StringIO() with stdout_redirected(out): Command().handle() from yaml import load messages = load(out.getvalue()) self.assertTrue(len(messages), 1) self.assertTrue("Test" in repr(messages))
def test_formatting_error_means_dont_handle(self): handled = [] def check(sender=None, **kwargs): handled.append(sender) # pragma: NOCOVER from djangosms.core.router import pre_handle pre_handle.connect(check) from djangosms.core.router import FormatError from djangosms.core.router import Form class Handler(Form): def parse(request): raise FormatError("error") def handle(self): raise RuntimeError() from djangosms.core.models import Incoming message = Incoming.from_uri("test://test", text="") message.save() from djangosms.core.router import route route(message, table=( (r'^$', Handler), )) self.assertTrue(len(handled), 1) self.assertEqual(message.requests.count(), 1) self.assertEqual(message.requests.get().erroneous, True)
def test_signals(self): from djangosms.core.router import pre_handle from djangosms.core.router import post_handle s3 = [] s4 = [] def before_handle(sender=None, handler=None, **kwargs): s3.append(sender) self.assertTrue(handler is handlers.pop(0), handler) self.assertEqual(sender.responses.count(), 0) pre_handle.connect(before_handle) def after_handle(sender=None, error=None, **kwargs): s4.append(sender) self.assertTrue(error is None, error) self.assertEqual(sender.responses.count(), 1) post_handle.connect(after_handle) from djangosms.core.models import Incoming args = [] def handler1(request, **kwargs): args.append((request, kwargs)) return "1" def handler2(request, **kwargs): args.append((request, kwargs)) return "2" handlers = [handler1, handler2] message = Incoming.from_uri("test://test", text="12") message.save() from djangosms.core.router import route route(message, table=( (r'^(?P<input>1)', handler1), (r'^(?P<input>2)', handler2), )) self.assertTrue(len(s3), 1) self.assertTrue(len(s4), 1) self.assertEqual(len(args), 2) self.assertEqual(message.requests.count(), 2)