Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

rpsec scaffolding

  • Loading branch information...
commit 8a36501ef5739f6280ddca1f2262c97422181f0e 1 parent 20a7030
@andey authored
View
1  .rspec
@@ -0,0 +1 @@
+--color
View
35 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
View
1  config/environments/test.rb
@@ -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
View
6 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
View
9 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
View
39 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
View
28 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
View
27 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
View
16 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
View
85 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.
Please sign in to comment.
Something went wrong with that request. Please try again.