match_json 0.0.7 → 0.0.8
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 +5 -5
- data/README.md +7 -0
- data/lib/match_json/matchers/include_json.rb +9 -0
- data/lib/match_json/version.rb +1 -1
- data/spec/match_json/include_json_spec.rb +16 -0
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: a7885b90321caa660711df8efaefc8c68685a6dccebf016699446285438cf9e7
|
4
|
+
data.tar.gz: 67b355f32cc560b957a34323766fae402ac083866a11e94193204266a1f655bf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cdb5deeff6835ffd46ce4539fd85ad9938bfe1485c36073076c44c659811cf8a3e79ad13d37805fbace4f9fdd5af179c77f98af368fffbcd8fb517e7775cb29d
|
7
|
+
data.tar.gz: 278fb942dc789194b407821173ee4d84161972a859fe60b514faeae6dc72e945b7c7c016c929f386ab8eaa4ec45e5f620711a0aaed89daa4c0ea808207652705
|
data/README.md
CHANGED
@@ -129,15 +129,22 @@ Just add them to `spec/support/match_json.rb`:
|
|
129
129
|
|
130
130
|
```ruby
|
131
131
|
MatchJson::Matchers::IncludeJson::PATTERNS['id'] = /\A\d{6}\z/
|
132
|
+
MatchJson::Matchers::IncludeJson::PATTERNS[/id:(\w+)'] = proc { |actual, match| /\A#{match}_\z/ =~ actual }
|
132
133
|
```
|
133
134
|
|
134
135
|
and then use it in your spec like so:
|
135
136
|
|
136
137
|
```ruby
|
137
138
|
it 'uses patten to check value' do
|
139
|
+
|
140
|
+
# MatchJson::Matchers::IncludeJson::PATTERNS['id'] = /\A\d{6}\z/
|
138
141
|
expect(%Q({"one": "123456"})).to match_json(%Q({"one": "{id}"}))
|
139
142
|
# .. you can even do this:
|
140
143
|
expect(%Q({"one": 123456})).to match_json(%Q({"one": {id}}))
|
144
|
+
|
145
|
+
# MatchJson::Matchers::IncludeJson::PATTERNS[/id:(\w+)'] = proc { |actual, match| /\A#{match}_\z/ =~ actual }
|
146
|
+
expect(%Q({"id": "usr_xxx"})).to match_json(%Q({"one": "{id:usr}"}))
|
147
|
+
expect(%Q({"id": "cus_xxx"})).to match_json(%Q({"one": "{id:cus}"}))
|
141
148
|
end
|
142
149
|
```
|
143
150
|
|
@@ -84,6 +84,11 @@ module MatchJson
|
|
84
84
|
when regexp?(value)
|
85
85
|
reg_exp = value.match(/{re:(.*)}/)[1]
|
86
86
|
actual =~ Regexp.new(reg_exp)
|
87
|
+
when defined_regexp?(value)
|
88
|
+
defined_regexps = PATTERNS.keys.find_all { |pattern| pattern.is_a? Regexp }
|
89
|
+
matches = value.match(/{(\w+):(\w+)}/)
|
90
|
+
reg_exp = defined_regexps.find {|re| re.match?("#{matches[1]}:#{matches[2]}") }
|
91
|
+
PATTERNS[reg_exp].call(actual, matches[2])
|
87
92
|
when pattern?(value)
|
88
93
|
actual =~ PATTERNS["#{value.tr('{}', '')}"]
|
89
94
|
when non_string_pattern?(value) && !actual.is_a?(String)
|
@@ -105,6 +110,10 @@ module MatchJson
|
|
105
110
|
!!(str =~ /\A\{re:.+\}\z/)
|
106
111
|
end
|
107
112
|
|
113
|
+
def defined_regexp?(str)
|
114
|
+
!!(str =~ /\A\{\w+:\w+\}\z/)
|
115
|
+
end
|
116
|
+
|
108
117
|
def compared_different_types?(actual, expected)
|
109
118
|
actual.class != expected.class
|
110
119
|
end
|
data/lib/match_json/version.rb
CHANGED
@@ -97,4 +97,20 @@ describe "include_json" do
|
|
97
97
|
}.to fail_with(%Q("one":"{id}:non-string" was not found in\n {"one":true}))
|
98
98
|
end
|
99
99
|
end
|
100
|
+
|
101
|
+
context 'with custom pattern as regexp' do
|
102
|
+
let(:regexp) { /id:(\w+)/ }
|
103
|
+
before do
|
104
|
+
MatchJson::Matchers::IncludeJson::PATTERNS[regexp] = proc { |actual, match| /\A#{match}_\w+\z/ =~ actual }
|
105
|
+
end
|
106
|
+
|
107
|
+
after do
|
108
|
+
MatchJson::Matchers::IncludeJson::PATTERNS.delete(regexp)
|
109
|
+
end
|
110
|
+
|
111
|
+
it 'uses patten to check value' do
|
112
|
+
expect(%Q({"one": "cus_xxx"})).to include_json(%Q({"one": "{id:cus}"}))
|
113
|
+
expect(%Q({"one": "cust_xxx"})).to_not include_json(%Q({"one": "{id:cus}"}))
|
114
|
+
end
|
115
|
+
end
|
100
116
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: match_json
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pavel Gabriel
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2018-07-28 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
@@ -150,7 +150,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
150
150
|
version: '0'
|
151
151
|
requirements: []
|
152
152
|
rubyforge_project:
|
153
|
-
rubygems_version: 2.
|
153
|
+
rubygems_version: 2.7.5
|
154
154
|
signing_key:
|
155
155
|
specification_version: 4
|
156
156
|
summary: RSpec matcher for JSON documents
|