rspec-lets 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.
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