class RSpec::HaveReadonlyQueryMatcher::HaveReadonlyQuery

Public Instance Methods

description() click to toggle source
# File lib/rspec/have_readonly_query_matcher/have_readonly_query.rb, line 21
def description
  "have only read queries"
end
failure_message() click to toggle source
# File lib/rspec/have_readonly_query_matcher/have_readonly_query.rb, line 25
def failure_message
  "expected have only read queries"
end
failure_message_when_negated() click to toggle source
# File lib/rspec/have_readonly_query_matcher/have_readonly_query.rb, line 29
def failure_message_when_negated
  "expected not have only read queries"
end
matches?(given_proc) click to toggle source
# File lib/rspec/have_readonly_query_matcher/have_readonly_query.rb, line 4
def matches?(given_proc)
  read_queries = []
  callback = lambda { |name, start, finish, id, payload|
    if payload[:sql] =~ /^(SELECT|SET|SHOW|DESCRIBE)\b/
      read_queries << true
    else
      read_queries << false
    end
  }

  ActiveSupport::Notifications.subscribed callback, 'sql.active_record' do
    given_proc.call
  end

  read_queries.all?
end
supports_block_expectations?() click to toggle source
# File lib/rspec/have_readonly_query_matcher/have_readonly_query.rb, line 33
def supports_block_expectations?
  true
end