48 lines
1 KiB
Ruby
48 lines
1 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
module FileReadHelpers
|
|
def stub_file_read(file, content: nil, error: nil)
|
|
allow_original_file_read
|
|
|
|
expectation = allow(File).to receive(:read).with(file)
|
|
|
|
if error
|
|
expectation.and_raise(error)
|
|
elsif content
|
|
expectation.and_return(content)
|
|
else
|
|
expectation
|
|
end
|
|
end
|
|
|
|
def expect_file_read(file, content: nil, error: nil)
|
|
allow_original_file_read
|
|
|
|
expectation = expect(File).to receive(:read).with(file)
|
|
|
|
if error
|
|
expectation.and_raise(error)
|
|
elsif content
|
|
expectation.and_return(content)
|
|
else
|
|
expectation
|
|
end
|
|
end
|
|
|
|
def expect_file_not_to_read(file)
|
|
allow_original_file_read
|
|
|
|
expect(File).not_to receive(:read).with(file)
|
|
end
|
|
|
|
private
|
|
|
|
def allow_original_file_read
|
|
# Don't set this mock twice, otherwise subsequent calls will clobber
|
|
# previous mocks
|
|
return if @allow_original_file_read
|
|
|
|
@allow_original_file_read = true
|
|
allow(File).to receive(:read).and_call_original
|
|
end
|
|
end
|