import { Renderer } from './ryuji.js';
import { test_assert_equal, log_test_results } from './endosulfan.js';
//tests for ryuji
let renderer = new Renderer("./templates", "/components");
test_assert_equal(
renderer.render(
"
[[ a ]]
\nlorem ipsum dolorum
\n\n c: [[ html:c ]] ff: [[ d.ee.ff ]]\n
",
{
a: "yee haw",
b: 1,
c: "yee haw",
d: {
dd: "cheeseburgers",
ee: {
ff: "a"
},
},
}
),
"yee haw
\nlorem ipsum dolorum
\n\n c: yee haw ff: <i>a</i>\n
",
"simple variable test"
);
test_assert_equal(
renderer.render(
"\n
abcd
\n
extra text: [[ if:extra_text ]][[ extra_text ]][[ endif ]]\n
[[ if:extra_text2 ]][[ extra_text2 ]][[ endif ]]\n
",
{
editable_paragraph: true,
extra_text: "",
extra_text2: "this is extra text",
}
),
"\n
abcd
\n
extra text: \n
this is extra text\n
",
"if statement test"
);
test_assert_equal(
renderer.render(
"[[ if:a ]][[ if:b ]]a and b are true[[ endif ]][[ endif ]], yay![[ if:c ]][[ if:d.a ]]but this will not show up[[ endif ]][[ endif ]]",
{
a: true,
b: true,
c: false,
d: {
a: false,
},
}
),
"a and b are true, yay!",
"nested if statement test"
);
test_assert_equal(
renderer.render(
"\n [[ for:loop_over ]][[ endfor ]]\n
\n[[ for:loop_over:item ]][[ endfor ]]
",
{
loop_over: [],
}
),
"\n",
"empty for loop test"
);
test_assert_equal(
renderer.render(
"[[ for:letters:letter ]][[ if:letter.show ]][[ letter.letter ]]
[[ endif ]][[ endfor ]]",
{
letters: [
{
letter: "a",
show: true,
},
{
letter: "b",
show: false,
},
{
letter: "c",
show: true,
},
{
letter: "d",
show: false,
},
],
}
),
"a
c
",
"nested for loop with if statement test"
);
//for loop and template
test_assert_equal(
Renderer.remove_empty_lines(
renderer.render(
"\n
\n [[ for:posts:post ]]\n [[ component:post-listing ]]\n - [[ for:numbers ]]abc[[ endfor ]]
\n [[ endfor ]]\n
\n
",
{
numbers: [1, 2, 3],
posts: [
{
slug: "abc",
title: "Abc!",
},
{
slug: "san-shi-san",
title: "San Shi San",
}
]
}
)
),
"",
"for loop with template test"
);
log_test_results();