The noteworthy changes for each ExMachina version are included here. For a complete changelog, see the git history for each version via the version links.
To see the dates a version was published see the hex package page.
- Allow setting sequence starting point (#414)
- Pass opts to Repo.insert! (add function-level opts to strategies) (#411)
- Import evaluate_lazy_attributes for ExMachina (#410)
- Allow delayed evaluation of attributes (#408)
- Allow ExMachina.Ecto to be used without :repo option (#370)
- Adds additional callbacks for functions with default params (#319)
- Bump ex_doc from 0.19.1 to 0.19.3
- Bump ecto_sql from 3.0.0 to 3.0.5
- Bump ecto from 3.0.0 to 3.0.5
- Adds support for Ecto 3.0 (#301)
- Fixes sequence typespec (#278)
- Removed
fields_for/2
function that would raise an error since 1.0.0 (#287)
- Adds support for using lists in sequences (#227).
- Elixir 1.6.x changed the behavior of
Regex.split/3
which caused factory names to break. Added a fix in (#275).
- Support bare maps in embeds https://github.com/thoughtbot/ex_machina/commit/efd4e7c6125843d20b8dd07d91ded6240ecaf5ef
- Handle nested structures in
string_params_for/2
#224
- Handle the number
0
in*_list
functions https://github.com/thoughtbot/ex_machina/commit/012e957e7ab1e22eca18b62e8f3fcc2a98a7f286
- Miscellaneous documentation improvements.
-
Cast all values before insert (#149)
For example, this means that if you have
field :equity, :decimal
in your schema, you can set the value to0
in your factory and it will automatically cast the value to a Decimal. -
Add
string_params_for
, which is useful for controller specs. (#168) -
Add
Sequence.reset/0
for resetting sequences between tests. (#151)
params_*
functions now drop fields withnil
values (#148)- Don't delete
has_many
s fromparams_*
functions (#174)
- Fix an issue where values on embedded associations would not be cast (#200)
- Only drop autogenerated ids (#147)
- Fix an issue where setting an association to
nil
would breakinsert
(#193) - Fix an issue where unbuild has_many through associations were not removed in
params_*
functions (#192)
Minor documentation fixes
Small change to the error generated when a factory definition is not found (#142)
A lot has changed but we tried to make upgrading as simple as possible.
To upgrade: In mix.exs
change the version to "~> 1.0"
and run mix deps.get
. Once you've updated, run mix test
and ExMachina will raise errors
that show you what needs to change to work with 1.0.0.
- Add
Sequence.next/1
for quickly creating sequences. Example:sequence("username")
will generate"username1"
, then"username2"
(#84) - Raise if passing invalid keys to structs (#99)
- Add
params_with_assocs
(#124)
- Rename
fields_for
toparams_for
(#98) - If using ExMachina with Ecto, use
insert
,insert_list
andinsert_pair
instead ofcreate_*
- Instead of defining a custom
save_record
, you can now implement anExMachina.Strategy
. See the documentation on hex.pm for more info (#102) - Define factory as
user_factory
instead offactory(:user)
(#110). See PR and related issue for details on why this was changed. params_for
no longer returns the primary key (#123)
Removes warnings as reported by #70. We recommend updating if you are using Ecto 1.1. There are no backward incompatible changes and no new features.
You can continue using ExMachina 0.5.0 if you are not ready for Ecto 1.1 yet. There are no additional new features in this release.
- Updated to use Ecto 1.1
- Require Ecto 1.1
There are still some warnings that we need to fix for Ecto 1.1, but this release at least fixes the error that was caused when upgrading to Ecto 1.1.
- Factories were simplified so that
attrs
is no longer required. See 70a0481 and issue #56 - ExMachina.Ecto.assoc/3 was removed. You can now use build(:factory) instead. See discussion in issue #56
- Use association id as defined on the schema 7c67047
- Add support for
has_many
andhas_one
Ecto associations. See 1ff4198.
- Factories must now be defined with functions. See 59b7d23
- Add
build_list
andbuild_pair
. See 8f332ce. - Add a
create
method that takes a map. This allows you to chain functions like:build(:foo) |> make_admin |> create
. See 59cbef5.
- Factories must now be defined with a macro. See 03c41f6
belongs_to
associations are now built instead of created. See b518285.
- Ecto functionality was extracted to
ExMachina.Ecto
. See 270c19b.