let html = import ../nixite/html.nix; elems = import ../nixite/elems.nix; site = import ../nixite/site.nix; style = import ../nixite/style.nix; it = import ./it.nix; in with site; [ (it "applies a style" { expected = { "index.html" = html.tag "html" { } [ (html.tag "head" { } [ (elems.title { } "foobar") (elems.Stylesheet "/style.css") ]) (elems.main { } "something") ]; blog = { "index.html" = html.tag "html" { } [ (html.tag "head" { } [ (elems.title { } "foobar") (elems.Stylesheet "/style.css") ]) (elems.main { } "blogy blog") ]; }; "style.css" = '' this is a stylesheet ''; }; actual = applyStyle '' this is a stylesheet '' { "index.html" = html.tag "html" { } [ (html.tag "head" { } [ (elems.title { } "foobar") ]) (elems.main { } "something") ]; blog = { "index.html" = html.tag "html" { } [ (html.tag "head" { } [ (elems.title { } "foobar") ]) (elems.main { } "blogy blog") ]; }; }; asJSON = true; }) (it "applies a favicon" { expected = { "index.html" = elems.html { } [ (elems.head { } [ (elems.title { } "foobar") (elems.link { rel = "shortcut icon"; href = ./src/favicon.png; }) ]) (elems.main { } "something") ]; blog = { "index.html" = elems.html { } [ (elems.head { } [ (elems.title { } "foobar") (elems.link { rel = "shortcut icon"; href = ./src/favicon.png; }) ]) (elems.main { } "something") ]; }; }; actual = applyFavicon ./src/favicon.png { "index.html" = elems.html { } [ (elems.head { } [ (elems.title { } "foobar") ]) (elems.main { } "something") ]; blog = { "index.html" = elems.html { } [ (elems.head { } [ (elems.title { } "foobar") ]) (elems.main { } "something") ]; }; }; asJSON = true; }) (it "extracts all styles" { expected = { "p.class" = {color = "blue";}; "a.class2" = {color = "green";}; }; actual = getStyles (let p = style.tag "p" "class" {style = {color = "blue";};}; g = style.tag "a" "class2" {style = {color = "green";};}; in { "index.html" = p ""; blog = { "index.html" = g ""; }; }); removeDunders = true; }) (it "extracts top level paths" { actual = getPaths { something = ""; src = ./src/index.md; }; expected = { "index.md" = ./src/index.md; }; }) (it "extracts lower level paths" { actual = getPaths { something = "yes"; a-list = [ { thingy = ./src/index.md; } [ (html.tag "img" { src = ./src/favicon.png; } "") ] ]; }; expected = { "index.md" = ./src/index.md; "favicon.png" = ./src/favicon.png; }; }) (it "switches paths" { actual = switchPaths { something = ""; a-thing = { src = ./src/index.md; }; a-list = [{ thingy = ./src/index.md; }]; }; expected = { something = ""; a-thing = { src = "/static/index.md"; }; a-list = [{ thingy = "/static/index.md"; }]; }; }) (it "extracts paths" { actual = extractPaths { something = ""; a-thing = { src = ./src/index.md; }; a-list = [{ thingy = ./src/index.md; }]; }; expected = { something = ""; a-thing = { src = "/static/index.md"; }; a-list = [{ thingy = "/static/index.md"; }]; static = { "index.md" = ./src/index.md; }; }; }) ]