rspec-parameterized 0.4.2 → 0.5.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: 74e470fb3cb7318d260e3fbab2fb81ccbc94f562fb450c8e74223161ab95f798
4
- data.tar.gz: 8ea6d76e1e3a8aaa39bbc6af1a34ffd2de70eeefd3e14d4f49b5a8405af74b8f
3
+ metadata.gz: 13272c9240c96a67c05aac16ced725a1ca74f7983a7b4efdda6ba64d377fddaf
4
+ data.tar.gz: 5a7c41cb7738620b94d789b4db10f8954e139886a2c3c3ea683d807d68d1b89f
5
5
  SHA512:
6
- metadata.gz: 327b5fb144451343fd313a6e98a58ecfeb4e296d770957232b5da5cdb004fea0f193fd37a1bbd961877b71a1425ca48b2b8d22d9d9c26999db09c5f79010f1cb
7
- data.tar.gz: 4699c910594d8234e2afa54c500f4bdcd970ad901df7b1c7b93d02b345cdbba479cdd4d76176d991fd0b0a7f901cb4619b505a62f4d1ea260a565cbbd5a71e8a
6
+ metadata.gz: a3b193a8ae72948274d5f2e3723d99ca84c75150ffb0ebce618afcab90f04159ea995c7331a528c77764c9844bbec0a5c4d0c1a507c7d1b220359fd62e6e6877
7
+ data.tar.gz: 22bedbee2bbddbf8a5874b591ca0d66ad05671caeb9df8af8a7a2769fe019cee1b188a42d2af7ca64d60ff03815276f74e0fde9237657e7cc8fe27aac0393d8c
data/.travis.yml CHANGED
@@ -1,12 +1,12 @@
1
1
  language: ruby
2
2
  cache: bundler
3
- sudo: false
4
3
  rvm:
5
4
  - 2.4
6
5
  - 2.5
7
6
  - 2.6
7
+ - 2.7
8
8
  - ruby-head
9
- - jruby-9.2.7.0
9
+ - jruby-9.2.8.0
10
10
 
11
11
  gemfile:
12
12
  - gemfiles/rspec3.4.gemfile
data/CHANGELOG.md CHANGED
@@ -1,6 +1,13 @@
1
1
  # Change Log
2
2
  ## Unreleased
