0.01
No commit activity in last 3 years
No release in over 3 years
Generates the Devise acceptance tests.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 1.1, >= 1.1.2
~> 13.0, >= 13.0.6

Runtime

~> 4.8
 Project Readme

devise-specs Build Status Maintainability

devise-specs is a Rails generator that adds the Devise authentication acceptance tests when you run the devise generator. The tests are RSpec feature specs containing Factory Bot or Fabrication fixture replacement methods and Capybara actions.

Demo GIF

Generated feature specs test the following features:

  • Registration
  • Login
  • Logout
  • Password reset

Installation

Make sure devise, devise-specs, rspec-rails, capybara and fixture replacement gems are added to the Gemfile:

gem 'devise'

group :development do
  gem 'devise-specs'
end

group :test do
  gem 'capybara'
end

group :development, :test do
  gem 'rspec-rails'
  gem 'factory_bot_rails' # or: gem 'fabrication'
end

and then run bundle install.

Setup

Generate the RSpec configuratoin files:

$ bin/rails generate rspec:install

Generate the Devise configuration files and follow the setup instructions to define the default url options, root route and flash messages:

$ bin/rails generate devise:install

Configure the Action Mailer URL options for the test environment using the following line in config/environments/test.rb:

config.action_mailer.default_url_options = { host: 'localhost', port: 3001 }

Add the authentication links to the layout, user_signed_in? should be admin_signed_in? if your Devise model is Admin:

<% if user_signed_in? %>
  <%= link_to 'Sign Out', destroy_user_session_path, method: :delete %>
<% else %>
  <%= link_to 'Sign In', new_user_session_path %>
  <%= link_to 'Sign Up', new_user_registration_path %>
<% end %>

Usage

Specs are created automatically when you generate a Devise model, e.g. User:

$ bin/rails generate devise User
         ...
      invoke  specs
        gsub    spec/rails_helper.rb
      insert    spec/factories/users.rb
      create    spec/support/factory_bot.rb
      create    spec/support/devise.rb
      create    spec/features/user_signs_up_spec.rb
      create    spec/features/user_signs_in_spec.rb
      create    spec/features/user_signs_out_spec.rb
      create    spec/features/user_resets_password_spec.rb

If a Devise model is already present, run the devise:specs generator directly:

$ bin/rails generate devise:specs User

Run the migrations:

$ bin/rails db:migrate RAILS_ENV=test

Make sure the specs pass:

$ rspec spec/features
.........

Finished in 1.08 seconds (files took 2.1 seconds to load)
9 examples, 0 failures

Documentation

Visit the Relish docs for all the available features and examples of the generated feature specs.

Output

gsub spec/rails_helper.rb

Uncomments the line that auto-requires all files in the support directory.

insert spec/fabricators/*_fabricator.rb

Adds email and password attributes to the fabricator.

insert spec/factories/*.rb

Adds email and password attributes to the factory.

create spec/support/factory_bot.rb

Includes FactoryBot::Syntax::Methods into RSpec config to avoid prefacing Factory Bot methods with FactoryBot.

create spec/support/devise.rb

Includes Devise integration test helpers into feature specs.

create spec/features/*_spec.rb

Generates a corresponding feature spec.

Testing

Install system and development dependencies and run the tests:

$ bundle exec rake

License

MIT License