rspec-sleeping_king_studios 2.1.1 → 2.2.0.rc.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/CHANGELOG.md +52 -0
- data/DEVELOPMENT.md +26 -17
- data/LICENSE +1 -1
- data/README.md +198 -19
- data/lib/rspec/sleeping_king_studios/configuration.rb +63 -2
- data/lib/rspec/sleeping_king_studios/examples/property_examples.rb +115 -27
- data/lib/rspec/sleeping_king_studios/examples/rspec_matcher_examples.rb +66 -51
- data/lib/rspec/sleeping_king_studios/matchers/active_model/have_errors.rb +8 -269
- data/lib/rspec/sleeping_king_studios/matchers/active_model/have_errors_matcher.rb +268 -0
- data/lib/rspec/sleeping_king_studios/matchers/base_matcher.rb +5 -15
- data/lib/rspec/sleeping_king_studios/matchers/built_in/be_kind_of.rb +3 -63
- data/lib/rspec/sleeping_king_studios/matchers/built_in/be_kind_of_matcher.rb +65 -0
- data/lib/rspec/sleeping_king_studios/matchers/built_in/include.rb +3 -108
- data/lib/rspec/sleeping_king_studios/matchers/built_in/include_matcher.rb +134 -0
- data/lib/rspec/sleeping_king_studios/matchers/built_in/respond_to.rb +3 -258
- data/lib/rspec/sleeping_king_studios/matchers/built_in/respond_to_matcher.rb +116 -0
- data/lib/rspec/sleeping_king_studios/matchers/core/alias_method.rb +11 -0
- data/lib/rspec/sleeping_king_studios/matchers/core/alias_method_matcher.rb +107 -0
- data/lib/rspec/sleeping_king_studios/matchers/core/be_boolean.rb +9 -36
- data/lib/rspec/sleeping_king_studios/matchers/core/be_boolean_matcher.rb +37 -0
- data/lib/rspec/sleeping_king_studios/matchers/core/construct.rb +3 -210
- data/lib/rspec/sleeping_king_studios/matchers/core/construct_matcher.rb +113 -0
- data/lib/rspec/sleeping_king_studios/matchers/core/delegate_method.rb +11 -0
- data/lib/rspec/sleeping_king_studios/matchers/core/delegate_method_matcher.rb +311 -0
- data/lib/rspec/sleeping_king_studios/matchers/core/have_constant.rb +16 -0
- data/lib/rspec/sleeping_king_studios/matchers/core/have_constant_matcher.rb +225 -0
- data/lib/rspec/sleeping_king_studios/matchers/core/have_predicate.rb +11 -0
- data/lib/rspec/sleeping_king_studios/matchers/core/have_predicate_matcher.rb +97 -0
- data/lib/rspec/sleeping_king_studios/matchers/core/have_property.rb +3 -104
- data/lib/rspec/sleeping_king_studios/matchers/core/have_property_matcher.rb +108 -0
- data/lib/rspec/sleeping_king_studios/matchers/core/have_reader.rb +3 -74
- data/lib/rspec/sleeping_king_studios/matchers/core/have_reader_matcher.rb +96 -0
- data/lib/rspec/sleeping_king_studios/matchers/core/have_writer.rb +4 -59
- data/lib/rspec/sleeping_king_studios/matchers/core/have_writer_matcher.rb +55 -0
- data/lib/rspec/sleeping_king_studios/matchers/description.rb +62 -0
- data/lib/rspec/sleeping_king_studios/matchers/macros.rb +32 -0
- data/lib/rspec/sleeping_king_studios/matchers/shared/match_parameters.rb +168 -66
- data/lib/rspec/sleeping_king_studios/matchers/shared/match_property.rb +25 -0
- data/lib/rspec/sleeping_king_studios/matchers.rb +0 -4
- data/lib/rspec/sleeping_king_studios/support/method_signature.rb +51 -0
- data/lib/rspec/sleeping_king_studios/support/method_signature_expectation.rb +158 -0
- data/lib/rspec/sleeping_king_studios/support.rb +9 -0
- data/lib/rspec/sleeping_king_studios/version.rb +10 -4
- metadata +46 -30
@@ -0,0 +1,158 @@
|
|
1
|
+
# lib/rspec/sleeping_king_studios/support/method_signature_expectation.rb
|
2
|
+
|
3
|
+
require 'rspec/sleeping_king_studios/support/method_signature'
|
4
|
+
|
5
|
+
require 'sleeping_king_studios/tools/array_tools'
|
6
|
+
|
7
|
+
module RSpec::SleepingKingStudios::Support
|
8
|
+
# @api private
|
9
|
+
class MethodSignatureExpectation
|
10
|
+
def initialize
|
11
|
+
@min_arguments = 0
|
12
|
+
@max_arguments = 0
|
13
|
+
@unlimited_arguments = false
|
14
|
+
@keywords = []
|
15
|
+
@any_keywords = false
|
16
|
+
@block_argument = false
|
17
|
+
@errors = {}
|
18
|
+
end # method initialize
|
19
|
+
|
20
|
+
attr_accessor :min_arguments, :max_arguments, :keywords
|
21
|
+
|
22
|
+
attr_writer :any_keywords, :block_argument, :unlimited_arguments
|
23
|
+
|
24
|
+
attr_reader :errors
|
25
|
+
|
26
|
+
def description
|
27
|
+
messages = []
|
28
|
+
|
29
|
+
if min_arguments == max_arguments
|
30
|
+
messages << "#{min_arguments} argument#{1 == min_arguments ? '' : 's'}"
|
31
|
+
else
|
32
|
+
messages << "#{min_arguments}..#{max_arguments} arguments"
|
33
|
+
end # if-else
|
34
|
+
|
35
|
+
messages << 'unlimited arguments' if unlimited_arguments?
|
36
|
+
|
37
|
+
unless keywords.empty?
|
38
|
+
keywords_list = array_tools.humanize_list keywords.map(&:inspect)
|
39
|
+
messages << "keyword#{1 == keywords.count ? '' : 's'} #{keywords_list}"
|
40
|
+
end # if
|
41
|
+
|
42
|
+
messages << 'arbitrary keywords' if any_keywords?
|
43
|
+
|
44
|
+
messages << 'a block' if block_argument?
|
45
|
+
|
46
|
+
"with #{array_tools.humanize_list messages}"
|
47
|
+
end # method description
|
48
|
+
|
49
|
+
def matches? method
|
50
|
+
@signature = MethodSignature.new(method)
|
51
|
+
@errors = {}
|
52
|
+
|
53
|
+
match = true
|
54
|
+
match = false unless matches_arity?
|
55
|
+
match = false unless matches_keywords?
|
56
|
+
match = false unless matches_block?
|
57
|
+
match
|
58
|
+
end # method matches?
|
59
|
+
|
60
|
+
def any_keywords?
|
61
|
+
!!@any_keywords
|
62
|
+
end # method any_keywords?
|
63
|
+
|
64
|
+
def block_argument?
|
65
|
+
!!@block_argument
|
66
|
+
end # method block_argument?
|
67
|
+
|
68
|
+
def unlimited_arguments?
|
69
|
+
!!@unlimited_arguments
|
70
|
+
end # method unlimited_arguments?
|
71
|
+
|
72
|
+
private
|
73
|
+
|
74
|
+
attr_reader :signature
|
75
|
+
|
76
|
+
def array_tools
|
77
|
+
::SleepingKingStudios::Tools::ArrayTools
|
78
|
+
end # method array_tools
|
79
|
+
|
80
|
+
def matches_arity?
|
81
|
+
match = true
|
82
|
+
|
83
|
+
if min_arguments < signature.min_arguments
|
84
|
+
match = false
|
85
|
+
|
86
|
+
@errors[:not_enough_args] = {
|
87
|
+
:expected => signature.min_arguments,
|
88
|
+
:received => min_arguments
|
89
|
+
} # end hash
|
90
|
+
end # if
|
91
|
+
|
92
|
+
if signature.unlimited_arguments?
|
93
|
+
|
94
|
+
else
|
95
|
+
if max_arguments > signature.max_arguments
|
96
|
+
match = false
|
97
|
+
|
98
|
+
@errors[:too_many_args] = {
|
99
|
+
:expected => signature.max_arguments,
|
100
|
+
:received => max_arguments
|
101
|
+
} # end hash
|
102
|
+
end # if-else
|
103
|
+
|
104
|
+
if unlimited_arguments?
|
105
|
+
match = false
|
106
|
+
|
107
|
+
@errors[:no_variadic_args] = {
|
108
|
+
:expected => signature.max_arguments
|
109
|
+
} # end hash
|
110
|
+
end # if
|
111
|
+
end # if-else
|
112
|
+
|
113
|
+
match
|
114
|
+
end # method matches_arity?
|
115
|
+
|
116
|
+
def matches_block?
|
117
|
+
match = true
|
118
|
+
|
119
|
+
if block_argument? && !signature.block_argument?
|
120
|
+
match = false
|
121
|
+
|
122
|
+
@errors[:no_block_argument] = true
|
123
|
+
end # if
|
124
|
+
|
125
|
+
match
|
126
|
+
end # method matches_block?
|
127
|
+
|
128
|
+
def matches_keywords?
|
129
|
+
match = true
|
130
|
+
|
131
|
+
missing_keywords = signature.required_keywords - keywords
|
132
|
+
unless missing_keywords.empty?
|
133
|
+
match = false
|
134
|
+
|
135
|
+
@errors[:missing_keywords] = missing_keywords
|
136
|
+
end # unless
|
137
|
+
|
138
|
+
if signature.any_keywords?
|
139
|
+
|
140
|
+
else
|
141
|
+
unexpected_keywords = keywords - signature.keywords
|
142
|
+
unless unexpected_keywords.empty?
|
143
|
+
match = false
|
144
|
+
|
145
|
+
@errors[:unexpected_keywords] = unexpected_keywords
|
146
|
+
end # unless
|
147
|
+
|
148
|
+
if any_keywords?
|
149
|
+
match = false
|
150
|
+
|
151
|
+
@errors[:no_variadic_keywords] = true
|
152
|
+
end # if
|
153
|
+
end # if-else
|
154
|
+
|
155
|
+
match
|
156
|
+
end # method matches_keywords?
|
157
|
+
end # class
|
158
|
+
end # module
|
@@ -11,15 +11,21 @@ module RSpec
|
|
11
11
|
# Major version.
|
12
12
|
MAJOR = 2
|
13
13
|
# Minor version.
|
14
|
-
MINOR =
|
14
|
+
MINOR = 2
|
15
15
|
# Patch version.
|
16
|
-
PATCH =
|
16
|
+
PATCH = 0
|
17
17
|
# Prerelease version.
|
18
|
-
PRERELEASE =
|
18
|
+
PRERELEASE = 'rc'
|
19
19
|
# Build metadata.
|
20
|
-
BUILD =
|
20
|
+
BUILD = 1
|
21
21
|
|
22
22
|
# Generates the gem version string from the Version constants.
|
23
|
+
#
|
24
|
+
# Inlined here because dependencies may not be loaded when processing a
|
25
|
+
# gemspec, which results in the user being unable to install the gem for
|
26
|
+
# the first time.
|
27
|
+
#
|
28
|
+
# @see SleepingKingStudios::Tools::SemanticVersion#to_gem_version
|
23
29
|
def self.to_gem_version
|
24
30
|
str = "#{MAJOR}.#{MINOR}.#{PATCH}"
|
25
31
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rspec-sleeping_king_studios
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.2.0.rc.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rob "Merlin" Smith
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-05-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -28,22 +28,16 @@ dependencies:
|
|
28
28
|
name: sleeping_king_studios-tools
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "~>"
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '0.1'
|
34
31
|
- - ">="
|
35
32
|
- !ruby/object:Gem::Version
|
36
|
-
version: 0.
|
33
|
+
version: 0.3.0.rc.0
|
37
34
|
type: :runtime
|
38
35
|
prerelease: false
|
39
36
|
version_requirements: !ruby/object:Gem::Requirement
|
40
37
|
requirements:
|
41
|
-
- - "~>"
|
42
|
-
- !ruby/object:Gem::Version
|
43
|
-
version: '0.1'
|
44
38
|
- - ">="
|
45
39
|
- !ruby/object:Gem::Version
|
46
|
-
version: 0.
|
40
|
+
version: 0.3.0.rc.0
|
47
41
|
- !ruby/object:Gem::Dependency
|
48
42
|
name: appraisal
|
49
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -70,34 +64,20 @@ dependencies:
|
|
70
64
|
requirements:
|
71
65
|
- - "~>"
|
72
66
|
- !ruby/object:Gem::Version
|
73
|
-
version: '
|
67
|
+
version: '8.2'
|
74
68
|
- - ">="
|
75
69
|
- !ruby/object:Gem::Version
|
76
|
-
version:
|
70
|
+
version: 8.2.2
|
77
71
|
type: :development
|
78
72
|
prerelease: false
|
79
73
|
version_requirements: !ruby/object:Gem::Requirement
|
80
74
|
requirements:
|
81
75
|
- - "~>"
|
82
76
|
- !ruby/object:Gem::Version
|
83
|
-
version: '
|
77
|
+
version: '8.2'
|
84
78
|
- - ">="
|
85
79
|
- !ruby/object:Gem::Version
|
86
|
-
version:
|
87
|
-
- !ruby/object:Gem::Dependency
|
88
|
-
name: factory_girl
|
89
|
-
requirement: !ruby/object:Gem::Requirement
|
90
|
-
requirements:
|
91
|
-
- - "~>"
|
92
|
-
- !ruby/object:Gem::Version
|
93
|
-
version: '4.2'
|
94
|
-
type: :development
|
95
|
-
prerelease: false
|
96
|
-
version_requirements: !ruby/object:Gem::Requirement
|
97
|
-
requirements:
|
98
|
-
- - "~>"
|
99
|
-
- !ruby/object:Gem::Version
|
100
|
-
version: '4.2'
|
80
|
+
version: 8.2.2
|
101
81
|
- !ruby/object:Gem::Dependency
|
102
82
|
name: rake
|
103
83
|
requirement: !ruby/object:Gem::Requirement
|
@@ -166,6 +146,20 @@ dependencies:
|
|
166
146
|
- - "<"
|
167
147
|
- !ruby/object:Gem::Version
|
168
148
|
version: '5.0'
|
149
|
+
- !ruby/object:Gem::Dependency
|
150
|
+
name: factory_girl
|
151
|
+
requirement: !ruby/object:Gem::Requirement
|
152
|
+
requirements:
|
153
|
+
- - "~>"
|
154
|
+
- !ruby/object:Gem::Version
|
155
|
+
version: '4.2'
|
156
|
+
type: :development
|
157
|
+
prerelease: false
|
158
|
+
version_requirements: !ruby/object:Gem::Requirement
|
159
|
+
requirements:
|
160
|
+
- - "~>"
|
161
|
+
- !ruby/object:Gem::Version
|
162
|
+
version: '4.2'
|
169
163
|
description: |2
|
170
164
|
A collection of RSpec patches and custom matchers. The features can be
|
171
165
|
included individually or by category. For more information, check out the
|
@@ -198,22 +192,44 @@ files:
|
|
198
192
|
- lib/rspec/sleeping_king_studios/matchers/active_model/have_errors.rb
|
199
193
|
- lib/rspec/sleeping_king_studios/matchers/active_model/have_errors/error_expectation.rb
|
200
194
|
- lib/rspec/sleeping_king_studios/matchers/active_model/have_errors/message_expectation.rb
|
195
|
+
- lib/rspec/sleeping_king_studios/matchers/active_model/have_errors_matcher.rb
|
201
196
|
- lib/rspec/sleeping_king_studios/matchers/all.rb
|
202
197
|
- lib/rspec/sleeping_king_studios/matchers/base_matcher.rb
|
203
198
|
- lib/rspec/sleeping_king_studios/matchers/built_in.rb
|
204
199
|
- lib/rspec/sleeping_king_studios/matchers/built_in/all.rb
|
205
200
|
- lib/rspec/sleeping_king_studios/matchers/built_in/be_kind_of.rb
|
201
|
+
- lib/rspec/sleeping_king_studios/matchers/built_in/be_kind_of_matcher.rb
|
206
202
|
- lib/rspec/sleeping_king_studios/matchers/built_in/include.rb
|
203
|
+
- lib/rspec/sleeping_king_studios/matchers/built_in/include_matcher.rb
|
207
204
|
- lib/rspec/sleeping_king_studios/matchers/built_in/respond_to.rb
|
205
|
+
- lib/rspec/sleeping_king_studios/matchers/built_in/respond_to_matcher.rb
|
208
206
|
- lib/rspec/sleeping_king_studios/matchers/core.rb
|
207
|
+
- lib/rspec/sleeping_king_studios/matchers/core/alias_method.rb
|
208
|
+
- lib/rspec/sleeping_king_studios/matchers/core/alias_method_matcher.rb
|
209
209
|
- lib/rspec/sleeping_king_studios/matchers/core/all.rb
|
210
210
|
- lib/rspec/sleeping_king_studios/matchers/core/be_boolean.rb
|
211
|
+
- lib/rspec/sleeping_king_studios/matchers/core/be_boolean_matcher.rb
|
211
212
|
- lib/rspec/sleeping_king_studios/matchers/core/construct.rb
|
213
|
+
- lib/rspec/sleeping_king_studios/matchers/core/construct_matcher.rb
|
214
|
+
- lib/rspec/sleeping_king_studios/matchers/core/delegate_method.rb
|
215
|
+
- lib/rspec/sleeping_king_studios/matchers/core/delegate_method_matcher.rb
|
216
|
+
- lib/rspec/sleeping_king_studios/matchers/core/have_constant.rb
|
217
|
+
- lib/rspec/sleeping_king_studios/matchers/core/have_constant_matcher.rb
|
218
|
+
- lib/rspec/sleeping_king_studios/matchers/core/have_predicate.rb
|
219
|
+
- lib/rspec/sleeping_king_studios/matchers/core/have_predicate_matcher.rb
|
212
220
|
- lib/rspec/sleeping_king_studios/matchers/core/have_property.rb
|
221
|
+
- lib/rspec/sleeping_king_studios/matchers/core/have_property_matcher.rb
|
213
222
|
- lib/rspec/sleeping_king_studios/matchers/core/have_reader.rb
|
223
|
+
- lib/rspec/sleeping_king_studios/matchers/core/have_reader_matcher.rb
|
214
224
|
- lib/rspec/sleeping_king_studios/matchers/core/have_writer.rb
|
225
|
+
- lib/rspec/sleeping_king_studios/matchers/core/have_writer_matcher.rb
|
226
|
+
- lib/rspec/sleeping_king_studios/matchers/description.rb
|
227
|
+
- lib/rspec/sleeping_king_studios/matchers/macros.rb
|
215
228
|
- lib/rspec/sleeping_king_studios/matchers/shared/match_parameters.rb
|
216
229
|
- lib/rspec/sleeping_king_studios/matchers/shared/match_property.rb
|
230
|
+
- lib/rspec/sleeping_king_studios/support.rb
|
231
|
+
- lib/rspec/sleeping_king_studios/support/method_signature.rb
|
232
|
+
- lib/rspec/sleeping_king_studios/support/method_signature_expectation.rb
|
217
233
|
- lib/rspec/sleeping_king_studios/version.rb
|
218
234
|
homepage: http://sleepingkingstudios.com
|
219
235
|
licenses:
|
@@ -230,9 +246,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
230
246
|
version: '0'
|
231
247
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
232
248
|
requirements:
|
233
|
-
- - "
|
249
|
+
- - ">"
|
234
250
|
- !ruby/object:Gem::Version
|
235
|
-
version:
|
251
|
+
version: 1.3.1
|
236
252
|
requirements: []
|
237
253
|
rubyforge_project:
|
238
254
|
rubygems_version: 2.5.1
|