Open
Description
This might be a rare use case, but I have an app that uses two databases. Here's a snippet from my database.yml
file:
test:
primary:
<<: *default
database: primary_test
cache:
<<: *default
database: secondary_test
I have one ActiveRecord model (RawDatum
) set up to read/write to/from the secondary database.
Here's a summarized version of my RSpec spec:
require "rails_helper"
describe SomeJob, type: :job do
shared_examples "perform" do |api_server_id, expected_records_count|
describe "#perform" do
it "inserts records into RawDatum" do
# This will fail on the 2nd `it_behaves_like` below
expect(RawDatum.count).to eq(0)
described_class.perform_now(api_server_id)
expect(RawDatum.count).to eq(expected_records_count)
end
end
end
describe "API One" do
it_behaves_like "perform", 1, 822
end
describe "API Two" do
it_behaves_like "perform", 2, 439
end
end
Here is my spec/support/database_cleaner.rb
file:
require "database_cleaner"
# see https://github.com/DatabaseCleaner/database_cleaner#how-to-use
RSpec.configure do |config|
config.use_transactional_fixtures = false
config.before(:suite) do
DatabaseCleaner[:active_record, db: :primary].strategy = :transaction
DatabaseCleaner[:active_record, db: :cache].strategy = :transaction
DatabaseCleaner[:active_record, db: :primary].clean_with(:truncation)
DatabaseCleaner[:active_record, db: :cache].clean_with(:truncation)
end
config.before(:each) do
DatabaseCleaner[:active_record, db: :primary].start
DatabaseCleaner[:active_record, db: :cache].start
end
config.after(:each) do
DatabaseCleaner[:active_record, db: :primary].clean
DatabaseCleaner[:active_record, db: :cache].clean
end
config.around(:each) do |example|
DatabaseCleaner.cleaning do
example.run
end
end
end
Metadata
Metadata
Assignees
Labels
No labels