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 +4 -4
- data/README.md +71 -4
- data/lib/rspec/non_deterministic_let/helpers.rb +8 -2
- data/lib/rspec/non_deterministic_let/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9cc316e618ba19ee8fb4d4292c04769d0eea2051
|
4
|
+
data.tar.gz: 0dd19cc1b3f3b2532955db43e6808248d3edcc30
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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/
|
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/
|
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) {
|
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(
|
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
|
-
|
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)
|
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.
|
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
|
+
date: 2017-11-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|