Skip to content

jbranchaud/ecto_factory

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Easily generate structs based on your ecto schemas.

Hex docs homepage

Installation

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.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Elixir 100.0%