README.md

phoenix_integration
========

## Documentation

You can read [the full documentation here](https://hexdocs.pm/phoenix_integration).

## Overview

PhoenixIntegration is set of lightweight, server-side integration test functions for Phoenix.
Works within the existing `Phoenix.ConnTest` framework and emphasizes both speed and readability.

The goal is to chain together a string of requests and assertions that thouroughly
excersize your application in as lightweight and readable manner as possible.

Each function accepts a conn and some other data, and returns a conn intended to be
passed into the next function via a pipe.

```elixir
test "Basic page flow", %{conn: conn} do
  # get the root index page
  get( conn, page_path(conn, :index) )
  # click/follow through the various about pages
  |> follow_link( "About Us" )
  |> follow_link( "Contact" )
  |> follow_link( "Privacy" )
  |> follow_link( "Terms of Service" )
  |> follow_link( "Home" )
  |> assert_response( status: 200, path: page_path(conn, :index) )
end

test "Create new user", %{conn: conn} do
  # get the root index page
  get( conn, page_path(conn, :index) )
  # click/follow through the various about pages
  |> follow_link( "Sign Up" )
  |> follow_form( %{ user: %{
        name: "New User",
        email: "user@example.com",
        password: "test.password",
        confirm_password: "test.password"
      }} )
  |> assert_response(
      status: 200,
      path: page_path(conn, :index),
      html: "New User" )
end
```

## Installation

### Step 1

Tell phoenix_integration what Endpoint to use.
To do this, add the following to your `config/test.exs` file

```elixir
config :phoenix_integration,
  endpoint: MyApp.Endpoint
```

Where MyApp is the name of your app.

### Step 2

Add PhoenixIntegration to the deps section of your application's `mix.exs` file

```elixir
defp deps do
  [
    # ...
    {:phoenix_integration, "~> 0.1.0"}
    # ...
  ]
end
```
### Step 3

Run `mix deps.get` on the command line.

## Documentation

You can read [the full documentation here](https://hexdocs.pm/phoenix_integration).