# ExUnitFixtures

A library for defining modular dependencies (fixtures) for ExUnit tests.

#### What are Fixtures?

Fixtures in ExUnitFixtures are just functions that are run before a test.

They can be used to setup the tests environment somehow, or provide the test
with some data that it requires. Similar in purpose to `setup` & `setup_all` but
more powerful:

- Tests explicitly list what fixtures they require, ensuring that no
  un-neccesary setup work is done.
- Fixtures may be shared across many tests in a project.
- Fixtures may depend on or override other fixtures, allowing core fixtures to
  be used & customised as each subsystem or test module requires.

## Installation

  1. Add ex_unit_fixtures to your list of dependencies in `mix.exs`:

        def deps do
          [{:ex_unit_fixtures, "~> 0.3.0", only: [:test]}]

## Documentation

The documentation can be found on

## Example

Say some of your tests required a model named `my_model`. You should define a
fixture fixture using `deffixture`, then tag your test to say it requires this

    defmodule MyTests do
      use ExUnitFixtures
      use ExUnit.Case

      deffixture my_model do
        # Create a model somehow...
        %{test: 1}

      @tag fixtures: [:my_model]
      test "that we have some fixtures", context do
        assert context.my_model.test == 1

More details can be found in
[the documentation](