refactor(kanban): render test board payload with hemplate
Replace the Kanban generated-slot unit test's inline raw HTML board payload with a hemplate-rendered view and DOM-aware assertion. req: html_safety/002 req: view/001 req: test/005
This commit is contained in:
@@ -4,17 +4,48 @@ pub mod ui {}
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::ui;
|
||||
use slhx::{IntoEffect, SafeHtml};
|
||||
use hemplate::Hemplate;
|
||||
use scraper::{Html, Selector};
|
||||
use slhx::{Effect, IntoEffect, Payload, SafeHtml};
|
||||
use slhx_test::inspect;
|
||||
|
||||
#[derive(Hemplate)]
|
||||
#[hemplate = "partials"]
|
||||
struct BoardColumns {
|
||||
columns: Vec<String>,
|
||||
}
|
||||
|
||||
// req: examples/001 req: codegen/002 req: list/003
|
||||
#[test]
|
||||
fn kanban_board_updates_generated_slot() {
|
||||
fn render_board() -> impl IntoEffect {
|
||||
ui::board::slots::board.html(SafeHtml::trusted("<div class=\"columns\"></div>"))
|
||||
ui::board::slots::board.html(render_empty_board())
|
||||
}
|
||||
|
||||
assert!(inspect(render_board()).has_slot(ui::board::slots::board));
|
||||
let effect = inspect(render_board());
|
||||
assert!(effect.has_slot(ui::board::slots::board));
|
||||
assert!(matches!(effect.ops(), [Effect::Put { payload: Payload::Html(_), .. }]));
|
||||
}
|
||||
|
||||
// req: html_safety/002 req: view/001 req: test/005
|
||||
#[test]
|
||||
fn kanban_board_test_payload_is_rendered_by_a_hemplate_view() {
|
||||
let html = render_empty_board();
|
||||
let document = Html::parse_fragment(html.as_str());
|
||||
assert_eq!(document.select(&selector(".columns")).count(), 1);
|
||||
}
|
||||
|
||||
fn render_empty_board() -> SafeHtml {
|
||||
// req: html_safety/002 req: view/001
|
||||
SafeHtml::trusted(
|
||||
BoardColumns { columns: Vec::new() }
|
||||
.render()
|
||||
.expect("kanban board test view renders"),
|
||||
)
|
||||
}
|
||||
|
||||
fn selector(value: &str) -> Selector {
|
||||
Selector::parse(value).expect("test selector parses")
|
||||
}
|
||||
|
||||
// req: examples/001 req: form/002 req: codegen/003
|
||||
|
||||
Reference in New Issue
Block a user