def app(request): app = Hypr() for provider, urls in request.cls.providers.items(): if isinstance(provider, str): provider = getattr( request.module, provider, type(provider, (fltr_provider_factory(),), {}) ) if not isinstance(urls, tuple): urls = urls, app.router.add_provider(provider, *urls) app.propagate() return app
from test_tools import fltr_provider_factory import json FilterProvider = fltr_provider_factory() class Root(FilterProvider): propagation_rules = { 'propagate': 'Resource', } class TestSimpleFilter: providers = { 'Root': '/root/<int:value>', 'Resource': '/resource' } def test_static_method_filter(self, app): with app.test_client() as client: resp = client.get('/root/1/resource') assert resp.status == 200 assert json.loads(resp.text) == {'Root': 1}
from test_tools import fltr_provider_factory import json FilterProvider = fltr_provider_factory(key='my_filter') class Root(FilterProvider): propagation_rules = { 'propagate': 'Node', } class Node(FilterProvider): propagation_rules = { 'propagate': 'Resource', } class TestOverwritingFilter: providers = { Root: '/root/<int:value>', Node: '/node/<int:value>', 'Resource': '/resource', } def test_propagate_0(self, app):