Ejemplo n.º 1
0
def test_at_rule():
    ext1 = {"color": "ext1"}
    css = {
        ".foo": {
            "margin": "2px"
        },
        "%ext2": {
            "color": "ext2"
        },  # all ext2 usages are here, except from media
        ".bar": extend(ext1),  # all ext1 usages are here, except from media
        "@media all": {
            # all ext2 in media are before, because named extend
            "%ext3": {
                "color": "ext3"
            },  # all ext3 in media are here
            ".barbar":
            extend(ext1),  # all ext1 in media are here, because dict extend
            ".bazbaz": {
                ".qux1": {
                    "margin": "33px"
                },
                ".qux2": extend(ext1, "ext2", "ext3", css={"margin": "44px"}),
            }
        },
        ".baz": {
            "a": {
                "margin": "3px"
            },
            "b": extend(ext1, "ext2", css={"margin": "4px"}),
        }
    }

    assert render_css(css) == """\
Ejemplo n.º 2
0
def test_inner_combine():
    ext1 = combine({"foo": 1}, {"foo": 11})
    css = {
        "%ext2": combine({"bar": 2}, {"bar": 22}),
        "qux": extend(ext1, "ext2", css=combine({"baz": 3}, {"baz": 33})),
        "zzz": extend(ext1, "ext2", css=combine({"zzz": 4}, {"zzz": 44}))
    }

    assert render_css(css) == """\
Ejemplo n.º 3
0
def test_internal_dict():
    css = {
        ".foo": {
            "margin": "2px"
        },
        ".bar": extend({"margin": "1px"}),
        ".baz": {
            "a": {
                "margin": "3px"
            },
            "b": extend({"margin": "1px"}, css={"margin": "4px"}),
        }
    }

    assert render_css(css) == """\
Ejemplo n.º 4
0
def test_defining_name_twice_in_different_scopes():
    css = {
        ".foo": {
            '%my-extend': {
                "margin": "1px"
            },
            "a": extend("my-extend"),
        },
        ".bar": {
            '%my-extend': {
                "margin": "2px"
            },
            "a": extend("my-extend"),
        }
    }

    assert render_css(css) == """\
Ejemplo n.º 5
0
def test_extend_many():
    ext1 = {"color": "ext1"}
    css = {
        ".foo": {
            "margin": "2px"
        },
        "%ext2": {
            "color": "ext2"
        },  # all ext2 usages are here
        ".bar": extend(ext1),  # all ext1 usages are here
        ".baz": {
            "a": {
                "margin": "3px"
            },
            "b": extend(ext1, "ext2", css={"margin": "4px"}),
        }
    }

    assert render_css(css) == """\
Ejemplo n.º 6
0
def test_using_undefined_name():
    css = {
        ".foo": extend('my-extend'),
    }

    with pytest.raises(ValueError) as raised:
        render_css(css)

    assert str(
        raised.value
    ) == "Cannot extend `.foo` with undefined/not yet defined `%my-extend`"
Ejemplo n.º 7
0
def test_with_combine():
    lib = {
        '%my-extend': {
            "margin": "1px"
        },
    }

    css = {
        ".foo": {
            "margin": "2px"
        },
        ".bar": extend('my-extend'),
        ".baz": {
            "a": {
                "margin": "3px"
            },
            "b": extend('my-extend', css={"margin": "4px"}),
        }
    }

    assert render_css(combine(lib, css)) == """\
Ejemplo n.º 8
0
def test_with_children():
    my_extend = {
        "color": "red",
        "a": {
            "color": "blue",
        }
    }

    css = {
        ".foo":
        extend(my_extend,
               css={
                   "background": "white",
                   "a": {
                       "background": "yellow"
                   }
               }),
        ".bar":
        extend(my_extend),
    }

    assert render_css(css) == """\
Ejemplo n.º 9
0
def test_using_name_not_yet_defined():
    css = {
        ".foo": extend('my-extend'),
        '%my-extend': {
            "margin": "1px"
        },
    }

    with pytest.raises(ValueError) as raised:
        render_css(css)

    assert str(
        raised.value
    ) == "Cannot extend `.foo` with undefined/not yet defined `%my-extend`"
Ejemplo n.º 10
0
def test_chaining():
    pad = {"padding": ".5em"}
    pad_box = extend(pad,
                     css={
                         "a": {
                             "text-decoration": "underline"
                         },
                         "p, div": {
                             "border": "solid black 1px",
                         },
                     })
    css = {
        "%message":
        extend(pad_box),
        "%message-important":
        extend("message", css={
            "font-weight": "bold",
            "a": {
                "color": "red"
            }
        }),
        "%message-light":
        extend(
            "message",
            css={  # won't appear as not used
                "opacity": "0.8",
            }),
        ".message-error":
        extend("message-important"),
        ".message-warning":
        extend("message-important"),
        ".message-success, .message-info":
        extend("message", css={"a": {
            "color": "white"
        }}),
    }

    assert render_css(css) == """\
Ejemplo n.º 11
0
def test_internal_named_dict():
    css = {
        ".foo": {
            "margin": "2px"
        },
        '%my-extend': {
            "margin": "1px"
        },
        ".bar": extend('my-extend'),
        ".baz": {
            "a": {
                "margin": "3px"
            },
            "b": extend('my-extend', css={"margin": "4px"}),
        }
    }

    assert render_css(css) == """\
.foo {
  margin: 2px;
}
.bar, .baz b {
  margin: 1px;
}
.baz a {
  margin: 3px;
}
.baz b {
  margin: 4px;
}
"""

    assert render_css(css, mode=Modes.COMPRESSED) == """\
.foo{margin:2px}.bar, .baz b{margin:1px}.baz a{margin:3px}.baz b{margin:4px}"""

    assert render_css(css, mode=Modes.COMPACT) == """\
.foo {margin: 2px}
.bar, .baz b {margin: 1px}
.baz a {margin: 3px}
.baz b {margin: 4px}
"""

    assert render_css(css, mode=Modes.INDENT) == """\
.foo {
    margin: 2px;
}

.bar, .baz b {
    margin: 1px;
}

.baz a {
    margin: 3px;
}

.baz b {
    margin: 4px;
}

"""

    assert render_css(css, mode=Modes.INDENT2) == """\
.foo {
        margin: 2px;
    }

.bar, .baz b {
        margin: 1px;
    }

.baz a {
        margin: 3px;
    }

.baz b {
        margin: 4px;
    }

"""

    assert render_css(css, mode=Modes.INDENT3) == """\
Ejemplo n.º 12
0
 def render_css_global(cls, context):
     return CssDict({
         ".bar": extend(extends["ext"], css={
             "color": "BAR",
         })
     })
Ejemplo n.º 13
0
 def render_css_global(cls, context):
     return CssDict({
         ".foo": extend("ext", css={
             "color": "FOO",
         })
     })