2021-01-12 19:16:38 +11:00

48 lines
1.3 KiB
Ruby

# typed: false
# frozen_string_literal: true
module CaskCop
shared_examples "does not report any offenses" do
it "does not report any offenses" do
expect_no_offenses(source)
end
end
shared_examples "reports offenses" do
it "reports offenses" do
expect_reported_offenses(source, expected_offenses)
end
end
shared_examples "autocorrects source" do
it "autocorrects source" do
expect_autocorrected_source(source, correct_source)
end
end
def expect_no_offenses(source)
expect(inspect_source(source)).to be_empty
end
def expect_reported_offenses(source, expected_offenses)
offenses = inspect_source(source)
expect(offenses.size).to eq(expected_offenses.size)
expected_offenses.zip(offenses).each do |expected, actual|
expect_offense(expected, actual)
end
end
def expect_offense(expected, actual)
expect(actual.message).to eq(expected[:message])
expect(actual.severity).to eq(expected[:severity])
expect(actual.line).to eq(expected[:line])
expect(actual.column).to eq(expected[:column])
expect(actual.location.source).to eq(expected[:source])
end
def expect_autocorrected_source(source, correct_source)
new_source = autocorrect_source(source)
expect(new_source).to eq(Array(correct_source).join("\n"))
end
end