
- Re-factor - Remove code for notifications - Remove addons - Remove travis-core gem. - Ignore logs directory only - Move core tests to spec/lib
51 lines
1.6 KiB
Ruby
51 lines
1.6 KiB
Ruby
# RSpec::Matchers.define :serve_result_image do |result|
|
|
# match do |request|
|
|
# path = "#{Rails.root}/public/images/result/#{result}.png"
|
|
# controller.expects(:send_file).with(path, { :type => 'image/png', :disposition => 'inline' }).once
|
|
# request.call
|
|
# end
|
|
# end
|
|
|
|
RSpec::Matchers.define :issue_queries do |count|
|
|
match do |code|
|
|
queries = call(code)
|
|
|
|
failure_message_for_should do
|
|
(["expected #{count} queries to be issued, but got #{queries.size}:"] + queries).join("\n\n")
|
|
end
|
|
|
|
queries.size == count
|
|
end
|
|
|
|
def call(code)
|
|
queries = []
|
|
ActiveSupport::Notifications.subscribe 'sql.active_record' do |name, start, finish, id, payload|
|
|
queries << payload[:sql] unless payload[:sql] =~ /(?:ROLLBACK|pg_|BEGIN|COMMIT)/
|
|
end
|
|
code.call
|
|
queries
|
|
end
|
|
end
|
|
|
|
RSpec::Matchers.define :publish_instrumentation_event do |data|
|
|
match do |event|
|
|
non_matching = data.map { |key, value| [key, value, event[key]] unless event[key] == value }.compact
|
|
expected_keys = [:uuid, :event, :started_at]
|
|
missing_keys = expected_keys.select { |key| !event.key?(key) }
|
|
|
|
failure_message_for_should do
|
|
message = "Expected a notification event to be published:\n\n\t#{event.inspect}\n\n"
|
|
message << "Including:\n\n\t#{data.inspect}\n\n"
|
|
|
|
non_matching.each do |key, expected, actual|
|
|
message << "#{key.inspect} expected to be\n\n\t#{expected.inspect}\n\nbut was\n\n\t#{actual.inspect}\n\n"
|
|
end
|
|
|
|
message << "Expected #{missing_keys.map(&:inspect).join(', ')} to be present." if missing_keys.present?
|
|
message
|
|
end
|
|
|
|
non_matching.empty? && missing_keys.empty?
|
|
end
|
|
end
|