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 +4 -4
- data/README.md +0 -4
- data/lib/rspec/have_readonly_query_matcher.rb +3 -19
- data/lib/rspec/have_readonly_query_matcher/have_readonly_query.rb +12 -7
- data/lib/rspec/have_readonly_query_matcher/version.rb +1 -1
- data/rspec-have_readonly_query_matcher.gemspec +3 -0
- metadata +30 -4
- data/lib/rspec/have_readonly_query_matcher/config.rb +0 -27
- data/lib/rspec/have_readonly_query_matcher/readonlyable.rb +0 -19
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3ace760e2644dcec97474133aadfd9f9db092b8b64b756c8953ff950fa07a55b
|
4
|
+
data.tar.gz: aa3c82291706ad5b0ef067dbd452cd874f4ac974bdb2c0082a9fee27ec1ff1e2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
6
|
-
|
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
|
-
|
17
|
+
|
18
|
+
read_queries.all?
|
14
19
|
end
|
15
20
|
|
16
21
|
def description
|
@@ -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.
|
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-
|
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
|