plushie/testing
Test facade for plushie applications.
Provides a pure functional test harness that runs the Elm loop (init -> update -> view -> normalize) without the Rust binary. State is threaded immutably through each operation.
Usage
let session = test.start(my_app)
let session = test.click(session, "increment")
let model = test.model(session)
should.equal(model.count, 1)
Values
pub fn click(
session: session.TestSession(model, event.Event),
id: String,
) -> session.TestSession(model, event.Event)
Simulate a click on a widget by ID.
pub fn element_children(
el: element.Element,
) -> List(element.Element)
Get an element’s children.
pub fn element_prop(
el: element.Element,
key: String,
) -> option.Option(node.PropValue)
Get a prop value from an element.
pub fn element_text(el: element.Element) -> option.Option(String)
Extract text content from an element.
pub fn find(
session: session.TestSession(model, event.Event),
id: String,
) -> option.Option(element.Element)
Find an element by ID in the session’s current tree.
pub fn model(
session: session.TestSession(model, event.Event),
) -> model
Return the current model from the session.
pub fn select(
session: session.TestSession(model, event.Event),
id: String,
value: String,
) -> session.TestSession(model, event.Event)
Simulate selection on a widget by ID.
pub fn send_event(
session: session.TestSession(model, event.Event),
event: event.Event,
) -> session.TestSession(model, event.Event)
Dispatch a raw event through the update cycle.
pub fn slide(
session: session.TestSession(model, event.Event),
id: String,
value: Float,
) -> session.TestSession(model, event.Event)
Simulate a slider change by ID.
pub fn start(
app: app.App(model, event.Event),
) -> session.TestSession(model, event.Event)
Start a test session for a simple app (msg = Event).
pub fn submit(
session: session.TestSession(model, event.Event),
id: String,
) -> session.TestSession(model, event.Event)
Simulate form submission on a widget by ID.
pub fn toggle(
session: session.TestSession(model, event.Event),
id: String,
) -> session.TestSession(model, event.Event)
Simulate a checkbox/toggler toggle by ID.
pub fn tree(
session: session.TestSession(model, event.Event),
) -> node.Node
Return the current normalized tree from the session.
pub fn type_text(
session: session.TestSession(model, event.Event),
id: String,
text: String,
) -> session.TestSession(model, event.Event)
Simulate text input on a widget by ID.