Skip to content

Instantly share code, notes, and snippets.

@tenderlove
Forked from coreyhaines/.rspec
Created December 3, 2012 00:11
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save tenderlove/4191687 to your computer and use it in GitHub Desktop.
Save tenderlove/4191687 to your computer and use it in GitHub Desktop.
Active Record Spec Helper - Loading just active record
--colour
-I app
require 'active_record'
require 'database_cleaner'
connection_info = YAML.load_file("config/database.yml")["test"]
ActiveRecord::Base.establish_connection(connection_info)
RSpec.configure do |config|
config.before(:suite) do
DatabaseCleaner.strategy = :transaction
DatabaseCleaner.clean_with(:truncation)
end
config.before(:each) do
DatabaseCleaner.start
end
config.after(:each) do
DatabaseCleaner.clean
end
end
class Coderetreat < ActiveRecord::Base
def self.running_today
where(scheduled_on: Date.today)
end
end
require 'active_record_spec_helper'
require 'models/coderetreat'
describe Coderetreat do
describe ".running_today" do
it "returns a coderetreat scheduled for today" do
coderetreat = Coderetreat.create! city: "Chicago", scheduled_on: Date.today
Coderetreat.running_today.all.should =~ [coderetreat]
end
it "does not return a coderetreat not scheduled for today" do
coderetreat = Coderetreat.create! city: "Chicago", scheduled_on: Date.today.advance(:days => -1)
Coderetreat.running_today.should be_empty
end
end
end
#Some databases get upset if you try to start a new transaction while a transaction is already in play, so running the whole spec suite chokes when rspec is trying to start a transaction. You need to update your spec_helper to rely on active_record_spec_helper to do this for you.
#Replace this line
config.use_transactional_fixtures = true
#With this
require 'active_record_spec_helper'
#TADA
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment