rspec-non-deterministic-let 0.1.0 → 0.1.1

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
  SHA1:
3
- metadata.gz: cea4fb4fbdbf5a9379120496fbc73d880af94536
4
- data.tar.gz: 6367cbad8e85b5d3cc0f14aba2e8d04ff6eb5b3c
3
+ metadata.gz: 9cc316e618ba19ee8fb4d4292c04769d0eea2051
4
+ data.tar.gz: 0dd19cc1b3f3b2532955db43e6808248d3edcc30
5
5
  SHA512:
6
- metadata.gz: 2d29c201b0c3b877c30411de04e2e6c6f4eb0b75a343f05e3e08b2f15d1da8db2cd447d6e298607d131a1eb2468628d4bc0f7489b0a7c9c732c7cb9f941304ad
7
- data.tar.gz: b3e1fc0be30949f5e844528ce4e81036d446d3c13d72b82524fd2a830fc4af4eb66ab2ecce01be162accb40d23dc85d17e2369d093e0decc96588178d6879759
6
+ metadata.gz: 0570daf43f80c5b6ad4edb9aabde58331d52d2461feb7bf81af2705003b1dff988149fbfbf0c9104018fcc4523579eb5351955a0a94ec71429df3f7d5c131c10
7
+ data.tar.gz: 044200d67ac757bff3f8f643b3a1d79bdfd3c0ec362b5474b48d4d83f9828e12065d5118f3b4775cf1bc5f28357dc4a37286e976114a29c4eb254e834c38aec3
data/README.md CHANGED
@@ -27,7 +27,7 @@ Or install it yourself as:
27
27
  Please add spec/rails_helper.rb
28
28
 
29
29
  ```ruby
30
- require 'rspec/actioncheck'
30
+ require 'rspec/non_deterministic_ret'
31
31
  ```
32
32
 
33
33
  #### Other
@@ -35,7 +35,7 @@ require 'rspec/actioncheck'
35
35
  Please add spec/spec_helper.rb
36
36
 
37
37
  ```ruby
38
- require 'rspec/actioncheck'
38
+ require 'rspec/non_deterministic_ret'
39
39
  ```
40
40
 
41
41
  ### Simple case
@@ -82,7 +82,7 @@ RSpec.describe 'Some test without this gem'do
82
82
  end
83
83
 
84
84
  context 'some_state = 2' do
85
- let(:some_state) { 1 }
85
+ let(:some_state) { 2 }
86
86
  include_examples 'some_state is 1 or 2'
87
87
  end
88
88
  end
@@ -96,7 +96,7 @@ I think that before one is more intuitive.
96
96
 
97
97
  If you want to description with `nd_let` then you can set description using by second argument.
98
98
 
99
- ```
99
+ ```ruby
100
100
  RSpec.describe 'Some test use by description' do
101
101
  nd_let(:some_state, 'some_state = 1') { 1 }
102
102
  nd_let(:some_state, 'some_state = 2') { 2 }
@@ -122,6 +122,73 @@ This example is exactry same as `Some test without this gem` case.
122
122
  You can use `nd_let!`.
123
123
  The effect of 'nd_let!' is same as `let!` for `let`
124
124
 
125
+ ### Multi variable context
126
+
127
+ If you want to write under case
128
+
129
+ ```ruby
130
+ RSpec.describe 'Direct multi variable context' do
131
+ nd_let(:some_state1, 'some_state1 = 1') { 1 }
132
+ nd_let(:some_state1, 'some_state1 = 2') { 2 }
133
+ nd_let(:some_state2, 'some_state2 = 3') { 3 }
134
+ nd_let(:some_state2, 'some_state2 = 4') { 4 }
135
+
136
+ nd_let_context :some_state1 do
137
+ nd_let_context :some_state2 do
138
+ it 'some_state1 = 1 or 2' do
139
+ expect(some_state1).to be >= 1
140
+ expect(some_state1).to be <= 2 end
141
+ it 'some_state1 only 1 or 2' do
142
+ expect(some_state1).not_to be < 1
143
+ expect(some_state1).not_to be > 2
144
+ end
145
+
146
+ it 'some_state2 = 3 or 4' do
147
+ expect(some_state2).to be >= 3
148
+ expect(some_state2).to be <= 4
149
+ end
150
+ it 'some_state2 only 3 or 4' do
151
+ expect(some_state2).not_to be < 3
152
+ expect(some_state2).not_to be > 4
153
+ end
154
+ end
155
+ end
156
+ end
157
+ ```
158
+
159
+ You can use that code.
160
+
161
+
162
+ ```ruby
163
+ RSpec.describe 'multi variable context' do
164
+ nd_let(:some_state1, 'some_state1 = 1') { 1 }
165
+ nd_let(:some_state1, 'some_state1 = 2') { 2 }
166
+ nd_let(:some_state2, 'some_state2 = 3') { 3 }
167
+ nd_let(:some_state2, 'some_state2 = 4') { 4 }
168
+
169
+ nd_let_context :some_state1, :some_state2 do
170
+ it 'some_state1 = 1 or 2' do
171
+ expect(some_state1).to be >= 1
172
+ expect(some_state1).to be <= 2
173
+ end
174
+ it 'some_state1 only 1 or 2' do
175
+ expect(some_state1).not_to be < 1
176
+ expect(some_state1).not_to be > 2
177
+ end
178
+
179
+ it 'some_state2 = 3 or 4' do
180
+ expect(some_state2).to be >= 3
181
+ expect(some_state2).to be <= 4
182
+ end
183
+ it 'some_state2 only 3 or 4' do
184
+ expect(some_state2).not_to be < 3
185
+ expect(some_state2).not_to be > 4
186
+ end
187
+ end
188
+ end
189
+ ```
190
+
191
+
125
192
  ## Development
126
193
 
127
194
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
@@ -2,7 +2,9 @@ module RSpec
2
2
  module NonDeterministicLet
3
3
  module Helpers
4
4
  module ClassMethods
5
- def nd_let_context(nd_let_name, *args, &example_group_block)
5
+ def nd_let_context(*args, &example_group_block)
6
+ nd_let_name = args.shift
7
+ return :end unless nd_let_name.is_a?(Symbol)
6
8
  send(__nd_let_state_name(nd_let_name)).each do |let_options|
7
9
  context(let_options[:description], *args) do
8
10
  if let_options[:is_exclamation]
@@ -10,9 +12,13 @@ module RSpec
10
12
  else
11
13
  let(nd_let_name, &let_options[:block])
12
14
  end
13
- self.module_exec(&example_group_block)
15
+ # HACK: create nest using by recursive call.
16
+ if nd_let_context(*args, &example_group_block) == :end
17
+ self.module_exec(&example_group_block)
18
+ end
14
19
  end
15
20
  end
21
+ return nil
16
22
  end
17
23
 
18
24
  def nd_let(nd_let_name, description=nil, &let_block)
@@ -1,5 +1,5 @@
1
1
  module RSpec
2
2
  module NonDeterministicLet
3
- VERSION = "0.1.0"
3
+ VERSION = "0.1.1"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rspec-non-deterministic-let
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yuta Hinokuma
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-11-11 00:00:00.000000000 Z
11
+ date: 2017-11-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler