README.md

# SqlFormatter

**TODO: Add description**

## Installation

If [available in Hex](https://hex.pm/docs/publish), the package can be installed
by adding `sql_formatter` to your list of dependencies in `mix.exs`:

```elixir
def deps do
  [
    {:sql_formatter, "~> 1.0.0"}
  ]
end
```

Documentation can be generated with [ExDoc](https://github.com/elixir-lang/ex_doc)
and published on [HexDocs](https://hexdocs.pm). Once published, the docs can
be found at <https://hexdocs.pm/sql_formatter>.

## Usage

``` elixir
SQLFormatter.format("SELECT * FROM users")
#=>
"""
SELECT
  *
FROM
  users
"""
```

## Tests

This library provides functionality to test sql generation and compare it in a readable format.

First you'll need to configure your ExUnit formatter. In `test/test_helper.exs` add to the top:

``` elixir
ExUnit.configure(formatters: [SQLFormatter.ExUnit.CLIFormatter])
```

In test modules you can then import assertions:

``` elixir
import SQLFormatter.Assertions
```

Then assert equality between sql strings:

``` elixir
assert_sql_equal "SELECT * FROM users", "SELECT * FROM users"
refute_sql_equal "SELECT * FROM users", "SELECT * FROM peons"
```

When used like this any SQL is formatted before comparison and when there are errors they're shown in a more readable format.

*NOTE: Color diffing not shown below*

``` text
  1) test formats simple SQL (SQLFormatterTest)
     test/sql_formatter_test.exs:7
     SQL strings do not match
     code:  assert_sql_equal(unformatted_sql, formatted_sql)
     left:  """
            SELECT
              *
            FROM
              users
            WHERE
              id = 1
            """

     right: """
            SELECT
              *
            FROM
              user
            WHERE
              id = 1
            """

     stacktrace:
       test/sql_formatter_test.exs:20: (test)
```