query_matchers 0.0.6 → 0.0.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: e6f6dc2a56c09d35cc394dccb5d55c466060dd3b
4
- data.tar.gz: 28b655a1df343198af4c5b6b36c176586fe4b5d6
2
+ SHA256:
3
+ metadata.gz: d28aef64bb82469c2a69de6dc16ce385aba2bd7d5d00f4fbef09445188ff62bb
4
+ data.tar.gz: 691c45802a5e3d2831dbde542e4117f7230831a2e5c92ba82b4e600d4d35b554
5
5
  SHA512:
6
- metadata.gz: 9eb90f54833387296a597342fcadaa3b9feb23f5eabd9783bf4491ba832b9a2904b0d4cc362da8092b5cc363bfacf967b1e95d00450beb36421aebbfc34280bd
7
- data.tar.gz: 9afdea8cc696e6a09399da094b8a5910a684e1e50f440a53ed125b2ba53f94c5f4859e926c542334dc6480ff3d30d354189d424e044141455a5f764e8892515b
6
+ metadata.gz: 53023a711f67eb7e07ff5456549585bdae5f178fc696d6e1a5f337be536e79a48498e11259d87ff2068390a284d10385b9b31d71ce0367f53dd6b94dba032ddf
7
+ data.tar.gz: bbc6cb2cfcc9248ac45182578c5f07620db6f432131df12be3747d0bbe3c3b04a20490463d37f450c18813de8eed6dc6e7c1f182675fa9624822ed72ae8f016b
@@ -1,6 +1,7 @@
1
1
  module QueryMatchers
2
2
  class QueryCounter
3
3
  OPERATIONS = %w(SELECT INSERT UPDATE DELETE)
4
+ RAILS5_INFORMATION_SCHEMA_REGEX = /^\s*SELECT.+FROM information_schema\./m
4
5
 
5
6
  def initialize
6
7
  @events = []
@@ -28,7 +29,11 @@ module QueryMatchers
28
29
  end
29
30
 
30
31
  def count_query?(sql)
31
- OPERATIONS.any? {|op| sql.start_with?(op) }
32
+ OPERATIONS.any? {|op| sql.lstrip.start_with?(op) } && !ignore_query?(sql)
33
+ end
34
+
35
+ def ignore_query?(sql)
36
+ sql.match?(RAILS5_INFORMATION_SCHEMA_REGEX)
32
37
  end
33
38
  end
34
39
  end
@@ -1,3 +1,3 @@
1
1
  module QueryMatchers
2
- VERSION = "0.0.6"
2
+ VERSION = "0.0.11"
3
3
  end
@@ -17,9 +17,9 @@ Gem::Specification.new do |spec|
17
17
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
18
18
  spec.require_paths = ["lib"]
19
19
 
20
- spec.add_runtime_dependency "activesupport", ["> 3.0", "< 5.0"]
20
+ spec.add_runtime_dependency "activesupport", ["> 3.0"]
21
21
 
22
- spec.add_development_dependency "bundler", "~> 1.5"
22
+ spec.add_development_dependency "bundler"
23
23
  spec.add_development_dependency "rake"
24
- spec.add_development_dependency "rspec", "~> 2.14.0"
24
+ spec.add_development_dependency "rspec"
25
25
  end
@@ -8,44 +8,63 @@ describe QueryMatchers::QueryCounter do
8
8
  query = "SELECT * FROM somewhere"
9
9
  counter.execute!(sql_target(query))
10
10
 
11
- counter.queries.should == [query]
11
+ expect(counter.queries).to eq([query])
12
12
  end
13
13
 
14
14
  it "counts the number of queries performed in the target block" do
15
15
  target = proc { 3.times { perform_sql("INSERT INTO jokes") } }
16
16
  counter.execute!(target)
17
17
 
18
- counter.query_count.should == 3
18
+ expect(counter.query_count).to eq(3)
19
19
  end
20
20
 
21
21
  it "counts INSERT queries" do
22
22
  counter.execute!(sql_target("INSERT INTO jokes"))
23
23
 
24
- counter.query_count.should == 1
24
+ expect(counter.query_count).to eq(1)
25
25
  end
26
26
 
27
27
  it "counts UPDATE queries" do
28
28
  counter.execute!(sql_target("UPDATE mood SET laughing = 0"))
29
29
 
30
- counter.query_count.should == 1
30
+ expect(counter.query_count).to eq(1)
31
31
  end
32
32
 
33
33
  it "counts DELETE queries" do
34
34
  counter.execute!(sql_target("DELETE FROM goodwill"))
35
35
 
36
- counter.query_count.should == 1
36
+ expect(counter.query_count).to eq(1)
37
37
  end
38
38
 
39
39
  it "counts SELECT queries" do
40
40
  counter.execute!(sql_target("SELECT FROM inventory"))
41
41
 
42
- counter.query_count.should == 1
42
+ expect(counter.query_count).to eq(1)
43
+ end
44
+
45
+ it "counts queries with a bit of whitespace" do
46
+ counter.execute!(sql_target(" SELECT FROM inventory"))
47
+
48
+ expect(counter.query_count).to eq(1)
43
49
  end
44
50
 
45
51
  it "doesn't count any other type of query" do
46
52
  counter.execute!(sql_target("BREAKDANCE"))
47
53
 
