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.

Search Document