rspec-sleeping_king_studios 2.1.1 → 2.2.0.rc.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|