Пример #1
0
def test_assets_render_any_fragment_from_style():
    register_style(
        'my_style',
        Style(
            test,
            assets__an_asset=Fragment('This is a fragment!'),
        ))

    class MyPage(Page):
        class Meta:
            iommi_style = 'my_style'

    expected = prettify('''
        <!DOCTYPE html>
        <html>
            <head>
                <title/>
                This is a fragment!
            </head>
            <body/>
        </html>
    ''')
    actual = prettify(
        MyPage().bind(request=req('get')).render_to_response().content)
    assert actual == expected

    unregister_style('my_style')
Пример #2
0
def test_apply_style_not_affecting_definition_2():
    register_style(
        'foo_style',
        Style(MenuItem__attrs__class__foo=True, ),
    )

    register_style(
        'bar_style',
        Style(MenuItem__attrs__class__bar=True, ),
    )

    class MyPage(Page):
        menu = Menu(sub_menu=dict(root=MenuItem()))

    class OtherPage(Page):
        menu = MyPage.menu

    page = MyPage(iommi_style='foo_style').bind(request=Struct(path=''))
    assert page.parts.menu.sub_menu.root.attrs['class'] == dict(foo=True)

    page = OtherPage(iommi_style='bar_style').bind(request=Struct(path=''))
    assert page.parts.menu.sub_menu.root.attrs['class'] == dict(bar=True)

    unregister_style('foo_style')
    unregister_style('bar_style')
Пример #3
0
def test_assets_render_from_style():
    register_style(
        'my_style',
        Style(
            test,
            assets__an_asset=Asset.css(attrs__href='http://foo.bar/baz'),
        ))

    class MyPage(Page):
        class Meta:
            iommi_style = 'my_style'

    expected = prettify('''
        <!DOCTYPE html>
        <html>
            <head>
                <title/>
                <link href='http://foo.bar/baz' rel="stylesheet"/>
            </head>
            <body/>
        </html>
    ''')
    actual = prettify(
        MyPage().bind(request=req('get')).render_to_response().content)
    assert actual == expected

    unregister_style('my_style')
Пример #4
0
def test_deprecated_assets_style(settings, capsys):
    settings.DEBUG = True
    register_style(
        'my_style',
        Style(
            test,
            assets__an_asset=Asset.css(attrs__href='http://foo.bar/baz'),
        ))

    captured = capsys.readouterr()
    assert 'Warning: The preferred way to add top level assets config' in captured.out

    settings.DEBUG = False

    expected = prettify('''
        <!DOCTYPE html>
        <html>
            <head>
                <title/>
                <link href='http://foo.bar/baz' rel="stylesheet"/>
            </head>
            <body/>
        </html>
    ''')
    actual = prettify(
        Page(iommi_style='my_style').bind(
            request=req('get')).render_to_response().content)
    assert actual == expected

    unregister_style('my_style')
Пример #5
0
def test_apply_style_not_affecting_definition(settings):
    register_style('my_style', Style(Fragment__attrs__class__foo=True, ))

    register_style('other_style', Style(Fragment__attrs__class__bar=True, ))

    definition = Fragment()

    settings.IOMMI_DEFAULT_STYLE = 'my_style'
    fragment = definition.bind(request=None)
    assert fragment.attrs['class'] == dict(foo=True)

    settings.IOMMI_DEFAULT_STYLE = 'other_style'
    fragment = definition.bind(request=None)
    assert fragment.attrs['class'] == dict(bar=True)

    unregister_style('my_style')
    unregister_style('other_style')
Пример #6
0
def test_style_bulk_form_broken_on_no_form():
    from iommi import Table
    from tests.models import Foo

    register_style('my_style',
                   Style(
                       base,
                       Table__bulk__attrs__class__foo=True,
                   ))

    class MyTable(Table):
        class Meta:
            iommi_style = 'my_style'
            model = Foo

    table = MyTable()
    table = table.bind(request=None)

    assert table.bulk is None

    unregister_style('my_style')
Пример #7
0
def test_style_bulk_form():
    from iommi import Column, Table
    from tests.models import Foo

    register_style('my_style',
                   Style(
                       base,
                       Table__bulk__attrs__class__foo=True,
                   ))

    class MyTable(Table):
        class Meta:
            iommi_style = 'my_style'
            model = Foo

        bar = Column(bulk__include=True)

    table = MyTable()
    table = table.bind(request=None)

    assert 'foo' in render_attrs(table.bulk.attrs)

    unregister_style('my_style')
Пример #8
0
def test_get_config():
    register_style('fruit_style', Style(Fruit__attrs__class__style=True, ))

    class Fruit(Traversable):
        attrs = Refinable()

        @reinvokable
        @dispatch(
            attrs__class__fruit=True, )
        def __init__(self, **kwargs):
            super(Fruit, self).__init__(**kwargs)

        @classmethod
        @class_shortcut(
            attrs__class__some_fruit=True, )
        def some_fruit(cls, *, call_target=None, **kwargs):
            return call_target(**kwargs)

    class SubFruit(Fruit):
        @reinvokable
        @dispatch(
            attrs__class__sub_fruit=True, )
        def __init__(self, **kwargs):
            super(SubFruit, self).__init__(**kwargs)

        @classmethod
        @class_shortcut(
            call_target__attribute='some_fruit',
            attrs__class__sub_some_fruit=True,
        )
        def some_fruit(cls, *, call_target=None, **kwargs):
            return call_target(**kwargs)

    @declarative(Fruit, '_fruits_dict')
    @with_meta
    class Basket(Traversable):
        fruits = Refinable()

        class Meta:
            fruits__banana__attrs__class__basket = True

        @dispatch(
            fruits=EMPTY, )
        def __init__(self, *, _fruits_dict, fruits, **kwargs):
            super(Basket, self).__init__(**kwargs)
            collect_members(self,
                            name='fruits',
                            items_dict=_fruits_dict,
                            items=fruits,
                            cls=Fruit)

        def on_bind(self) -> None:
            bind_members(self, name='fruits')

    class SubBasket(Basket):
        class Meta:
            fruits__banana__attrs__class__sub_basket = True
            iommi_style = 'fruit_style'

    class MyBasket(SubBasket):
        banana = SubFruit.some_fruit(
            attrs__class__my_basket_fruit_invoke=True, )

    basket = MyBasket(
        fruits__banana__attrs__class__my_basket_invoke=True).bind(request=None)

    assert list(basket.fruits.banana.attrs['class'].keys()) == [
        'fruit',
        'sub_fruit',
        'style',
        'basket',
        'sub_basket',
        'my_basket_invoke',
        'some_fruit',
        'sub_some_fruit',
        'my_basket_fruit_invoke',
    ]

    unregister_style('fruit_style')