diff options
Diffstat (limited to 'spec/support/helpers/file_read_helpers.rb')
-rw-r--r-- | spec/support/helpers/file_read_helpers.rb | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/spec/support/helpers/file_read_helpers.rb b/spec/support/helpers/file_read_helpers.rb new file mode 100644 index 00000000000..c30a9e6466f --- /dev/null +++ b/spec/support/helpers/file_read_helpers.rb @@ -0,0 +1,48 @@ +# 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 |