Skip to content

sinetris/factory_girl_elixir

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FactoryGirlElixir

Build Status

Minimal implementation of Ruby's factory_girl in Elixir.

This is a rewrite of the factory_boy project to make it work on Elixir v1.0.x.

Usage

Add FactoryGirlElixir as a dependency in your mix.exs file.

defp deps do
  [
    {:factory_girl_elixir, "~> 0.1.1"}
  ]
end

You should also update your applications list to include both projects:

def application do
  [applications: [:factory_girl_elixir]]
end

After you are done, run mix deps.get in your shell to fetch the dependencies.

Defining a Factory

defmodule Factory do
  use FactoryGirlElixir.Factory

  factory :user do
    field :password, "secret"
    # create a sequence using an anonymous functions
    field :username, fn(n) ->
      "username#{n}"
    end
    # or an anonymous functions shortcut
    field :email, &("foo#{&1}@example.com")
  end

  factory :assets do
    field :name, "bob"
  end
end

Then query the module to get a list of attributes for your record

user = Factory.attributes_for(:user) #=> %{password: "secret", username: "username1", email: "[email protected]"}
parametrized_user = user |> Factory.parametrize
#=> %{"email" => "[email protected]", "password" => "secret", "username" => "username1"}

You can override attributes

user = Factory.attributes_for(:user, email: "[email protected]")
#=> %{password: "secret", username: "username1", email: "[email protected]"}

Contributing

  1. Fork this repo
  2. Create a topic branch - git checkout -b my_branch
  3. Push to your branch - git push origin my_branch
  4. Create a Pull Request from your branch
  5. That's it!

Copyright and license

Copyright (c) 2014 Duilio Ruggiero. Code released under the MIT license.

About

Minimal implementation of Ruby's factory_girl in Elixir.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages