rspec-forward 0.1.2 → 0.1.3
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/Gemfile.lock +37 -1
- data/Guardfile +26 -0
- data/lib/rspec/forward.rb +12 -1
- data/lib/rspec/forward/forward_methods.rb +82 -0
- data/lib/rspec/forward/forward_to_instance.rb +3 -62
- data/lib/rspec/forward/forward_to_instance_build.rb +20 -0
- data/lib/rspec/forward/version.rb +1 -1
- data/rspec-forward.gemspec +2 -0
- metadata +33 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e27a0fd49193261eaee3dce78cf62baf5466ecdf4026b016f7715008fea3b629
|
4
|
+
data.tar.gz: b01d40a1b73bcf6cf870e10b25aad20bbf5def7d20e536a8dfb1db415b3c6189
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a7ee7bd5497d5cc0a72683a6824a16ffbbb387ef0ec65da077340b8d73e8f364da430a5625aca8884033315bceefb96b2706972b6302595047ba45b82d86e0ff
|
7
|
+
data.tar.gz: b5f350f737944f9b6c408c52dba44df02e096a1e98f8dc84f36d0ebae628d54ee4b141936f1e009b2d5f69de1ecefd13d11296a7d3b10a48f86c23c1f13f1333
|
data/Gemfile.lock
CHANGED
@@ -1,14 +1,46 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
rspec-forward (0.1.
|
4
|
+
rspec-forward (0.1.3)
|
5
5
|
rspec-mocks (~> 3.10)
|
6
6
|
|
7
7
|
GEM
|
8
8
|
remote: https://rubygems.org/
|
9
9
|
specs:
|
10
|
+
coderay (1.1.3)
|
10
11
|
diff-lcs (1.4.4)
|
12
|
+
ffi (1.15.0)
|
13
|
+
formatador (0.2.5)
|
14
|
+
guard (2.16.2)
|
15
|
+
formatador (>= 0.2.4)
|
16
|
+
listen (>= 2.7, < 4.0)
|
17
|
+
lumberjack (>= 1.0.12, < 2.0)
|
18
|
+
nenv (~> 0.1)
|
19
|
+
notiffany (~> 0.0)
|
20
|
+
pry (>= 0.9.12)
|
21
|
+
shellany (~> 0.0)
|
22
|
+
thor (>= 0.18.1)
|
23
|
+
guard-compat (1.2.1)
|
24
|
+
guard-rspec (4.7.3)
|
25
|
+
guard (~> 2.1)
|
26
|
+
guard-compat (~> 1.1)
|
27
|
+
rspec (>= 2.99.0, < 4.0)
|
28
|
+
listen (3.4.1)
|
29
|
+
rb-fsevent (~> 0.10, >= 0.10.3)
|
30
|
+
rb-inotify (~> 0.9, >= 0.9.10)
|
31
|
+
lumberjack (1.2.8)
|
32
|
+
method_source (1.0.0)
|
33
|
+
nenv (0.3.0)
|
34
|
+
notiffany (0.1.3)
|
35
|
+
nenv (~> 0.1)
|
36
|
+
shellany (~> 0.0)
|
37
|
+
pry (0.14.0)
|
38
|
+
coderay (~> 1.1)
|
39
|
+
method_source (~> 1.0)
|
11
40
|
rake (12.3.3)
|
41
|
+
rb-fsevent (0.10.4)
|
42
|
+
rb-inotify (0.10.1)
|
43
|
+
ffi (~> 1.0)
|
12
44
|
rspec (3.10.0)
|
13
45
|
rspec-core (~> 3.10.0)
|
14
46
|
rspec-expectations (~> 3.10.0)
|
@@ -22,11 +54,15 @@ GEM
|
|
22
54
|
diff-lcs (>= 1.2.0, < 2.0)
|
23
55
|
rspec-support (~> 3.10.0)
|
24
56
|
rspec-support (3.10.0)
|
57
|
+
shellany (0.0.1)
|
58
|
+
thor (1.1.0)
|
25
59
|
|
26
60
|
PLATFORMS
|
27
61
|
ruby
|
28
62
|
|
29
63
|
DEPENDENCIES
|
64
|
+
guard (~> 2.16)
|
65
|
+
guard-rspec (~> 4.7)
|
30
66
|
rake (~> 12.0)
|
31
67
|
rspec (~> 3.0)
|
32
68
|
rspec-forward!
|
data/Guardfile
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
# A sample Guardfile
|
2
|
+
# More info at https://github.com/guard/guard#readme
|
3
|
+
|
4
|
+
GUARD_OPTIONS = {
|
5
|
+
failed_mode: :keep,
|
6
|
+
cmd: "rspec --order rand:$RANDOM",
|
7
|
+
title: "RSpec",
|
8
|
+
}.freeze
|
9
|
+
|
10
|
+
guard :rspec, GUARD_OPTIONS do
|
11
|
+
directories %w[spec lib]
|
12
|
+
|
13
|
+
watch(%r{^spec/.+_spec\.rb$})
|
14
|
+
|
15
|
+
watch(%r{^lib/(.+)\.rb$}) do |m|
|
16
|
+
"spec/#{m[1]}_spec.rb"
|
17
|
+
end
|
18
|
+
|
19
|
+
watch("spec/spec_helper.rb") do
|
20
|
+
"spec"
|
21
|
+
end
|
22
|
+
|
23
|
+
watch(%r{^spec/support/(.+)\.rb$}) do
|
24
|
+
"spec"
|
25
|
+
end
|
26
|
+
end
|
data/lib/rspec/forward.rb
CHANGED
@@ -1,13 +1,24 @@
|
|
1
|
+
require "rspec"
|
2
|
+
require "rspec/mocks"
|
1
3
|
require "rspec/forward/version"
|
4
|
+
require "rspec/forward/forward_methods"
|
2
5
|
require "rspec/forward/forward_to_instance"
|
6
|
+
require "rspec/forward/forward_to_instance_build"
|
3
7
|
|
4
8
|
module RSpec
|
5
9
|
module Forward
|
6
10
|
class Error < StandardError; end
|
11
|
+
|
12
|
+
def forward_to_instance(expected)
|
13
|
+
ForwardToInstance.new(expected)
|
14
|
+
end
|
15
|
+
|
16
|
+
def forward_to_instance_build(expected)
|
17
|
+
ForwardToInstanceBuild.new(expected)
|
18
|
+
end
|
7
19
|
end
|
8
20
|
end
|
9
21
|
|
10
22
|
::RSpec.configure do |config|
|
11
|
-
config.include ::RSpec::Mocks::ExampleMethods
|
12
23
|
config.include ::RSpec::Forward
|
13
24
|
end
|
@@ -0,0 +1,82 @@
|
|
1
|
+
module ::RSpec
|
2
|
+
module Forward
|
3
|
+
module ForwardMethods
|
4
|
+
0.upto(10) do |index|
|
5
|
+
define_method format("with_%<count>d_args", count: index) do
|
6
|
+
@args = Array.new(index, :arg)
|
7
|
+
self
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
def with_1_arg
|
12
|
+
with_1_args
|
13
|
+
end
|
14
|
+
|
15
|
+
def with_no_args
|
16
|
+
with_0_args
|
17
|
+
end
|
18
|
+
|
19
|
+
def with(*args, **kwargs)
|
20
|
+
@args = args
|
21
|
+
@kwargs = kwargs
|
22
|
+
self
|
23
|
+
end
|
24
|
+
|
25
|
+
def with_named(**kwargs)
|
26
|
+
@args = []
|
27
|
+
@kwargs = kwargs
|
28
|
+
self
|
29
|
+
end
|
30
|
+
|
31
|
+
def failure_message
|
32
|
+
"expected #{@target.inspect} to be #{@expected}"
|
33
|
+
end
|
34
|
+
|
35
|
+
def failure_message_when_negated
|
36
|
+
"expected #{@target.inspect} not to be #{@expected}"
|
37
|
+
end
|
38
|
+
|
39
|
+
def exp_args
|
40
|
+
if @args.size.zero? && @kwargs.size.zero?
|
41
|
+
[no_args]
|
42
|
+
else
|
43
|
+
@args
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def instance
|
48
|
+
@_instance ||= instance_double(@actual, @expected => :return)
|
49
|
+
end
|
50
|
+
|
51
|
+
def assign_actual(actual)
|
52
|
+
@actual ||=
|
53
|
+
if actual.is_a?(Class)
|
54
|
+
actual
|
55
|
+
else
|
56
|
+
actual.class
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
def matches_for?(actual, return_value)
|
61
|
+
assign_actual(actual)
|
62
|
+
|
63
|
+
allow(@actual)
|
64
|
+
.to receive(:new)
|
65
|
+
.with(*exp_args, **@kwargs)
|
66
|
+
.and_return(instance)
|
67
|
+
|
68
|
+
result = @actual.send(@expected, *@args, **@kwargs) == return_value
|
69
|
+
|
70
|
+
expect(@actual)
|
71
|
+
.to have_received(:new)
|
72
|
+
.with(*exp_args, **@kwargs)
|
73
|
+
|
74
|
+
result
|
75
|
+
end
|
76
|
+
|
77
|
+
def self.included(base)
|
78
|
+
private :exp_args, :instance, :assign_actual, :matches_for?
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
@@ -1,7 +1,8 @@
|
|
1
1
|
module ::RSpec
|
2
2
|
module Forward
|
3
3
|
class ForwardToInstance
|
4
|
-
include
|
4
|
+
include ForwardMethods
|
5
|
+
include Mocks::ExampleMethods
|
5
6
|
|
6
7
|
def initialize(expected)
|
7
8
|
@expected = expected
|
@@ -10,68 +11,8 @@ module ::RSpec
|
|
10
11
|
end
|
11
12
|
|
12
13
|
def matches?(actual)
|
13
|
-
|
14
|
-
|
15
|
-
actual = actual.class unless actual.is_a?(Class)
|
16
|
-
|
17
|
-
instance = instance_double(actual, @expected => :return)
|
18
|
-
|
19
|
-
allow(actual)
|
20
|
-
.to receive(:new)
|
21
|
-
.with(*exp_args, **@kwargs)
|
22
|
-
.and_return(instance)
|
23
|
-
|
24
|
-
actual.send(@expected, *@args, **@kwargs) == :return
|
25
|
-
end
|
26
|
-
|
27
|
-
0.upto(10) do |index|
|
28
|
-
define_method format("with_%<count>d_args", count: index) do
|
29
|
-
@args = Array.new(index, :arg)
|
30
|
-
self
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
def with_1_arg
|
35
|
-
with_1_args
|
36
|
-
end
|
37
|
-
|
38
|
-
def with_no_args
|
39
|
-
with_0_args
|
40
|
-
end
|
41
|
-
|
42
|
-
def with(*args, **kwargs)
|
43
|
-
@args = args
|
44
|
-
@kwargs = kwargs
|
45
|
-
self
|
14
|
+
matches_for?(actual, :return)
|
46
15
|
end
|
47
|
-
|
48
|
-
def with_named(**kwargs)
|
49
|
-
@args = []
|
50
|
-
@kwargs = kwargs
|
51
|
-
self
|
52
|
-
end
|
53
|
-
|
54
|
-
def failure_message
|
55
|
-
"expected #{@target.inspect} to be #{@expected}"
|
56
|
-
end
|
57
|
-
|
58
|
-
def failure_message_when_negated
|
59
|
-
"expected #{@target.inspect} not to be #{@expected}"
|
60
|
-
end
|
61
|
-
|
62
|
-
private
|
63
|
-
|
64
|
-
def exp_args
|
65
|
-
if @args.size.zero? && @kwargs.size.zero?
|
66
|
-
[no_args]
|
67
|
-
else
|
68
|
-
@args
|
69
|
-
end
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
def forward_to_instance(expected)
|
74
|
-
ForwardToInstance.new(expected)
|
75
16
|
end
|
76
17
|
end
|
77
18
|
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module ::RSpec
|
2
|
+
module Forward
|
3
|
+
class ForwardToInstanceBuild
|
4
|
+
include ForwardMethods
|
5
|
+
include Mocks::ExampleMethods
|
6
|
+
|
7
|
+
def initialize(expected)
|
8
|
+
@expected = expected
|
9
|
+
@kwargs ||= {}
|
10
|
+
@args ||= []
|
11
|
+
end
|
12
|
+
|
13
|
+
def matches?(actual)
|
14
|
+
assign_actual(actual)
|
15
|
+
|
16
|
+
matches_for?(actual, instance)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
data/rspec-forward.gemspec
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rspec-forward
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Aleksader Długopolski
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-03-
|
11
|
+
date: 2021-03-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec-mocks
|
@@ -24,6 +24,34 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '3.10'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: guard
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '2.16'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '2.16'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: guard-rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '4.7'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '4.7'
|
27
55
|
description: Set of RSpec matchers for checking class method to instnace method forwarding.
|
28
56
|
email:
|
29
57
|
- ad@dotpro.org
|
@@ -37,13 +65,16 @@ files:
|
|
37
65
|
- CODE_OF_CONDUCT.md
|
38
66
|
- Gemfile
|
39
67
|
- Gemfile.lock
|
68
|
+
- Guardfile
|
40
69
|
- LICENSE.txt
|
41
70
|
- README.md
|
42
71
|
- Rakefile
|
43
72
|
- bin/console
|
44
73
|
- bin/setup
|
45
74
|
- lib/rspec/forward.rb
|
75
|
+
- lib/rspec/forward/forward_methods.rb
|
46
76
|
- lib/rspec/forward/forward_to_instance.rb
|
77
|
+
- lib/rspec/forward/forward_to_instance_build.rb
|
47
78
|
- lib/rspec/forward/version.rb
|
48
79
|
- rspec-forward.gemspec
|
49
80
|
homepage:
|