Example #1
0
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):