ExMachina is a library for creating test data in Elixir. We’ve made a number of improvements and bug fixes since 1.0. Read on for notable changes, or checkout the CHANGELOG for a full list of changes.
Automatic Casting
The biggest change in ExMachina 2.0 is the automatic casting of values on
insert
. Now, instead of having to cast dates or decimals manually, you can let
ExMachina do the dirty work for you. Consider this schema:
schema "items" do
field :price, :decimal
end
In ExMachina 1.0, you’d have to set the price as a Decimal
manually:
insert(:item, price: Decimal.new(100))
# => %Item{price: #Decimal<100>}
In ExMachina 2.0, you can pass the uncast value as you would in Ecto, and ExMachina will handle casting for you:
insert(:item, price: 100)
# => %Item{price: #Decimal<100>}
params_*
improvements
Thanks to pdawczak for contributing a new
function string_params_for
, which is handy for generating params in controller
test. We’ve also made some changes to the params
family of functions, to
better handle nil
values and associations.
Upgrading to ExMachina 2.0
Due to changes with the params
functions, there may be some breakage in
upgrading. See the CHANGELOG for more details about what’s changed.
Thanks to our contributors
As always, thanks to all of our contributors, who make open source software possible!