rspec-have_readonly_query_matcher 0.1.0 → 0.2.0

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
2
  SHA256:
3
- metadata.gz: 0f405bdfe7b9168719524dcc3ec3031243c63110ec8aba5f0d1df7537917a172
4
- data.tar.gz: a1e2d3d3f877c2e61d83ccdf0cf4ebce23433630e0df7a76a8176dd9d4a53063
3
+ metadata.gz: 3ace760e2644dcec97474133aadfd9f9db092b8b64b756c8953ff950fa07a55b
4
+ data.tar.gz: aa3c82291706ad5b0ef067dbd452cd874f4ac974bdb2c0082a9fee27ec1ff1e2
5
5
  SHA512:
6
- metadata.gz: 9ea6e41e03b52525af0a5c69992586a026e917d8810fe0939e83cb0c3bac241b417ba6c2d342eeede8b35a8a603c59a0f64a137bd21cc31e3d44b21b7ddcb131
7
- data.tar.gz: ad337d7044a0b86514c1f5e97731b751931db88e7914acd5d13167b505d9afc207456b332b3a8602dfc723a21e99f5e0b765400b9dfc95e711edc3a1892f17d2
6
+ metadata.gz: 3606401a93d0a719f93f81610e038569cb00bfe2c205993b1edc29b6be21fbf64c78b031768be0065334f9cbdf8c5e777379d01dba9579f504e36746f43c3695
7
+ data.tar.gz: d86f74e80344a4a7526f24b1e566a0d9dca9874276c43406fb38231adc569f7feacd4a95b876f92ff9a0862e57b0e092430b1210583f2be52da8d50910e33bc6
data/README.md CHANGED
@@ -26,10 +26,6 @@ spec/spec_helper.rb:
26
26
  ```ruby
27
27
  require 'rspec/have_readonly_query_matcher'
28
28
 
29
- RSpec::HaveReadonlyQueryMatcher.configure do |config|
30
- config.adapter = ActiveRecord::ConnectionAdapters::Mysql2Adapter
31
- end
32
-
33
29
  RSpec.configuration.include RSpec::HaveReadonlyQueryMatcher
34
30
  ```
35
31
 
@@ -1,7 +1,8 @@
1
+ require "active_support/notifications"
2
+ require "active_record"
3
+
1
4
  require "rspec/have_readonly_query_matcher/version"
2
- require "rspec/have_readonly_query_matcher/config"
3
5
  require "rspec/have_readonly_query_matcher/have_readonly_query"
4
- require "rspec/have_readonly_query_matcher/readonlyable"
5
6
 
6
7
  module RSpec
7
8
  module HaveReadonlyQueryMatcher
@@ -11,22 +12,5 @@ module RSpec
11
12
  alias_method :have_only_read_query, :have_readonly_query
12
13
 
13
14
  module_function
14
-
15
- def configure
16
- @config = Config.new
17
- yield @config
18
- end
19
-
20
- def enable!
21
- @enabled = true
22
- end
23
-
24
- def disable!
25
- @enabled = false
26
- end
27
-
28
- def enable?
29
- @enabled || false
30
- end
31
15
  end
32
16
  end
@@ -2,15 +2,20 @@ module RSpec
2
2
  module HaveReadonlyQueryMatcher
3
3
  class HaveReadonlyQuery
4
4
  def matches?(given_proc)
5
- begin
6
- RSpec::HaveReadonlyQueryMatcher.enable!
5
+ read_queries = []
6
+ callback = lambda { |name, start, finish, id, payload|
7
+ if payload[:sql] =~ /^(SELECT|SET|SHOW|DESCRIBE)\b/
8
+ read_queries << true
9
+ else
10
+ read_queries << false
11
+ end
12
+ }
13
+
14
+ ActiveSupport::Notifications.subscribed callback, 'sql.active_record' do
7
15
  given_proc.call
8
- rescue RSpec::HaveReadonlyQueryMatcher::Readonlyable::NotReadonlyError => e
9
- return false
10
- ensure
11
- RSpec::HaveReadonlyQueryMatcher.disable!
12
16
  end
13
- true
17
+
18
+ read_queries.all?
14
19
  end
15
20
 
16
21
  def description
@@ -1,5 +1,5 @@
1
1
  module RSpec
2
2
  module HaveReadonlyQueryMatcher
3
- VERSION = "0.1.0"
3
+ VERSION = "0.2.0"
4
4
  end
5
5
  end
@@ -21,6 +21,9 @@ Gem::Specification.new do |spec|
21
21
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
22
22
  spec.require_paths = ["lib"]
23
23
 
24
+ spec.add_dependency "activesupport"
25
+ spec.add_dependency "activerecord"
26
+
24
27
  spec.add_development_dependency "bundler", "~> 1.16"
25
28
  spec.add_development_dependency "rake", "~> 10.0"
26
29
  spec.add_development_dependency "rspec", "~> 3.0"
metadata CHANGED
@@ -1,15 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rspec-have_readonly_query_matcher
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Takatoshi Ono
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-05-20 00:00:00.000000000 Z
11
+ date: 2018-05-28 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activesupport
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: activerecord
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
13
41
  - !ruby/object:Gem::Dependency
14
42
  name: bundler
15
43
  requirement: !ruby/object:Gem::Requirement
@@ -69,9 +97,7 @@ files:
69
97
  - bin/console
70
98
  - bin/setup
71
99
  - lib/rspec/have_readonly_query_matcher.rb
72
- - lib/rspec/have_readonly_query_matcher/config.rb
73
100
  - lib/rspec/have_readonly_query_matcher/have_readonly_query.rb
74
- - lib/rspec/have_readonly_query_matcher/readonlyable.rb
75
101
  - lib/rspec/have_readonly_query_matcher/version.rb
76
102
  - rspec-have_readonly_query_matcher.gemspec
77
103
  homepage: https://github.com/takatoshiono/rspec-have_readonly_query_matcher
@@ -1,27 +0,0 @@
1
- module RSpec
2
- module HaveReadonlyQueryMatcher
3
- class Config
4
- attr_reader :adapter
5
-
6
- def adapter=(adapter)
7
- @adapter = adapter
8
- prepend_readonlyable
9
- end
10
-
11
- private
12
-
13
- def prepend_readonlyable
14
- adapter_class.prepend(RSpec::HaveReadonlyQueryMatcher::Readonlyable)
15
- end
16
-
17
- def adapter_class
18
- case @adapter
19
- when Class
20
- @adapter
21
- else
22
- raise RSpec::HaveReadonlyQueryMatcher::Error, "Unexpected adapter: #{@adapter}"
23
- end
24
- end
25
- end
26
- end
27
- end
@@ -1,19 +0,0 @@
1
- module RSpec
2
- module HaveReadonlyQueryMatcher
3
- module Readonlyable
4
- class NotReadonlyError < StandardError; end
5
-
6
- def execute(sql, name = nil)
7
- if RSpec::HaveReadonlyQueryMatcher.enable?
8
- if sql =~ /^(SELECT|SET|SHOW|DESCRIBE)\b/
9
- super sql, name
10
- else
11
- raise NotReadonlyError.new("#{name}: #{sql}")
12
- end
13
- else
14
- super sql, name
15
- end
16
- end
17
- end
18
- end
19
- end