34 lines
765 B
Ruby
34 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
|