# Adh

[![Elixir CI](](

A tiny library of helpers to make assertions on DOM.

Powered by [Floki](

## Installation

Add Adh to your `mix.exs`:

defp deps do
    {:adh, "~> 0.1.0"}

## Usage

Adh.dom_assert(html_string, assertions)

Where `assertions` is a Keyword list.

The currently available assertions are:

* `dom_count: {"li", 3}` There must be 3 li elements
* `dom_present: "ul"` A ul is present in the document
* `dom_absent: "p"` A p is absent from the document
* `dom_single: "ul"` There's only one ul
* `dom_multi: "li"` There are multiple li
* `dom_text: {"li:last-child", "o/"}` The text of the element is "o/"
* `dom_text: {"li", ["t1", "t2", "t3"]}` There are 3 li elements and their text is "ti", "t2" and "t3"

`Ahd.dom_assert` return a list of `:ok` if the assertion was succesfull, or `{:fail, reason}` otherwhise.


iex(1)> html = "<p>o/ <span class='red'>dog</span></p>"
iex(2)> assertions = [dom_count: {"p", 1}, dom_text: {".red", "dig"}]
iex(2)> Adh.dom_assert(html, assertions)
[:ok, {:fail, "dom text: got `dog` instead of `dig`."}]