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 CHANGED
@@ -1,27 +1,27 @@
1
1
  rspec-lets
2
2
  ====================
3
3
 
4
- `lets` and `lets` as an alternate syntax for `let` and `let!` that allow
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 Rails Gemfile:
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 'rspec_lets_helper'
21
+ require 'rspec-lets/helper'
22
22
 
23
23
  # In the config block
24
- config.include RSpecLetsHelper
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(:key) })
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.0
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/rspec_lets_helper.rb
37
+ - lib/rspec-lets/helper.rb
38
38
  - README.md
39
39
  - spec/rspec_lets_helper_spec.rb
40
40
  - spec/spec_helper.rb
@@ -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