Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/sinetris/factory_girl_elixir
Minimal implementation of Ruby's factory_girl in Elixir.
https://github.com/sinetris/factory_girl_elixir
Last synced: 7 days ago
JSON representation
Minimal implementation of Ruby's factory_girl in Elixir.
- Host: GitHub
- URL: https://github.com/sinetris/factory_girl_elixir
- Owner: sinetris
- License: mit
- Created: 2014-07-15T10:59:27.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2015-06-02T08:39:25.000Z (over 9 years ago)
- Last Synced: 2024-07-08T16:12:48.010Z (4 months ago)
- Language: Elixir
- Homepage:
- Size: 187 KB
- Stars: 43
- Watchers: 4
- Forks: 5
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- freaking_awesome_elixir - Elixir - Minimal implementation of Ruby's factory_girl in Elixir. (Testing)
- fucking-awesome-elixir - factory_girl_elixir - Minimal implementation of Ruby's factory_girl in Elixir. (Testing)
- awesome-elixir - factory_girl_elixir - Minimal implementation of Ruby's factory_girl in Elixir. (Testing)
README
# FactoryGirlElixir
[![Build Status](https://travis-ci.org/sinetris/factory_girl_elixir.svg?branch=master)](https://travis-ci.org/sinetris/factory_girl_elixir)
Minimal implementation of Ruby's [factory_girl](http://github.com/thoughtbot/factory_girl) in Elixir.
This is a rewrite of the [factory_boy](https://github.com/inkr/factory_boy) project to make it work on Elixir v1.0.x.
## Usage
Add FactoryGirlElixir as a dependency in your `mix.exs` file.
```elixir
defp deps do
[
{:factory_girl_elixir, "~> 0.1.1"}
]
end
```You should also update your applications list to include both projects:
```elixir
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
```elixir
defmodule Factory do
use FactoryGirlElixir.Factoryfactory :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")
endfactory :assets do
field :name, "bob"
end
end
```Then query the module to get a list of attributes for your record
```elixir
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
```elixir
user = Factory.attributes_for(:user, email: "[email protected]")
#=> %{password: "secret", username: "username1", email: "[email protected]"}
```## Contributing
1. [Fork](https://help.github.com/articles/fork-a-repo) 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](http://help.github.com/pull-requests/) from your
branch
5. That's it!## Copyright and license
Copyright (c) 2014 Duilio Ruggiero. Code released under [the MIT license](LICENSE).