explain_test.rb 1.1 KB
Newer Older
X
Xavier Noria 已提交
1 2
require "cases/helper"
require 'models/developer'
A
Arun Agrawal 已提交
3
require 'models/computer'
X
Xavier Noria 已提交
4 5 6 7

module ActiveRecord
  module ConnectionAdapters
    class SQLite3Adapter
8
      class ExplainTest < ActiveRecord::SQLite3TestCase
9
        fixtures :developers
X
Xavier Noria 已提交
10

11 12
        def test_explain_for_one_query
          explain = Developer.where(:id => 1).explain
13
          assert_match %r(EXPLAIN for: SELECT "developers".* FROM "developers" WHERE "developers"."id" = (?:\?|1)), explain
14 15
          assert_match(/(SEARCH )?TABLE developers USING (INTEGER )?PRIMARY KEY/, explain)
        end
X
Xavier Noria 已提交
16

17 18
        def test_explain_with_eager_loading
          explain = Developer.where(:id => 1).includes(:audit_logs).explain
19
          assert_match %r(EXPLAIN for: SELECT "developers".* FROM "developers" WHERE "developers"."id" = (?:\?|1)), explain
20
          assert_match(/(SEARCH )?TABLE developers USING (INTEGER )?PRIMARY KEY/, explain)
21
          assert_match %(EXPLAIN for: SELECT "audit_logs".* FROM "audit_logs" WHERE "audit_logs"."developer_id" = 1), explain
22 23
          assert_match(/(SCAN )?TABLE audit_logs/, explain)
        end
X
Xavier Noria 已提交
24 25 26 27
      end
    end
  end
end