Files

41 lines
1.2 KiB
Ruby

# To include in those tests that use VCR. It will automatically insert a VCR cassette named after the test. By default,
# it will run the test in "replay" mode. To switch to record mode, you can either:
#
# * Set the environment variable +VCR_RECORD+.
# * Use +.vcr_record!+ in your test class.
module VcrTestHelper
extend ActiveSupport::Concern
included do
class_attribute :vcr_record
setup do
@casette_name = "#{self.class.name.tableize.singularize}-#{name}"
VCR.insert_cassette @casette_name,
record: recording? ? :all : :none,
preserve_exact_body_bytes: true
end
teardown do
VCR.eject_cassette
end
def recording?
vcr_record || ENV["VCR_RECORD"]
end
end
class_methods do
# Use to force record mode at development time: always perform real http interactions and record fixtures
def vcr_record!
raise "#vcr_record! is meant for dev time. You are not supposed to run it in CI." if ENV["CI"]
self.vcr_record = true
end
end
def without_vcr_body_matching(&block)
VCR.use_cassette("#{@casette_name}_without_body", match_requests_on: [ :method, :uri ], &block)
end
end