diff --git a/.gitignore b/.gitignore index 41f3e6d..67e6d0f 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ tmp/ .sass-cache/ Gemfile.lock config/database.yml +.rvmrc diff --git a/.rspec b/.rspec new file mode 100644 index 0000000..5902dd3 --- /dev/null +++ b/.rspec @@ -0,0 +1 @@ +--colour --drb diff --git a/Gemfile b/Gemfile index 054af06..18d1ac3 100644 --- a/Gemfile +++ b/Gemfile @@ -9,3 +9,11 @@ gem 'coffee-script' gem 'uglifier' gem 'jquery-rails' gem 'therubyracer' + +group :test do + gem 'rspec-rails', '2.6.1.beta1' + gem 'spork', '0.9.0.rc8' + gem 'factory_girl_rails', :require => false + gem 'shoulda-matchers' + gem 'faker' +end diff --git a/spec/factories.rb b/spec/factories.rb new file mode 100644 index 0000000..f69c7c7 --- /dev/null +++ b/spec/factories.rb @@ -0,0 +1,6 @@ +require 'factory_girl' + +Dir["#{File.dirname(__FILE__)}/factories/**"].each do |f| + fp = File.expand_path(f) + require fp +end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb new file mode 100644 index 0000000..f7b3d51 --- /dev/null +++ b/spec/spec_helper.rb @@ -0,0 +1,30 @@ +require 'spork' + +Spork.prefork do + ENV["RAILS_ENV"] ||= 'test' + require File.expand_path("../../config/environment", __FILE__) + require 'rspec/rails' + require 'shoulda/integrations/rspec2' + + Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f} + + RSpec.configure do |config| + config.mock_with :rspec + config.fixture_path = "#{::Rails.root}/spec/fixtures" + config.use_transactional_fixtures = true + config.include Devise::TestHelpers, :type => :controller + config.extend ControllerMacros, :type => :controller + end + + RSpec::Matchers.define :have_valid_factory do |factory| + match do |model| + Factory(factory).new_record?.should be_false + end + end +end + +Spork.each_run do + require 'factories' + Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f} +end + diff --git a/spec/support/controller_macros.rb b/spec/support/controller_macros.rb new file mode 100644 index 0000000..8641586 --- /dev/null +++ b/spec/support/controller_macros.rb @@ -0,0 +1,17 @@ +module ControllerMacros + def login_admin + before :each do + @request.env["devise.mapping"] = Devise.mappings[:user] + @admin = Factory(:admin) + sign_in @admin + end + end + + def login_user + before :each do + @request.env['devise.mapping'] = Devise.mappings[:user] + @user = Factory(:user) + sign_in @user + end + end +end