forked from thoughtbot/factory_bot
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add per model automatically_define_enum_traits option
Currently you can only specify whether to automatically define enum traits at a global level, through `FactoryBot.automatically_define_enum_traits`. This means that an entire codebase has to either opt-in, or opt-out from automatically defining enum traits. If you are in a large, established codebase with lots of enum's, this is quite hard to change globally when you find that automatically defining them doesn't fit for your new use case. If we could override this at a per-factory level, we could allow individual factories to override the global setting where appropriate, in order to do customise them where necessary. Given `FactoryBot.automatically_define_enum_traits` being set to `true`, and a model called `Task` with the following enum definition: ``` class Task enum :confirmed_by, [:user, :organisation], prefix: true end ``` You would be able to override disable this on a per-factory basis like so: ``` FactoryBot.define do factory :task, automatically_define_enum_traits: false do confirmed_by { :user } trait :org_confirmed do confirmed_by { :organisation } end end end ``` If `FactoryBot.automatically_define_enum_traits` was instead set to `false`, then the same model with a factory override set to `true` you would end up with the following automatic traits: ``` FactoryBot.define do factory :task, automatically_define_enum_traits: true do # The :user and :organisation traits below would be automatically # defined in the following way: # # trait :user do # confirmed_by { :user } # end # trait :organisation do # confirmed_by { :organisation } # end end end ``` Fixes: thoughtbot#1597 Co-Authored-By: Julia Chan <julia.chan@freeagent.com>
- Loading branch information
1 parent
9b9b24f
commit f3e9265
Showing
4 changed files
with
94 additions
and
7 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters