Welcome to mirror list, hosted at ThFree Co, Russian Federation.

query_recorder_spec.rb « active_record « helpers « support_specs « spec - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 0827ce37b07b5ed501971f362c0b4ae911924284 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# frozen_string_literal: true

require 'spec_helper'

describe ActiveRecord::QueryRecorder do
  class TestQueries < ActiveRecord::Base
    self.table_name = 'schema_migrations'
  end

  describe 'detecting the right number of calls and their origin' do
    it 'detects two separate queries' do
      control = ActiveRecord::QueryRecorder.new query_recorder_debug: true do
        2.times { TestQueries.count }
        TestQueries.first
      end

      # Check #find_query
      expect(control.find_query(/.*/, 0).size)
        .to eq(control.data.keys.size)
      # Ensure exactly 2 COUNT queries were detected
      expect(control.occurrences_by_line_method.last[1][:occurrences]
               .find_all {|i| i.match(/SELECT COUNT/) }.count).to eq(2)
      # Ensure exactly 1 LIMIT 1 (#first)
      expect(control.occurrences_by_line_method.first[1][:occurrences]
               .find_all { |i| i.match(/ORDER BY.*#{TestQueries.table_name}.*LIMIT 1/) }.count).to eq(1)

      # Ensure 3 DB calls overall were executed
      expect(control.log.size).to eq(3)
      # Ensure memoization value match the raw value above
      expect(control.count).to eq(control.log.size)
      # Ensure we have only two sources of queries
      expect(control.data.keys.size).to eq(1)
    end
  end
end