rspec-have_readonly_query_matcher 0.1.0 → 0.2.0

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
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