pat / combustion

Simple, elegant testing for Rails Engines
MIT License
707 stars 51 forks source link

Rails 6 - ActiveRecord::MigrationContext.new expects 2 args #98

Closed WilsonChiang closed 4 years ago

WilsonChiang commented 5 years ago

https://github.com/pat/combustion/blob/master/lib/combustion/database/migrate.rb#L47

Looks like ActiveRecord::MigrationContext.new now expects to be called with 2 args (https://github.com/rails/rails/blob/master/activerecord/lib/active_record/migration.rb#L1018)

Failure/Error: Combustion.initialize! :all

ArgumentError:

wrong number of arguments (given 1, expected 2)
# /usr/local/bundle/bundler/gems/rails-c81d6448ad2d/activerecord/lib/active_record/migration.rb:1020:in `initialize'
# /usr/local/bundle/gems/combustion-1.1.0/lib/combustion/database/migrate.rb:47:in `new'
# /usr/local/bundle/gems/combustion-1.1.0/lib/combustion/database/migrate.rb:47:in `migration_context'
# /usr/local/bundle/gems/combustion-1.1.0/lib/combustion/database/migrate.rb:10:in `call'
# /usr/local/bundle/gems/combustion-1.1.0/lib/combustion/database/migrate.rb:5:in `call'
# /usr/local/bundle/gems/combustion-1.1.0/lib/combustion/database.rb:19:in `setup'
# /usr/local/bundle/gems/combustion-1.1.0/lib/combustion.rb:40:in `block in include_database'
# /usr/local/bundle/bundler/gems/rails-c81d6448ad2d/activesupport/lib/active_support/callbacks.rb:429:in `instance_exec'
# /usr/local/bundle/bundler/gems/rails-c81d6448ad2d/activesupport/lib/active_support/callbacks.rb:429:in `block in make_lambda'
# /usr/local/bundle/bundler/gems/rails-c81d6448ad2d/activesupport/lib/active_support/callbacks.rb:201:in `block (2 levels) in halting'
# /usr/local/bundle/bundler/gems/rails-c81d6448ad2d/activesupport/lib/active_support/callbacks.rb:607:in `block (2 levels) in default_terminator'
# /usr/local/bundle/bundler/gems/rails-c81d6448ad2d/activesupport/lib/active_support/callbacks.rb:606:in `catch'
# /usr/local/bundle/bundler/gems/rails-c81d6448ad2d/activesupport/lib/active_support/callbacks.rb:606:in `block in default_terminator'
# /usr/local/bundle/bundler/gems/rails-c81d6448ad2d/activesupport/lib/active_support/callbacks.rb:202:in `block in halting'
# /usr/local/bundle/bundler/gems/rails-c81d6448ad2d/activesupport/lib/active_support/callbacks.rb:514:in `block in invoke_before'
# /usr/local/bundle/bundler/gems/rails-c81d6448ad2d/activesupport/lib/active_support/callbacks.rb:514:in `each'
# /usr/local/bundle/bundler/gems/rails-c81d6448ad2d/activesupport/lib/active_support/callbacks.rb:514:in `invoke_before'
# /usr/local/bundle/bundler/gems/rails-c81d6448ad2d/activesupport/lib/active_support/callbacks.rb:134:in `run_callbacks'
# /usr/local/bundle/bundler/gems/rails-c81d6448ad2d/activesupport/lib/active_support/reloader.rb:88:in `prepare!'
# /usr/local/bundle/bundler/gems/rails-c81d6448ad2d/railties/lib/rails/application/finisher.rb:113:in `block in <module:Finisher>'
# /usr/local/bundle/bundler/gems/rails-c81d6448ad2d/railties/lib/rails/initializable.rb:32:in `instance_exec'
# /usr/local/bundle/bundler/gems/rails-c81d6448ad2d/railties/lib/rails/initializable.rb:32:in `run'
# /usr/local/bundle/bundler/gems/rails-c81d6448ad2d/railties/lib/rails/initializable.rb:61:in `block in run_initializers'
# /usr/local/bundle/bundler/gems/rails-c81d6448ad2d/railties/lib/rails/initializable.rb:60:in `run_initializers'
# /usr/local/bundle/bundler/gems/rails-c81d6448ad2d/railties/lib/rails/application.rb:363:in `initialize!'
# /usr/local/bundle/bundler/gems/rails-c81d6448ad2d/railties/lib/rails/railtie.rb:190:in `public_send'
# /usr/local/bundle/bundler/gems/rails-c81d6448ad2d/railties/lib/rails/railtie.rb:190:in `method_missing'
# /usr/local/bundle/gems/combustion-1.1.0/lib/combustion.rb:32:in `initialize!'
# ./spec/rails_helper.rb:9:in `<top (required)>'
pat commented 5 years ago

Ah, thanks for pointing this out!

I've just pushed a fix, but I'm going to hold off on a gem release given the change in Rails isn't part of a release yet either. So, you're welcome to use Combustion via the git repo in the meantime :)

pat commented 4 years ago

I've recently released v1.1.1 with the previously mentioned fix - and thus supporting Rails 6.0.0.rc2 - so I'm going to consider this issue all sorted :)

Lykos commented 4 years ago

Hey, I just wanted to say that I am really thankful for this issue. I tried forever on how to get a test for migrations to work. I couldn't figure out what to pass to schema_migrations. I googled and tried for hours, but there isn't really much documentation. But thanks to this issue, I finally found it!

See this stackoverflow question for more details (already self-answered): https://stackoverflow.com/questions/60974746/what-do-i-pass-to-schema-migration-in-activerecordmigrationcontextnew/60975003#60975003