rom-rb / rom-factory

Data generator with support for persistence backends
MIT License
83 stars 42 forks source link

Inconsistent behaviour with default schema values in factories #68

Open trafium opened 3 years ago

trafium commented 3 years ago

Describe the bug

I am using rom-rb with rom-sql and rom-factory. In short, a struct creation via factory (Factory.structs[:foo]) is not using default type value unless schema also has unrelated jsonb type field. Took me forever to isolate the source of issue to that jsonb type column 😅

To Reproduce

Example repo: https://github.com/trafium/rom_factory_bug

To run:

bundle exec rake db:create
bundle exec rake db:migrate
ruby test.rb

The output is:

#<Entities::Foo column_with_default=nil id=1 random_column=nil>
#<Entities::Bar column_with_default="default" id=1 random_column=nil>

Expected behavior

#<Entities::Foo column_with_default="default" id=1 random_column=nil>
#<Entities::Bar column_with_default="default" id=1 random_column=nil>

I am not sure what is the expected behaviour for rom-factory, but I would expect it should always use default values for factory structs creation.

My environment

solnic commented 3 years ago

Thanks for reporting and isolating the issue. I'm working on rom 6.0 at the moment but rom-factory will be greatly improved and upgraded along with rom 6.0. I will make sure all known issues are addressed, including this one.