35 lines
765 B
Ruby
35 lines
765 B
Ruby
|
# frozen_string_literal: true
|
||
|
|
||
|
# This matcher checkes if one spam log with provided attributes was created
|
||
|
#
|
||
|
# Example:
|
||
|
#
|
||
|
# expect { create_issue }.to log_spam
|
||
|
RSpec::Matchers.define :log_spam do |expected|
|
||
|
def spam_logs
|
||
|
SpamLog.all
|
||
|
end
|
||
|
|
||
|
match do |block|
|
||
|
block.call
|
||
|
|
||
|
expect(spam_logs).to contain_exactly(
|
||
|
have_attributes(expected)
|
||
|
)
|
||
|
end
|
||
|
|
||
|
description do
|
||
|
count = spam_logs.count
|
||
|
|
||
|
if count == 1
|
||
|
keys = expected.keys.map(&:to_s)
|
||
|
actual = spam_logs.first.attributes.slice(*keys)
|
||
|
"create a spam log with #{expected} attributes. #{actual} created instead."
|
||
|
else
|
||
|
"create exactly 1 spam log with #{expected} attributes. #{count} spam logs created instead."
|
||
|
end
|
||
|
end
|
||
|
|
||
|
supports_block_expectations
|
||
|
end
|