solidus_extension_dev_tools

This is a collection of tools for developing Solidus extensions.

Installation

Add this gem as a development dependency of your extension:

spec.add_development_dependency 'solidus_extension_dev_tools'

And then execute:

$ bundle

Usage

RSpec helpers

This gem provides some useful helpers for RSpec to setup an extension's test environment easily.

Add this to your extension's spec/spec_helper.rb:

require 'solidus_extension_dev_tools/rspec/feature_helper'

This helper loads configuration needed to run extension feature specs correctly, setting up Capybara and configuring a Rails test application to precompile assets before the first feature spec.

feature_helper builds on top of rails_helper, which you can also use a standalone helper if you want:

require 'solidus_extension_dev_tools/rspec/rails_helper'

This will include the Rails and Solidus-related RSpec configuration, such as authorization helpers, Solidus factories, URL helpers, and other helpers to easily work with Solidus.

rails_helper, in turn, builds on top of spec_helper, which is responsible for setting up a basic RSpec environment:

require 'solidus_extension_dev_tools/rspec/spec_helper'

Code coverage

The gem also includes a SimpleCov configuration that will send your test coverage information directly to Codecov.io. Simply add this at the top of your spec/spec_helper.rb:

require 'solidus_extension_dev_tools/rspec/coverage'

Note: Make sure to add this at the VERY TOP of your spec_helper, otherwise you'll get skewed coverage reports!

If your extension is in a public repo and being tested on Travis or CircleCI, there's nothing else you need to do! If your setup is more complex, look at the SimpleCov and codecov-ruby docs.

RuboCop configuration

solidus_extension_dev_tools includes a default RuboCop configuration for Solidus extensions. Currently, this is based on Relaxed Ruby Style with a few customizations, but in the future we plan to provide custom cops to ensure your extension follows established Solidus best practices.

We strongly recommend including the RuboCop configuration in your extension. All you have to do is add this to your .rubocop.yml:

require:
  - solidus_extension_dev_tools/rubocop

inherit_gem:
  solidus_extension_dev_tools: .rubocop.extension.yml

AllCops:
  Exclude:
    - spec/dummy/**/*

You can now run RuboCop with:

$ bundle exec rubocop

Development

After checking out the repo, run bin/setup to install dependencies. Then, run rake spec to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and tags, and push the .gem file to rubygems.org.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/solidusio/solidus_extension_dev_tools.

License

The gem is available as open source under the terms of the MIT License.