48
- counter.query_count.should == 0
54
+ expect(counter.query_count).to eq(0)
55
+ end
56
+
57
+ it "ignores Rails 5's schema queries" do
58
+ counter.execute!(sql_target(<<-SQL))
59
+ SELECT column_name
60
+ FROM information_schema.key_column_usage
61
+ WHERE constraint_name = 'PRIMARY'
62
+ AND table_schema = DATABASE()
63
+ AND table_name = 'jokes'
64
+ ORDER BY ordinal_position
65
+ SQL
66
+
67
+ expect(counter.query_count).to eq(0)
49
68
  end
50
69
 
51
70
  def sql_target(sql)
@@ -7,22 +7,22 @@ describe QueryMatchers::QueryExecutionMatcher do
7
7
 
8
8
  describe "#matches?" do
9
9
  before do
10
- counter.stub(:execute!)
10
+ allow(counter).to receive(:execute!)
11
11
  end
12
12
 
13
13
  it "executes the target" do
14
14
  matcher.matches?(:whatever)
15
- counter.should have_received(:execute!).with(:whatever)
15
+ expect(counter).to have_received(:execute!).with(:whatever)
16
16
  end
17
17
 
18
18
  it "returns true if the number of queries performed matched the expectation" do
19
- counter.stub(:query_count) { 4 }
20
- matcher.matches?(:whatever).should == true
19
+ allow(counter).to receive(:query_count) { 4 }
20
+ expect(matcher.matches?(:whatever)).to eq(true)
21
21
  end
22
22
 
23
23
  it "returns false if the number of queries performed doesn't match the expectation" do
24
- counter.stub(:query_count) { 3 }
25
- matcher.matches?(:whatever).should == false
24
+ allow(counter).to receive(:query_count) { 3 }
25
+ expect(matcher.matches?(:whatever)).to eq(false)
26
26
  end
27
27
  end
28
28
 
@@ -31,10 +31,10 @@ describe QueryMatchers::QueryExecutionMatcher do
31
31
  query1 = "SELECT FROM jokes WHERE puns > 3"
32
32
  query2 = "DELETE FROM jokes WHERE inappropriate = 1"
33
33
 
34
- counter.stub(:query_count) { 99 }
35
- counter.stub(:queries) { [query1, query2] }
34
+ allow(counter).to receive(:query_count) { 99 }
35
+ allow(counter).to receive(:queries) { [query1, query2] }
36
36
 
37
- matcher.failure_message.should == <<-MESSAGE.strip_heredoc.chomp
37
+ expect(matcher.failure_message).to eq <<-MESSAGE.strip_heredoc.chomp
38
38
  expected block to execute 4 SQL queries, but executed 99:
39
39
 
40
40
  - SELECT FROM jokes WHERE puns > 3
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: query_matchers
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Schierbeck
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-02-11 00:00:00.000000000 Z
11
+ date: 2020-12-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -17,9 +17,6 @@ dependencies:
17
17
  - - ">"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '3.0'
20
- - - "<"
21
- - !ruby/object:Gem::Version
22
- version: '5.0'
23
20
  type: :runtime
24
21
  prerelease: false
25
22
  version_requirements: !ruby/object:Gem::Requirement
@@ -27,23 +24,20 @@ dependencies:
27
24
  - - ">"
28
25
  - !ruby/object:Gem::Version
29
26
  version: '3.0'
30
- - - "<"
31
- - !ruby/object:Gem::Version
32
- version: '5.0'
33
27
  - !ruby/object:Gem::Dependency
34
28
  name: bundler
35
29
  requirement: !ruby/object:Gem::Requirement
36
30
  requirements:
37
- - - "~>"
31
+ - - ">="
38
32
  - !ruby/object:Gem::Version
39
- version: '1.5'
33
+ version: '0'
40
34
  type: :development
41
35
  prerelease: false
42
36
  version_requirements: !ruby/object:Gem::Requirement
43
37
  requirements:
44
- - - "~>"
38
+ - - ">="
45
39
  - !ruby/object:Gem::Version
46
- version: '1.5'
40
+ version: '0'
47
41
  - !ruby/object:Gem::Dependency
48
42
  name: rake
49
43
  requirement: !ruby/object:Gem::Requirement
@@ -62,17 +56,17 @@ dependencies:
62
56
  name: rspec
63
57
  requirement: !ruby/object:Gem::Requirement
64
58
  requirements:
65
- - - "~>"
59
+ - - ">="
66
60
  - !ruby/object:Gem::Version
67
- version: 2.14.0
61
+ version: '0'
68
62
  type: :development
69
63
  prerelease: false
70
64
  version_requirements: !ruby/object:Gem::Requirement
71
65
  requirements:
72
- - - "~>"
66
+ - - ">="
73
67
  - !ruby/object:Gem::Version
74
- version: 2.14.0
75
- description:
68
+ version: '0'
69
+ description:
76
70
  email:
77
71
  - dasch@zendesk.com
78
72
  executables: []
@@ -95,7 +89,7 @@ homepage: https://github.com/dasch/query_matchers
95
89
  licenses:
96
90
  - MIT
97
91
  metadata: {}
98
- post_install_message:
92
+ post_install_message:
99
93
  rdoc_options: []
100
94
  require_paths:
101
95
  - lib
@@ -110,12 +104,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
110
104
  - !ruby/object:Gem::Version
111
105
  version: '0'
112
106
  requirements: []
113
- rubyforge_project:
114
- rubygems_version: 2.2.2
115
- signing_key:
107
+ rubygems_version: 3.2.2
108
+ signing_key:
116
109
  specification_version: 4
117
110
  summary: Match the number of queries performed in any block of code
118
111
  test_files:
119
112
  - spec/query_counter_spec.rb
120
113
  - spec/query_execution_matcher_spec.rb
121
- has_rdoc: