Exemplo n.º 1
0
    def test_dispatch_with_kwargs(self):
        rules = PatternRules()
        f = Mock()
        rules.add_rule(r'^http://my\.test\.com/(?P<title>[a-zA-Z]+)/([0-9]{4})/$', f)
        rules.dispatch('http://my.test.com/foo/0042/')

        f.assert_called_with('0042', title='foo')
Exemplo n.º 2
0
    def test_basic_dispatch(self):
        rules = PatternRules()
        f = Mock()
        rules.add_rule(r'http://my\.test\.com/', f)
        rules.dispatch('http://my.test.com/')

        f.assert_any_calls()
Exemplo n.º 3
0
    def test_dispatch_return(self):
        rules = PatternRules()

        def factory():
            return ('foo', 'bar')

        rules.add_rule(r'[a-z]+', factory)
        result = rules.dispatch('foo')

        self.assertEqual(('foo', 'bar'), result)
Exemplo n.º 4
0
    def test_inject_context(self):
        rules = PatternRules()
        f = Mock()
        rules.add_rule(r'[a-z]+/([0-9]+)', f, inject_context=True)
        rules.dispatch('foo/0042')

        f.assert_called_once_with({
            'input': 'foo/0042',
            'pattern': r'[a-z]+/([0-9]+)',
            'args': ('0042',),
            'kwargs': {}
        }, '0042')
Exemplo n.º 5
0
    def test_dispatch_context_processor(self):
        rules = PatternRules()
        value = None

        def processor(ctx):
            ctx['test_processor'] = 'foobar'

        def handler(ctx):
            nonlocal value
            value = ctx['test_processor']

        rules.add_rule(r'[a-z]+', handler, inject_context=True)
        rules.dispatch('foo', context_processor=processor)

        self.assertEqual(value, 'foobar')
Exemplo n.º 6
0
    def test_unhandled_exception(self):
        rules = PatternRules()
        rules.add_rule(r'[a-z]', lambda: True)

        with self.assertRaises(RuleException):
            rules.dispatch('123')
Exemplo n.º 7
0
    def test_adding_rules(self):
        rules = PatternRules()
        rules.add_rule(r'[a-z]', lambda: True)

        self.assertEqual(1, len(rules))