query_matchers 0.0.6 → 0.0.11

Sign up to get free protection for your applications and to get access to all the features.
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: