README.md

<h1> <img width="400" src="/logos/ectofactory_logo_text.png"/></h1>


Easily generate structs based on your ecto schemas.

[Hex docs homepage](https://hexdocs.pm/ecto_factory/api-reference.html)

## Installation

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

```elixir
def deps do
  [{:ecto_factory, "~> 0.0.3"}]
end
```

## Usage

Using the following `MyApp.User` module:

```elixir
defmodule MyApp.User do
  use Ecto.Schema

  schema "users" do
    field :age, :integer
    field :username, :string
    field :date_of_birth, Ecto.DateTime
  end
end

```

Configure ecto_factory in a few different ways.

```elixir
#./config.exs

config :ecto_factory, factories: [
  :user, MyApp.User 

  :user_with_defaults, { MyApp.User, [
    age: 99,
    username: "mrmicahcooper"
    date_of_birth: Ecto.DateTime.cast!("2012-12-12"),
  ] }
]
```

And that's it. Now use `EctoFactory.build` to create structs.

```elixir
EctoFactory.build(:user) 
#=> %MyApp.User{age: 1, username: "username, date_of_birth: #Ecto.DateTime<2016-06-14T17:03:22Z>}

EctoFactory.build(:user, username: "hashrocket")
#=> %MyApp.User{age: 1, username: "hashrocket, date_of_birth: #Ecto.DateTime<2016-06-14T17:03:22Z>}

EctoFactory.build(:user_with_defaults)
#=> %MyApp.User{age: 99, username: "mrmicahcooper, date_of_birth: #Ecto.DateTime<2012-12-12T00:00:00Z>}

```

EctoFactory uses the fields you've defined in your schema to create some basic data that can be easily overwritten with a very small amount of configuration.