Easily generate structs based on your ecto schemas.
Add ecto_factory to your list of dependencies in mix.exs
:
def deps do
[{:ecto_factory, "~> 0.0.5"}]
end
Configure your repo
for EctoFactory:
Using the following MyApp.User
module:
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 factories and the repo
to be used for inserting:
#./config.exs
config :ecto_factory, repo: MyApp.Repo
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.
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.