Regressor generates regression specs based on ActiveRecord models. Currently relations, validations, attributes, and database indexes are supported.


Keywords
generator, rspec, test-automation
License
MIT
Install
gem install regressor -v 0.6.2

Documentation

Gem Version Code Climate Bitdeli Badge

Regressor

Regressor is a regression based testing tool. What is regression testing? see here. You can generate specs based on your ActiveRecord models.

Made with ♥ at Qurasoft

Get Regressor

Directly from GitHub
gem 'regressor', git: 'https://github.com/ndea/regressor.git', branch: 'master'

or

Rubygems
gem 'regressor', '~> 0.6.2'

Install

bundle install
rails g regressor:install

This will create an initializer in config/initializers. This initializers looks like this:

Initializer
# If the regressor gem is inside a group wrap your initializer in
# if defined?(Regressor) do .. end
Regressor.configure do |config|
  # Defines the path where the generated files for your models will be placed
  # config.regression_path = 'spec/models/regression'

  # Defines the path where the generated files for your controllers will be placed
  # config.regression_controller_path = 'spec/controllers/regression'

  # Exclude Models for regression spec generation.
  # Provide model names as String (e.g. 'User')
  # config.excluded_models = []

  # Exclude Controllers for regression generation.
  # Provide controller names as String (e.g. 'UsersController').
  # config.excluded_controllers = []

  # If you are using enums in Rails 4 enable this option to generate regression specs for enums.
  # If your Rails version is =< Rails 3 set this option to false.
  # Default this option is set to true.
  # config.include_enums = true
end

Then require the gem dependency 'shoulda-matchers' in your rails_helper (or spec_helper if you're using RSpec 2.x):

require 'shoulda/matchers'

If you are using mongoid please add mongoid-rspec.

Usage

Run the generator:

Be sure to run the generators in the test environment so that development-only gems are not being loaded, causing strange issues with controller filters and ActiveRecord callbacks.

ActiveRecord
RAILS_ENV=test rails generate regressor:model # Create Regression specs for your models
RAILS_ENV=test rails generate regressor:controller # Create Regression specs for your controllers
Mongoid
RAILS_ENV=test rails generate regressor:mongoid:model # Create regression specs for your mongoid models
Factories

You can even generate empty factories for your models simply by running

RAILS_ENV=test rails generate regressor:factory # Create empty factories based on your models
Supported Regressions
Factories

Empty factories can be created.

Models
ActiveRecord
  • Relations
    • belongs_to
    • has_many
    • has_one
  • Nested Attributes
  • Validations
    • Length
    • Presence
    • Numericality
  • Database
    • Columns
    • Indexes
  • Enums (Rails 4)
Mongoid
  • Relations
    • belongs_to
    • has_many
    • has_one
    • embeds_one
    • embeds_many
  • Database
    • Fields
  • Document
    • Includes
    • Versioning
Controllers
  • Routing
  • Callbacks
    • Before filter
    • After filter
    • Around filter

Also see

Airpair - Generate specs for your Rails application

Guard for regressor

Contributing

  1. Fork it ( https://github.com/ndea/regressor/fork )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request

Contribution topics wanted

  • Specs
  • Documentation
  • Bugfixes
  • Codestyle
  • Anything that improves this gem