3
- [Full Changelog](https://github.com/tomykaira/rspec-parameterized/compare/v0.4.1...master)
3
+ [Full Changelog](https://github.com/tomykaira/rspec-parameterized/compare/v0.4.2...master)
4
+
5
+ ## [v0.4.2](https://github.com/tomykaira/rspec-parameterized/tree/v0.4.2) (2019-04-26)
6
+ [Full Changelog](https://github.com/tomykaira/rspec-parameterized/compare/v0.4.1...v0.4.2)
7
+
8
+ - Support jruby
9
+ - https://github.com/tomykaira/rspec-parameterized/pull/54
10
+ - https://github.com/tomykaira/rspec-parameterized/issues/49
4
11
 
5
12
  ## [v0.4.1](https://github.com/tomykaira/rspec-parameterized/tree/v0.4.1) (2018-12-06)
6
13
  [Full Changelog](https://github.com/tomykaira/rspec-parameterized/compare/v0.4.0...v0.4.1)
data/README.md CHANGED
@@ -105,7 +105,7 @@ end
105
105
 
106
106
  # It's also possible to override each combination name using magic variable :case_name
107
107
  # Output:
108
- # Custom test case name
108
+ # Custom names for regular syntax
109
109
  # positive integers
110
110
  # should do additions
111
111
  # negative integers
@@ -130,7 +130,7 @@ end
130
130
 
131
131
  # Or :case_names lambda for hash syntax
132
132
  # Output:
133
- # when hash arguments
133
+ # Custom naming for hash syntax
134
134
  # 1 + 5 + 2
135
135
  # sum is even
136
136
  # 1 + 5 + 4
@@ -148,6 +148,31 @@ describe "Custom naming for hash syntax" do
148
148
  end
149
149
  end
150
150
 
151
+ # Use ref(:symbol) to use let/let! defined variables in the where block
152
+ # Use lazy when you want to create let/let! variables after the where block
153
+ #
154
+ # Failures will be more readable in the future - https://github.com/tomykaira/rspec-parameterized/pull/65
155
+ describe "lazy and ref types" do
156
+ let(:one) { 1 }
157
+ let(:four) { 4 }
158
+
159
+ where(:a, :b, :result) do
160
+ [
161
+ [ref(:one), ref(:four), lazy { two + three }]
162
+ ]
163
+ end
164
+
165
+ with_them do
166
+ context "use let after where block" do
167
+ let(:two) { 2 }
168
+ let(:three) { 3 }
169
+
170
+ it 'should equal 5' do
171
+ expect(a + b).to eq result
172
+ end
173
+ end
174
+ end
175
+ end
151
176
  ```
152
177
 
153
178
  I was inspired by [udzura's mock](https://gist.github.com/1881139).
@@ -2,6 +2,7 @@ require "rspec/parameterized/version"
2
2
  require 'parser'
3
3
  require 'unparser'
4
4
  require 'proc_to_ast'
5
+ require 'rspec/parameterized/helper_methods'
5
6
 
6
7
  module RSpec
7
8
  module Parameterized
@@ -97,6 +98,7 @@ module RSpec
97
98
 
98
99
  def define_cases(parameter, *args, &block)
99
100
  instance = new # for evaluate let methods.
101
+ instance.extend HelperMethods
100
102
  if defined?(self.superclass::LetDefinitions)
101
103
  instance.extend self.superclass::LetDefinitions
102
104
  end
@@ -112,7 +114,11 @@ module RSpec
112
114
  pretty_params = pairs.has_key?(:case_name) ? pairs[:case_name] : pairs.map {|name, val| "#{name}: #{params_inspect(val)}"}.join(", ")
113
115
  describe(pretty_params, *args) do
114
116
  pairs.each do |name, val|
115
- let(name) { val }
117
+ if HelperMethods.applicable? val
118
+ let(name) { val.apply(self) }
119
+ else
120
+ let(name) { val }
121
+ end
116
122
  end
117
123
 
118
124
  singleton_class.module_eval do
@@ -0,0 +1,7 @@
1
+ module RSpec
2
+ module Parameterized
3
+ class Arg
4
+ def apply(obj) ; end
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,20 @@
1
+ require 'rspec/parameterized/ref_arg'
2
+ require 'rspec/parameterized/lazy_arg'
3
+ module RSpec
4
+ module Parameterized
5
+ module HelperMethods
6
+ def ref(symbol)
7
+ RefArg.new(symbol)
8
+ end
9
+
10
+ def lazy(&block)
11
+ LazyArg.new(&block)
12
+ end
13
+
14
+ def self.applicable?(arg)
15
+ arg.is_a? Arg
16
+ end
17
+ end
18
+ end
19
+ end
20
+
@@ -0,0 +1,19 @@
1
+ module RSpec
2
+ module Parameterized
3
+ class LazyArg < Arg
4
+ def initialize(&block)
5
+ @block = block
6
+ end
7
+
8
+ def apply(obj)
9
+ obj.instance_eval(&@block)
10
+ end
11
+
12
+ def inspect
13
+ "#{@block.to_raw_source}"
14
+ rescue Parser::SyntaxError
15
+ super.inspect
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,19 @@
1
+ require 'rspec/parameterized/arg'
2
+ module RSpec
3
+ module Parameterized
4
+ class RefArg < Arg
5
+ def initialize(symbol)
6
+ @symbol = symbol
7
+ end
8
+
9
+ def apply(obj)
10
+ obj.send(@symbol)
11
+ end
12
+
13
+ def inspect
14
+ "#{@symbol}"
15
+ end
16
+ end
17
+ end
18
+ end
19
+
@@ -1,5 +1,5 @@
1
1
  module RSpec
2
2
  module Parameterized
3
- VERSION = "0.4.2"
3
+ VERSION = "0.5.0"
4
4
  end
5
5
  end
@@ -191,6 +191,52 @@ describe RSpec::Parameterized do
191
191
 
192
192
  end
193
193
 
194
+ describe "ref" do
195
+ let(:foo) { 1 }
196
+
197
+ where(:value, :answer) do
198
+ [
199
+ [ref(:foo), 1],
200
+ ]
201
+ end
202
+
203
+ with_them do
204
+ it "let variable in same example group can be used" do
205
+ expect(value).to eq answer
206
+ end
207
+
208
+ context "override let varibale" do
209
+ let(:foo) { 3 }
210
+
211
+ it "can override let variable" do
212
+ expect(value).to eq 3
213
+ end
214
+ end
215
+ end
216
+ end
217
+
218
+ describe "lazy" do
219
+ let(:one) { 1 }
220
+ let(:four) { 4 }
221
+
222
+ where(:a, :b, :answer) do
223
+ [
224
+ [ref(:one), ref(:four), lazy { two + three }],
225
+ ]
226
+ end
227
+
228
+ with_them do
229
+ context "define two and three after where block" do
230
+ let(:two) { 2 }
231
+ let(:three) { 3 }
232
+
233
+ it "should do additions" do
234
+ expect(a + b).to eq answer
235
+ end
236
+ end
237
+ end
238
+ end
239
+
194
240
  if RUBY_VERSION >= "2.1"
195
241
  describe "table separated with pipe (using TableSyntax)" do
196
242
  using RSpec::Parameterized::TableSyntax
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rspec-parameterized
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.2
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - tomykaira
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-04-26 00:00:00.000000000 Z
11
+ date: 2021-06-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -119,6 +119,10 @@ files:
119
119
  - gemfiles/rspec3.4.gemfile
120
120
  - lib/rspec-parameterized.rb
121
121
  - lib/rspec/parameterized.rb
122
+ - lib/rspec/parameterized/arg.rb
123
+ - lib/rspec/parameterized/helper_methods.rb
124
+ - lib/rspec/parameterized/lazy_arg.rb
125
+ - lib/rspec/parameterized/ref_arg.rb
122
126
  - lib/rspec/parameterized/table.rb
123
127
  - lib/rspec/parameterized/table_syntax.rb
124
128
  - lib/rspec/parameterized/version.rb
@@ -128,7 +132,7 @@ files:
128
132
  homepage: https://github.com/tomykaira/rspec-parameterized
129
133
  licenses: []
130
134
  metadata: {}
131
- post_install_message:
135
+ post_install_message:
132
136
  rdoc_options: []
133
137
  require_paths:
134
138
  - lib
@@ -143,8 +147,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
143
147
  - !ruby/object:Gem::Version
144
148
  version: '0'
145
149
  requirements: []
146
- rubygems_version: 3.0.3
147
- signing_key:
150
+ rubygems_version: 3.2.3
151
+ signing_key:
148
152
  specification_version: 4
149
153
  summary: RSpec::Parameterized supports simple parameterized test syntax in rspec.
150
154
  I was inspired by [udzura's mock](https://gist.github.com/1881139).