README.md

# Snapshy

Snapshy is an Elixir package for running snapshot tests in ExUnit. More extensive documentation is coming soon.

## Installation

Add `snapshy` to your list of dependencies in `mix.exs` and run `mix deps.get`:

```elixir
def deps do
  [
    # ...
    {:snapshy, "~> 0.1.0"}
  ]
end
```

## Overview

The way this works:

1. Add Snapshy to the test

```diff
 defmodule TokenizerTest do
+  use Snapshy
   use ExUnit.Case

   # ...
 end
```

2. Replace `test` with `test_snapshot`

```diff
-  test "correctly tokenizes booleans" do
+  test_snapshot "correctly tokenizes booleans" do
     # ...
   end
```

3. Replace an assertion with simple function call

```diff
-    assert(
-      tokens("true false") == [
-        boolean: "true",
-        boolean: "false"
-      ]
-    )
+    tokens("true false")
```

The first time a snapshot will be created in `test/__snapshots__/path/to/test_file/function_name.stub`. The second time, an assertion will be made against the snapshot. If you make changes and you want to update snapshots, run `SNAPSHY_OVERRIDE=true mix test` instead of `mix test`. Verify in git every change is correct.

Alternatively, you can use a macro call instead of the `test_snapshot` macro like so:
```elixir
test "correctly tokenizes booleans" do
  match_snapshot tokens("true false")
end
```
**Careful!** There can only be one `match_snapshot` call per test macro call.