#![cfg(feature = "flow-markdown")]
use hydrolysis_m3::install as install_m3;
use waterui::ViewExt as _;
use waterui::env::use_env;
use waterui::metadata::Metadata;
use waterui::prelude::*;
use waterui::view::ViewConfiguration as _;
use waterui::widget::code::CodeConfig;
use waterui::widget::{RichText, flow_markdown};
use waterui_testing::UiBuilder;
const DOC: &str = "\
```rust
fn main() {}
```
```puzzle
this is not a programming language
```
";
#[waterui::test(viewport = (700, 900), theme = install_m3)]
fn an_unclaimed_fence_names_its_language(ui: UiBuilder) {
let mut app = ui.mount(|| RichText::from_markdown(DOC));
app.query().label("Rust").assert_exists();
app.query().label("Copy").assert_exists();
}
#[waterui::test(viewport = (700, 900), theme = install_m3)]
fn a_hook_claims_only_the_token_it_recognises(ui: UiBuilder) {
let mut app = ui.mount(|| {
use_env(|mut env: Environment| {
env.insert_hook::<CodeConfig, AnyView>(|_env, config| match config.info.as_deref() {
Some("puzzle") => AnyView::new(text("solved").a11y_label("claimed")),
_ => AnyView::new(config.render()),
});
Metadata::new(RichText::from_markdown(DOC), env)
})
});
app.query().label("claimed").assert_exists();
app.query().label("Rust").assert_exists();
}
#[waterui::test(viewport = (700, 900), theme = install_m3)]
fn a_fence_in_flow_markdown_names_its_language(ui: UiBuilder) {
let mut app = ui.mount(|| flow_markdown(DOC));
app.query().label("Rust").assert_exists();
}