Skip to content

Instantly share code, notes, and snippets.

View nruth's full-sized avatar

Nicholas Rutherford nruth

View GitHub Profile
@nruth
nruth / cached_pages_do_not_render_flash_spec.rb
Created August 29, 2011 13:23
Introduce flash messages (notice/alert/error) to the session then hit a path and assert it does (not) render the flash messages; capybara/rspec2/rails3.0
#assumes use of capybara for request specs
require 'spec_helper'
describe "StaticPages" do
class FlashController < ApplicationController
def set_flash
flash[:notice] = params[:message]
flash[:error] = params[:message]
flash[:alert] = params[:message]
@nruth
nruth / image_helpers.rb
Created July 6, 2011 20:13
share test helper libs between rspec and cucumber in a pluggable fashion
# an example, showing how to load for rspec and conditionally load for cucumber
# lives in whichever dir you set the other file to load
module ImageStepHelpers
def page_should_contain_image_link_for(image)
page.should have_xpath(%Q(//img[@src="#{image.url}"]))
end
def image_data_from_file(image)
image_file_path = Rails.root.join image.image.path
@nruth
nruth / gist:1049494
Created June 27, 2011 18:50
testing devise password recovery email with email_spec and capybara / rspec request spec
require 'spec_helper'
describe "member password recovery" do
# As a member who forgot my password
# I want to recover my site access easily
#
attr_accessor :current_email_address
specify "email recovery of a new password" do
member = make_activated_member
@nruth
nruth / gist:968289
Created May 12, 2011 10:23
controller spec describing rails log contents
describe "logger" do
before(:each) do
@old_flush = controller.logger.auto_flushing
@old_level = controller.logger.level
controller.logger.auto_flushing=0
controller.logger.level = ActiveSupport::BufferedLogger::Severity::ERROR
end
it "logs an error" do
#would prefer to test this with a test-spy / mock expectations but there's a lot of level-0 logging noise to ignore, so went with reading the log itself
#as seen in https://github.com/mooktakim/heroku_deployment
class AppTemplatesController < ApplicationController
def app
render :inline => "SUCCESS", :layout => 'master'
end
def cms
render :inline => "SUCCESS", :layout => 'cms_admin'
end
end
@nruth
nruth / example_test.erl
Created December 2, 2010 23:48
basic test spy for plain Erlang, now promoted to a full repo @ https://github.com/nruth/nspy
-module (auctioneer_tests).
-include_lib("eunit/include/eunit.hrl").
check_auctioneer_announces_item_to_room_test() ->
AuctionRoom = nspy:new(),
Auctioneer = auctioneer:start("Penguin", 20, AuctionRoom),
timer:sleep(1000),
Auctioneer ! stop,
ExpectedMessage = {starting_auction, {lot, 1, 20, "Penguin"}, "Next up lot 1, a fine Penguin, starting at 20\n"},
nspy:assert_message_received(AuctionRoom, ExpectedMessage).
@nruth
nruth / controller_spec.rb
Created August 21, 2010 16:32
Capybara rack-test response status code checking
describe "when some redirect mappings are present in the Medify::PAGE_REDIRECTS hash" do
before(:each) do
Medify::PAGE_REDIRECTS['/abstract-reasoning-subtest-advice-by-medify'] = '/advice-pages/abstract-reasoning-subtest-advice-by-medify'
Medify::PAGE_REDIRECTS['/decision-analysis-subtest-advice-by-medify'] = '/advice-pages/decision-analysis-subtest-advice-by-medify'
end
describe "GET :show, :path => abstract-reasoning-subtest-advice-by-medify" do
subject {get :show, :path => 'abstract-reasoning-subtest-advice-by-medify'}
it {should be_redirect}
it {should redirect_to('/advice-pages/abstract-reasoning-subtest-advice-by-medify')}
@nruth
nruth / gist:501517
Created July 30, 2010 23:54
rspec 1 before / let for context
describe "3 users exist"
let(:users) {(1..3).map {User.make}}
specify "user count should be 3" do
pending "this will fail because users hasn't been called" do
User.count.should == 3
end
end
specify "3 users should exist" do
@nruth
nruth / tests_spec.rb
Created July 30, 2010 20:48
how not to loop/nest rspec example groups (where you want to iterate diferent let/before variable values)
class Tests
SUBTESTS = %w(Abstract Decision Quantitative Verbal)
end
describe Tests do
describe "before assigning @ - " do
describe "this doesn't work because the loops are all at the same describe level (the befores override one another)" do
Tests::SUBTESTS.each do |test|
before(:each) do
@nruth
nruth / cookie_steps.rb
Created July 21, 2010 17:16
Testing login "remember me" feature with Capybara (rack::test or selenium) - deleting the session cookie (only)