rspec-lets 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +8 -8
- data/lib/rspec-lets/helper.rb +40 -0
- metadata +2 -2
- data/lib/rspec_lets_helper.rb +0 -38
data/README.md
CHANGED
@@ -1,27 +1,27 @@
|
|
1
1
|
rspec-lets
|
2
2
|
====================
|
3
3
|
|
4
|
-
`lets` and `lets
|
4
|
+
`lets` and `lets!` as an alternate syntax for `let` and `let!` that allow
|
5
5
|
you to define multiple variables within one call, for cleaner
|
6
6
|
definitions of test variables. As a bonus, you also get `help` to define
|
7
7
|
helper methods in the same declarative way!
|
8
8
|
|
9
9
|
## Usage
|
10
10
|
|
11
|
-
Add this to your
|
11
|
+
Add this to your Gemfile:
|
12
12
|
|
13
13
|
```ruby
|
14
|
-
gem 'rspec-lets'
|
14
|
+
gem 'rspec-lets', group: :test
|
15
15
|
```
|
16
16
|
|
17
17
|
In your `spec_helper` add:
|
18
18
|
|
19
19
|
```ruby
|
20
20
|
# At the top of the file
|
21
|
-
require '
|
21
|
+
require 'rspec-lets/helper'
|
22
22
|
|
23
23
|
# In the config block
|
24
|
-
config.
|
24
|
+
config.extend RSpecLets::Helper
|
25
25
|
```
|
26
26
|
|
27
27
|
In your specs, instead of writing:
|
@@ -34,14 +34,14 @@ let(:user) { create(:user) }
|
|
34
34
|
You can now write:
|
35
35
|
|
36
36
|
```ruby
|
37
|
-
lets(admin: -> { create(:admin),
|
38
|
-
user: -> { create(:user))
|
37
|
+
lets(admin: -> { create(:admin) },
|
38
|
+
user: -> { create(:user) })
|
39
39
|
```
|
40
40
|
|
41
41
|
Or alternatively:
|
42
42
|
```ruby
|
43
43
|
lets([:admin, :user] =>
|
44
|
-
->(key) { create(
|
44
|
+
->(i, key) { create(key) })
|
45
45
|
```
|
46
46
|
|
47
47
|
The same syntax applies for `lets!`.
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'active_support/core_ext/array/wrap'
|
2
|
+
|
3
|
+
module RSpecLets
|
4
|
+
module Helper
|
5
|
+
def lets(hash)
|
6
|
+
hash.each do |keys, value|
|
7
|
+
Array.wrap(keys).each_with_index do |key, index|
|
8
|
+
define_method key do
|
9
|
+
@assignments ||= {}
|
10
|
+
if value.arity == 1
|
11
|
+
@assignments[key] ||= instance_exec(index, &value)
|
12
|
+
elsif value.arity == 2
|
13
|
+
@assignments[key] ||= instance_exec(index, key, &value)
|
14
|
+
else
|
15
|
+
@assignments[key] ||= instance_exec(&value)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def lets!(hash)
|
23
|
+
lets(hash)
|
24
|
+
|
25
|
+
hash.each do |keys, value|
|
26
|
+
Array.wrap(keys).each do |key|
|
27
|
+
before { __send__(key) }
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def help(hash)
|
33
|
+
hash.each do |var, value|
|
34
|
+
define_method var do |*args|
|
35
|
+
instance_exec(*args, &value)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rspec-lets
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -34,7 +34,7 @@ executables: []
|
|
34
34
|
extensions: []
|
35
35
|
extra_rdoc_files: []
|
36
36
|
files:
|
37
|
-
- lib/
|
37
|
+
- lib/rspec-lets/helper.rb
|
38
38
|
- README.md
|
39
39
|
- spec/rspec_lets_helper_spec.rb
|
40
40
|
- spec/spec_helper.rb
|
data/lib/rspec_lets_helper.rb
DELETED
@@ -1,38 +0,0 @@
|
|
1
|
-
require 'active_support/core_ext/array/wrap'
|
2
|
-
|
3
|
-
module RSpecLetsHelper
|
4
|
-
def lets(hash)
|
5
|
-
hash.each do |keys, value|
|
6
|
-
Array.wrap(keys).each_with_index do |key, index|
|
7
|
-
define_method key do
|
8
|
-
@assignments ||= {}
|
9
|
-
if value.arity == 1
|
10
|
-
@assignments[key] ||= instance_exec(index, &value)
|
11
|
-
elsif value.arity == 2
|
12
|
-
@assignments[key] ||= instance_exec(index, key, &value)
|
13
|
-
else
|
14
|
-
@assignments[key] ||= instance_exec(&value)
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
def lets!(hash)
|
22
|
-
lets(hash)
|
23
|
-
|
24
|
-
hash.each do |keys, value|
|
25
|
-
Array.wrap(keys).each do |key|
|
26
|
-
before { __send__(key) }
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
def help(hash)
|
32
|
-
hash.each do |var, value|
|
33
|
-
define_method var do |*args|
|
34
|
-
instance_exec(*args, &value)
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|