Skip to content

Commit

Permalink
rpsec scaffolding
Browse files Browse the repository at this point in the history
  • Loading branch information
andey committed Mar 26, 2013
1 parent 20a7030 commit 8a36501
Show file tree
Hide file tree
Showing 10 changed files with 247 additions and 0 deletions.
1 change: 1 addition & 0 deletions .rspec
@@ -0,0 +1 @@
--color
35 changes: 35 additions & 0 deletions Guardfile
@@ -0,0 +1,35 @@
# A sample Guardfile
# More info at https://github.com/guard/guard#readme

guard 'spork', :cucumber_env => { 'RAILS_ENV' => 'test' }, :rspec_env => { 'RAILS_ENV' => 'test' }, :wait => 75 do
watch('config/application.rb')
watch('config/environment.rb')
watch('config/environments/test.rb')
watch(%r{^config/initializers/.+\.rb$})
watch('Gemfile')
watch('Gemfile.lock')
watch('spec/spec_helper.rb') { :rspec }
watch('test/test_helper.rb') { :test_unit }
watch(%r{features/support/}) { :cucumber }
end

guard 'rspec', :cli => "--drb" do
watch(%r{^spec/.+_spec\.rb$})
watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
watch('spec/spec_helper.rb') { "spec" }

# Rails example
watch(%r{^app/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
watch(%r{^app/(.*)(\.erb|\.haml)$}) { |m| "spec/#{m[1]}#{m[2]}_spec.rb" }
watch(%r{^app/controllers/(.+)_(controller)\.rb$}) { |m| ["spec/routing/#{m[1]}_routing_spec.rb", "spec/#{m[2]}s/#{m[1]}_#{m[2]}_spec.rb", "spec/acceptance/#{m[1]}_spec.rb"] }
watch(%r{^spec/support/(.+)\.rb$}) { "spec" }
watch('config/routes.rb') { "spec/routing" }
watch('app/controllers/application_controller.rb') { "spec/controllers" }

# Capybara features specs
watch(%r{^app/views/(.+)/.*\.(erb|haml)$}) { |m| "spec/features/#{m[1]}_spec.rb" }

# Turnip features and steps
watch(%r{^spec/acceptance/(.+)\.feature$})
watch(%r{^spec/acceptance/steps/(.+)_steps\.rb$}) { |m| Dir[File.join("**/#{m[1]}.feature")][0] || 'spec/acceptance' }
end
1 change: 1 addition & 0 deletions config/environments/test.rb
Expand Up @@ -11,5 +11,6 @@
config.action_mailer.delivery_method = :test
config.active_record.mass_assignment_sanitizer = :strict
config.active_support.deprecation = :stderr
config.log_level = :info

end
6 changes: 6 additions & 0 deletions spec/factories/entity.rb
@@ -0,0 +1,6 @@
FactoryGirl.define do
factory :entity do
sequence(:name) { |n| "entity#{n}" }
sequence(:slug) { |n| "entity#{n}" }
end
end
9 changes: 9 additions & 0 deletions spec/factories/user.rb
@@ -0,0 +1,9 @@
FactoryGirl.define do
factory :user do
sequence(:username) { |n| "username#{n}" }
modhash ''
active true
comment_karma 0
link_karma 0
end
end
39 changes: 39 additions & 0 deletions spec/requests/entities_spec.rb
@@ -0,0 +1,39 @@
require 'spec_helper'

describe "Entities" do
describe "GET /entities" do
it "displays entities" do
FactoryGirl.create(:entity, name: "Jesus", slug: "jesus")
get entities_path
response.body.should include("Jesus")
response.body.should include(entity_path("jesus"))
end
end

describe "GET /entity/:slug" do
it "displays an entity" do
entity = FactoryGirl.create(:entity)
get entity_path(entity.slug)
response.body.should include(entity.name)
end

it "should not have form" do
entity = FactoryGirl.create(:entity)
get entity_path(entity.slug)
response.body.should_not include('edit-box')
end

#it "should have form when logged in" do
#
# activate_authlogic
#
# user = FactoryGirl.create(:user)
# UserSession.create(user)
#
# entity = FactoryGirl.create(:entity)
# get entity_path(entity.slug)
#
# response.body.should include('edit-box')
#end
end
end
28 changes: 28 additions & 0 deletions spec/requests/pages_spec.rb
@@ -0,0 +1,28 @@
require 'spec_helper'

describe "Pages" do

it "shows terms page" do
get page_path('terms')
response.body.should include('Terms and Conditions of Use')
end

it "missing page redirects to root_path()" do
get page_path('missing')
response.body.should redirect_to root_path()
end

it "Should show YES" do
activate_authlogic
user = FactoryGirl.create(:user)
ap user
ap @current_user_session
ap @current_user
ap UserSession.create(user)


get page_path('test')
response.body.should include('YES')
end

end
27 changes: 27 additions & 0 deletions spec/requests/tags_spec.rb
@@ -0,0 +1,27 @@
require 'spec_helper'

describe "Tags" do
describe "GET /tag/:tag" do
it "shows tag page" do
entity = FactoryGirl.create(:entity, :tag_list => "test")
get tag_path('test')
response.body.should include(entity.name)
end

it "missing tag redirects to tags_path()" do
get tag_path('missing')
response.body.should redirect_to tags_path()
end
end

describe "GET /tags" do
it "show index" do

# poor test
# needs improvements

get tags_path
response.code.should == 200.to_s
end
end
end
16 changes: 16 additions & 0 deletions spec/requests/users_spec.rb
@@ -0,0 +1,16 @@
require 'spec_helper'

describe "Users" do
describe "GET /user/:username" do
it "shows user page" do
user = FactoryGirl.create(:user)
get user_path(user.username)
response.body.should include(user.username)
end

it "missing user redirects to root_path()" do
get user_path('admin')
response.body.should redirect_to root_path()
end
end
end
85 changes: 85 additions & 0 deletions spec/spec_helper.rb
@@ -0,0 +1,85 @@
require 'rubygems'
require 'spork'
#uncomment the following line to use spork with the debugger
#require 'spork/ext/ruby-debug'

Spork.prefork do
# This file is copied to spec/ when you run 'rails generate rspec:install'
ENV["RAILS_ENV"] ||= 'test'
require File.expand_path("../../config/environment", __FILE__)
require 'rspec/rails'
require 'rspec/autorun'
require 'capybara/rails'
require 'capybara/rspec'


require 'authlogic/test_case' # include at the top of test_helper.rb
include Authlogic::TestCase

# Requires supporting ruby files with custom matchers and macros, etc,
# in spec/support/ and its subdirectories.
Dir[Rails.root.join("spec/support/**/*.rb")].each { |f| require f }

RSpec.configure do |config|
# ## Mock Framework
#
# If you prefer to use mocha, flexmock or RR, uncomment the appropriate line:
#
# config.mock_with :mocha
# config.mock_with :flexmock
# config.mock_with :rr

# Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
# config.fixture_path = "#{::Rails.root}/spec/fixtures"

# If you're not using ActiveRecord, or you'd prefer not to run each of your
# examples within a transaction, remove the following line or assign false
# instead of true.
config.use_transactional_fixtures = true

# If true, the base class of anonymous controllers will be inferred
# automatically. This will be the default behavior in future versions of
# rspec-rails.
config.infer_base_class_for_anonymous_controllers = false

# Run specs in random order to surface order dependencies. If you find an
# order dependency and want to debug it, you can fix the order by providing
# the seed, which is printed after each run.
# --seed 1234
config.order = "random"
end
end

Spork.each_run do
FactoryGirl.reload

end

# --- Instructions ---
# Sort the contents of this file into a Spork.prefork and a Spork.each_run
# block.
#
# The Spork.prefork block is run only once when the spork server is started.
# You typically want to place most of your (slow) initializer code in here, in
# particular, require'ing any 3rd-party gems that you don't normally modify
# during development.
#
# The Spork.each_run block is run each time you run your specs. In case you
# need to load files that tend to change during development, require them here.
# With Rails, your application modules are loaded automatically, so sometimes
# this block can remain empty.
#
# Note: You can modify files loaded *from* the Spork.each_run block without
# restarting the spork server. However, this file itself will not be reloaded,
# so if you change any of the code inside the each_run block, you still need to
# restart the server. In general, if you have non-trivial code in this file,
# it's advisable to move it into a separate file so you can easily edit it
# without restarting spork. (For example, with RSpec, you could move
# non-trivial code into a file spec/support/my_helper.rb, making sure that the
# spec/support/* files are require'd from inside the each_run block.)
#
# Any code that is left outside the two blocks will be run during preforking
# *and* during each_run -- that's probably not what you want.
#
# These instructions should self-destruct in 10 seconds. If they don't, feel
# free to delete them.

0 comments on commit 8a36501

Please sign in to comment.