- 
          
 - 
                Notifications
    
You must be signed in to change notification settings  - Fork 1.4k
 
Testing extensions against multiple Solidus versions
We usually test our extensions on TravisCI and make use of their build matrix feature to test across multiple Solidus version (as well as both MySQL and PostgreSQL databases).
Here's an example .travis.yml testing versions 1.4 through 2.1 and master:
language: ruby
rvm:
  - 2.3.1
env:
  matrix:
    - SOLIDUS_BRANCH=v1.4 DB=postgres
    - SOLIDUS_BRANCH=v2.0 DB=postgres
    - SOLIDUS_BRANCH=v2.1 DB=postgres
    - SOLIDUS_BRANCH=master DB=postgres
    - SOLIDUS_BRANCH=v1.4 DB=mysql
    - SOLIDUS_BRANCH=v2.0 DB=mysql
    - SOLIDUS_BRANCH=v2.1 DB=mysql
    - SOLIDUS_BRANCH=master DB=mysqlTo use the versions of Solidus specified from the TravisCI build matrix, we need to use those environment variables in the Gemfile. Here's an example:
source "https://rubygems.org"
branch = ENV.fetch('SOLIDUS_BRANCH', 'master')
gem "solidus", github: "solidusio/solidus", branch: branch
if branch == 'master' || branch >= "v2.0"
  gem "rails-controller-testing", group: :test
else
  gem "rails", '~> 4.2.7' # workaround for bundler resolution issue
  gem "rails_test_params_backport", group: :test
end
gem 'pg'
gem 'mysql2'
gemspecRails 5.0 deprecates inheriting directly from ActiveRecord::Migration. Doing so is an error under Rails 5.1. To be able to support both Rails 5.1 and Rails 4.2 from the same extension, we use a helper from solidus_support.
- Add a dependency on 
solidus_supportfrom the.gemspec 
s.add_dependency 'solidus_core', ['>= 1.1', '< 3']
s.add_dependency 'solidus_support'- Require 
solidus_supportfrom the gem's top-level .rb file 
require 'solidus_core'
require 'solidus_support'- Replace all occurrences of ActiveRecord::Migration
 
class MyAwesomeMigration < SolidusSupport::Migration[4.2]
  # ...
endThis can be done automatically with
sed -i 's/ActiveRecord::Migration/SolidusSupport::Migration[4.2]/' db/migrate/*.rbextensions.solidus.io provide an easy to read matrix of the status of various extensions across multiple versions. It's generated from a simple script.
If you'd like to have an extension added, please bring it up in the #solidus Slack.
Rails 5 changed the syntax for making requests in tests from
get :users, {id: '123'}, { user_id: 1 }to
get :users, params: { id: '123'}, session: { user_id: 1 }To allow both of these in a test suite side-by-side we make use of the rails_test_params_backport gem.
This can be fixed automatically using the rails5-spec-converter gem.