nixite/testing/style.test.nix

149 lines
3.5 KiB
Nix

let
style = import ../nixite/style.nix;
elems = import ../nixite/elems.nix;
it = import ./it.nix;
in [
(it "fetches empty style" (let para = (style.component elems.p "para" { });
in {
expected = {
"p" = { };
"p.para" = { };
};
actual = style.getStyle (para "");
}))
(it "fetches style" (let
attrs = { style = { foo = "bar"; }; };
para = (style.component elems.p "para" attrs);
in {
expected = {
"p" = { };
"p.para" = attrs.style;
};
actual = style.getStyle (para "");
}))
(it "appliess class" (let
attrs = { style = { foo = "bar"; }; };
para = (style.component elems.p "para" attrs);
in {
expected = [ "para" ];
actual = (para "").attrs.class;
}))
(it "applies classes from props" (let
attrs = {
style = { foo = "bar"; };
class = [ "other" "class" ];
};
para = (style.component elems.p "para" attrs);
in {
expected = [ "para" "other" "class" ];
actual = (para "").attrs.class;
}))
(it "fetches style for class" (let
s = { foo = "bar"; };
para = (style.component elems.p "para" { style = s; });
in {
expected = {
"p" = { };
"p.para" = s;
};
actual = style.getStyle (para "");
}))
(it "fetches style recursively" (let
s = {
"p" = { };
"div" = { };
"p.para" = { foo = "bar"; };
"div.link" = { this = "that"; };
};
para = (style.component elems.p "para" { style = s."p.para"; });
div = (style.component elems.div "link" { style = s."div.link"; });
in {
expected = s;
actual = style.getStyles (para (div "hello"));
removeDunders = true;
}))
(it "fetches style recursively through lists" (let
s = {
"p" = { };
"div" = { };
"p.para" = { foo = "bar"; };
"div.link" = { this = "that"; };
};
para = (style.component elems.p "para" { style = s."p.para"; });
a = (style.component elems.div "link" { style = s."div.link"; });
in {
expected = s;
actual = style.getStyles (para [ (a "hello") ]);
removeDunders = true;
}))
(it "fetches style recursively with repeats" (let
s = {
"p" = { };
"div" = { };
"p.para" = { foo = "bar"; };
"div.link" = { this = "that"; };
};
para = (style.component elems.p "para" { style = s."p.para"; });
a = (style.component elems.div "link" { style = s."div.link"; });
in {
expected = s;
actual = style.getStyles (para [ (a "hello") (a "hello") ]);
removeDunders = true;
}))
(it "converts styles to string" (let
s = {
"p" = { };
"p.para" = { foo = "bar"; };
"a.link" = { this = "that"; };
};
in {
expected = ''
a.link {
this: that;
}
p.para {
foo: bar;
}
'';
actual = style.stylesToString s;
}))
(it "extends styled tags" (let
s = {
"p.para" = { foo = "bar"; };
"p.oof" = { oof = "yes"; };
};
para = (style.component elems.p "para" { style = s."p.para"; });
para2 = (style.component para "oof" { style = s."p.oof"; });
in {
expected = s;
actual = style.getStyles (para2 "");
removeDunders = true;
}))
(it "extends styled tags classes" (let
s = {
"p" = { };
"div" = { };
"p.para" = { foo = "bar"; };
"p.para.oof" = { oof = "yes"; };
};
para = (style.component elems.p "para" { style = s."p.para"; });
para2 = (style.component para "oof" { style = s."p.para.oof"; });
in {
expected = [ "para" "oof" ];
actual = (para2 "").attrs.class;
}))
]