rspec-sleeping_king_studios 2.3.0 → 2.4.0.rc.0
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 +5 -5
- data/CHANGELOG.md +40 -2
- data/DEVELOPMENT.md +48 -28
- data/README.md +55 -7
- data/lib/rspec/sleeping_king_studios.rb +7 -0
- data/lib/rspec/sleeping_king_studios/concerns/example_constants.rb +14 -3
- data/lib/rspec/sleeping_king_studios/concerns/focus_examples.rb +1 -1
- data/lib/rspec/sleeping_king_studios/configuration.rb +20 -17
- data/lib/rspec/sleeping_king_studios/examples/property_examples/class_properties.rb +32 -22
- data/lib/rspec/sleeping_king_studios/examples/property_examples/constants.rb +8 -0
- data/lib/rspec/sleeping_king_studios/examples/property_examples/predicates.rb +8 -4
- data/lib/rspec/sleeping_king_studios/examples/property_examples/private_properties.rb +29 -24
- data/lib/rspec/sleeping_king_studios/examples/property_examples/properties.rb +52 -27
- data/lib/rspec/sleeping_king_studios/matchers/core/have_changed.rb +16 -0
- data/lib/rspec/sleeping_king_studios/matchers/core/have_changed_matcher.rb +222 -0
- data/lib/rspec/sleeping_king_studios/matchers/core/have_constant.rb +2 -0
- data/lib/rspec/sleeping_king_studios/matchers/core/have_constant_matcher.rb +29 -27
- data/lib/rspec/sleeping_king_studios/matchers/core/have_predicate.rb +1 -0
- data/lib/rspec/sleeping_king_studios/matchers/core/have_predicate_matcher.rb +1 -1
- data/lib/rspec/sleeping_king_studios/matchers/core/have_property.rb +1 -0
- data/lib/rspec/sleeping_king_studios/matchers/core/have_reader.rb +1 -0
- data/lib/rspec/sleeping_king_studios/matchers/core/have_writer.rb +1 -0
- data/lib/rspec/sleeping_king_studios/support/value_spy.rb +67 -0
- data/lib/rspec/sleeping_king_studios/version.rb +3 -3
- metadata +24 -53
@@ -8,9 +8,11 @@ module RSpec::SleepingKingStudios::Matchers::Macros
|
|
8
8
|
def have_constant expected
|
9
9
|
RSpec::SleepingKingStudios::Matchers::Core::HaveConstantMatcher.new expected
|
10
10
|
end # method have_reader
|
11
|
+
alias_method :define_constant, :have_constant
|
11
12
|
|
12
13
|
# @see RSpec::SleepingKingStudios::Matchers::Core::HaveConstantMatcher#immutable
|
13
14
|
def have_immutable_constant expected
|
14
15
|
have_constant(expected).immutable
|
15
16
|
end # method have_reader
|
17
|
+
alias_method :define_immutable_constant, :have_immutable_constant
|
16
18
|
end # module
|
@@ -27,6 +27,15 @@ module RSpec::SleepingKingStudios::Matchers::Core
|
|
27
27
|
message
|
28
28
|
end # method description
|
29
29
|
|
30
|
+
# (see BaseMatcher#does_not_match?)
|
31
|
+
def does_not_match? actual
|
32
|
+
super
|
33
|
+
|
34
|
+
@errors = {}
|
35
|
+
|
36
|
+
!has_constant?
|
37
|
+
end # method does_not_match?
|
38
|
+
|
30
39
|
# (see BaseMatcher#failure_message)
|
31
40
|
def failure_message
|
32
41
|
message = super
|
@@ -77,33 +86,6 @@ module RSpec::SleepingKingStudios::Matchers::Core
|
|
77
86
|
message
|
78
87
|
end # method failure_message
|
79
88
|
|
80
|
-
# Checks if the object has a constant :expected. Additionally, if a
|
81
|
-
# value expectation is set, compares the value of #expected to the
|
82
|
-
# specified value and checks the mutability of the constant.
|
83
|
-
#
|
84
|
-
# @param [Object] actual The object to check.
|
85
|
-
#
|
86
|
-
# @return [Boolean] true If the object has a constant :expected and matches
|
87
|
-
# the value and mutability expectations (if any); otherwise false.
|
88
|
-
def matches? actual
|
89
|
-
super
|
90
|
-
|
91
|
-
@errors = {}
|
92
|
-
|
93
|
-
return false unless has_constant?
|
94
|
-
|
95
|
-
matches_constant? :all?
|
96
|
-
end # method matches?
|
97
|
-
|
98
|
-
# (see BaseMatcher#does_not_match?)
|
99
|
-
def does_not_match? actual
|
100
|
-
super
|
101
|
-
|
102
|
-
@errors = {}
|
103
|
-
|
104
|
-
!has_constant?
|
105
|
-
end # method does_not_match?
|
106
|
-
|
107
89
|
# Sets a mutability expectation. The matcher will determine whether the
|
108
90
|
# value of the constant is mutable. Values of `nil`, `false`, `true` are
|
109
91
|
# always immutable, as are `Numeric` and `Symbol` primitives. `Array`
|
@@ -116,12 +98,32 @@ module RSpec::SleepingKingStudios::Matchers::Core
|
|
116
98
|
|
117
99
|
self
|
118
100
|
end # method immutable
|
101
|
+
alias_method :frozen, :immutable
|
119
102
|
|
120
103
|
# @return [Boolean] True if a mutability expectation is set, otherwise
|
121
104
|
# false.
|
122
105
|
def immutable?
|
123
106
|
!!@immutable
|
124
107
|
end # method immutable
|
108
|
+
alias_method :frozen?, :immutable?
|
109
|
+
|
110
|
+
# Checks if the object has a constant :expected. Additionally, if a
|
111
|
+
# value expectation is set, compares the value of #expected to the
|
112
|
+
# specified value and checks the mutability of the constant.
|
113
|
+
#
|
114
|
+
# @param [Object] actual The object to check.
|
115
|
+
#
|
116
|
+
# @return [Boolean] true If the object has a constant :expected and matches
|
117
|
+
# the value and mutability expectations (if any); otherwise false.
|
118
|
+
def matches? actual
|
119
|
+
super
|
120
|
+
|
121
|
+
@errors = {}
|
122
|
+
|
123
|
+
return false unless has_constant?
|
124
|
+
|
125
|
+
matches_constant? :all?
|
126
|
+
end # method matches?
|
125
127
|
|
126
128
|
# Sets a value expectation. The matcher will compare the value of the
|
127
129
|
# constant with the specified value.
|
@@ -17,7 +17,7 @@ module RSpec::SleepingKingStudios::Matchers::Core
|
|
17
17
|
#
|
18
18
|
# @return [String] The matcher description.
|
19
19
|
def description
|
20
|
-
"have predicate :#{@expected}"
|
20
|
+
"have predicate :#{@expected}?"
|
21
21
|
end # method description
|
22
22
|
|
23
23
|
# @param [String, Symbol] expected The predicate to check for on the actual
|
@@ -0,0 +1,67 @@
|
|
1
|
+
require 'rspec/sleeping_king_studios/support'
|
2
|
+
|
3
|
+
module RSpec::SleepingKingStudios::Support
|
4
|
+
# Encapsulates the value of a method call or block, and captures a snapshot of
|
5
|
+
# the value at the time the spy is initialized.
|
6
|
+
#
|
7
|
+
# @example Observing a Method
|
8
|
+
# user = Person.new(name: 'Alan Bradley')
|
9
|
+
# value = ValueSpy.new(user, :name)
|
10
|
+
# value.initial_value #=> 'Alan Bradley'
|
11
|
+
# value.current_value #=> 'Alan Bradley'
|
12
|
+
#
|
13
|
+
# user.name = 'Ed Dillinger'
|
14
|
+
# value.initial_value #=> 'Alan Bradley'
|
15
|
+
# value.current_value #=> 'Ed Dillinger'
|
16
|
+
#
|
17
|
+
# @example Observing a Block
|
18
|
+
# value = ValueSpy.new { Person.where(virtual: false).count }
|
19
|
+
# value.initial_value #=> 4
|
20
|
+
# value.current_value #=> 4
|
21
|
+
#
|
22
|
+
# Person.where(name: 'Kevin Flynn').enter_grid!
|
23
|
+
# value.initial_value #=> 4
|
24
|
+
# value.current_value #=> 3
|
25
|
+
class ValueSpy
|
26
|
+
# @overload initialize(object, method_name)
|
27
|
+
# @param [Object] object The object to watch.
|
28
|
+
#
|
29
|
+
# @param [Symbol, String] method_name The name of the method to watch.
|
30
|
+
#
|
31
|
+
# @overload initialize(&block)
|
32
|
+
# @yield The value to watch. The block will be called each time the value
|
33
|
+
# is requested, and the return value of the block will be given as the
|
34
|
+
# current value.
|
35
|
+
def initialize(object = nil, method_name = nil, &block)
|
36
|
+
@observed_block = if block_given?
|
37
|
+
block
|
38
|
+
else
|
39
|
+
@method_name = method_name
|
40
|
+
|
41
|
+
-> { object.send(method_name) }
|
42
|
+
end
|
43
|
+
|
44
|
+
@initial_value = current_value
|
45
|
+
end
|
46
|
+
|
47
|
+
# @return [Object] the watched value at the time the spy was initialized.
|
48
|
+
attr_reader :initial_value
|
49
|
+
|
50
|
+
def changed?
|
51
|
+
!RSpec::Support::FuzzyMatcher.values_match?(initial_value, current_value)
|
52
|
+
end
|
53
|
+
|
54
|
+
# @return [Object] the watched value when #current_value is called.
|
55
|
+
def current_value
|
56
|
+
@observed_block.call
|
57
|
+
end
|
58
|
+
|
59
|
+
# @return [String] a human-readable representation of the watched method or
|
60
|
+
# block.
|
61
|
+
def description
|
62
|
+
return 'result' unless @method_name
|
63
|
+
|
64
|
+
"##{@method_name}"
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
@@ -11,13 +11,13 @@ module RSpec
|
|
11
11
|
# Major version.
|
12
12
|
MAJOR = 2
|
13
13
|
# Minor version.
|
14
|
-
MINOR =
|
14
|
+
MINOR = 4
|
15
15
|
# Patch version.
|
16
16
|
PATCH = 0
|
17
17
|
# Prerelease version.
|
18
|
-
PRERELEASE =
|
18
|
+
PRERELEASE = :rc
|
19
19
|
# Build metadata.
|
20
|
-
BUILD =
|
20
|
+
BUILD = 0
|
21
21
|
|
22
22
|
# Generates the gem version string from the Version constants.
|
23
23
|
#
|
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.4.0.rc.0
|
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:
|
11
|
+
date: 2018-07-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '3.
|
19
|
+
version: '3.4'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '3.
|
26
|
+
version: '3.4'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: sleeping_king_studios-tools
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -44,61 +44,49 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
48
|
-
- - ">="
|
49
|
-
- !ruby/object:Gem::Version
|
50
|
-
version: 1.0.3
|
47
|
+
version: '2.2'
|
51
48
|
type: :development
|
52
49
|
prerelease: false
|
53
50
|
version_requirements: !ruby/object:Gem::Requirement
|
54
51
|
requirements:
|
55
52
|
- - "~>"
|
56
53
|
- !ruby/object:Gem::Version
|
57
|
-
version: '
|
58
|
-
- - ">="
|
59
|
-
- !ruby/object:Gem::Version
|
60
|
-
version: 1.0.3
|
54
|
+
version: '2.2'
|
61
55
|
- !ruby/object:Gem::Dependency
|
62
56
|
name: byebug
|
63
57
|
requirement: !ruby/object:Gem::Requirement
|
64
58
|
requirements:
|
65
59
|
- - "~>"
|
66
60
|
- !ruby/object:Gem::Version
|
67
|
-
version: '
|
68
|
-
- - ">="
|
69
|
-
- !ruby/object:Gem::Version
|
70
|
-
version: 8.2.2
|
61
|
+
version: '10.0'
|
71
62
|
type: :development
|
72
63
|
prerelease: false
|
73
64
|
version_requirements: !ruby/object:Gem::Requirement
|
74
65
|
requirements:
|
75
66
|
- - "~>"
|
76
67
|
- !ruby/object:Gem::Version
|
77
|
-
version: '
|
78
|
-
- - ">="
|
79
|
-
- !ruby/object:Gem::Version
|
80
|
-
version: 8.2.2
|
68
|
+
version: '10.0'
|
81
69
|
- !ruby/object:Gem::Dependency
|
82
70
|
name: rake
|
83
71
|
requirement: !ruby/object:Gem::Requirement
|
84
72
|
requirements:
|
85
73
|
- - "~>"
|
86
74
|
- !ruby/object:Gem::Version
|
87
|
-
version: '12.
|
75
|
+
version: '12.3'
|
88
76
|
type: :development
|
89
77
|
prerelease: false
|
90
78
|
version_requirements: !ruby/object:Gem::Requirement
|
91
79
|
requirements:
|
92
80
|
- - "~>"
|
93
81
|
- !ruby/object:Gem::Version
|
94
|
-
version: '12.
|
82
|
+
version: '12.3'
|
95
83
|
- !ruby/object:Gem::Dependency
|
96
84
|
name: thor
|
97
85
|
requirement: !ruby/object:Gem::Requirement
|
98
86
|
requirements:
|
99
87
|
- - "~>"
|
100
88
|
- !ruby/object:Gem::Version
|
101
|
-
version: '0.
|
89
|
+
version: '0.20'
|
102
90
|
- - ">="
|
103
91
|
- !ruby/object:Gem::Version
|
104
92
|
version: 0.19.4
|
@@ -108,7 +96,7 @@ dependencies:
|
|
108
96
|
requirements:
|
109
97
|
- - "~>"
|
110
98
|
- !ruby/object:Gem::Version
|
111
|
-
version: '0.
|
99
|
+
version: '0.20'
|
112
100
|
- - ">="
|
113
101
|
- !ruby/object:Gem::Version
|
114
102
|
version: 0.19.4
|
@@ -132,34 +120,28 @@ dependencies:
|
|
132
120
|
requirements:
|
133
121
|
- - "~>"
|
134
122
|
- !ruby/object:Gem::Version
|
135
|
-
version: '0.
|
123
|
+
version: '0.14'
|
136
124
|
type: :development
|
137
125
|
prerelease: false
|
138
126
|
version_requirements: !ruby/object:Gem::Requirement
|
139
127
|
requirements:
|
140
128
|
- - "~>"
|
141
129
|
- !ruby/object:Gem::Version
|
142
|
-
version: '0.
|
130
|
+
version: '0.14'
|
143
131
|
- !ruby/object:Gem::Dependency
|
144
132
|
name: cucumber
|
145
133
|
requirement: !ruby/object:Gem::Requirement
|
146
134
|
requirements:
|
147
135
|
- - "~>"
|
148
136
|
- !ruby/object:Gem::Version
|
149
|
-
version: '1
|
150
|
-
- - ">="
|
151
|
-
- !ruby/object:Gem::Version
|
152
|
-
version: 1.3.19
|
137
|
+
version: '3.1'
|
153
138
|
type: :development
|
154
139
|
prerelease: false
|
155
140
|
version_requirements: !ruby/object:Gem::Requirement
|
156
141
|
requirements:
|
157
142
|
- - "~>"
|
158
143
|
- !ruby/object:Gem::Version
|
159
|
-
version: '1
|
160
|
-
- - ">="
|
161
|
-
- !ruby/object:Gem::Version
|
162
|
-
version: 1.3.19
|
144
|
+
version: '3.1'
|
163
145
|
- !ruby/object:Gem::Dependency
|
164
146
|
name: activemodel
|
165
147
|
requirement: !ruby/object:Gem::Requirement
|
@@ -169,7 +151,7 @@ dependencies:
|
|
169
151
|
version: '3.0'
|
170
152
|
- - "<"
|
171
153
|
- !ruby/object:Gem::Version
|
172
|
-
version: '
|
154
|
+
version: '6.0'
|
173
155
|
type: :development
|
174
156
|
prerelease: false
|
175
157
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -179,21 +161,7 @@ dependencies:
|
|
179
161
|
version: '3.0'
|
180
162
|
- - "<"
|
181
163
|
- !ruby/object:Gem::Version
|
182
|
-
version: '
|
183
|
-
- !ruby/object:Gem::Dependency
|
184
|
-
name: factory_girl
|
185
|
-
requirement: !ruby/object:Gem::Requirement
|
186
|
-
requirements:
|
187
|
-
- - "~>"
|
188
|
-
- !ruby/object:Gem::Version
|
189
|
-
version: '4.2'
|
190
|
-
type: :development
|
191
|
-
prerelease: false
|
192
|
-
version_requirements: !ruby/object:Gem::Requirement
|
193
|
-
requirements:
|
194
|
-
- - "~>"
|
195
|
-
- !ruby/object:Gem::Version
|
196
|
-
version: '4.2'
|
164
|
+
version: '6.0'
|
197
165
|
description: |2
|
198
166
|
A collection of RSpec patches and custom matchers. The features can be
|
199
167
|
included individually or by category. For more information, check out the
|
@@ -255,6 +223,8 @@ files:
|
|
255
223
|
- lib/rspec/sleeping_king_studios/matchers/core/construct_matcher.rb
|
256
224
|
- lib/rspec/sleeping_king_studios/matchers/core/delegate_method.rb
|
257
225
|
- lib/rspec/sleeping_king_studios/matchers/core/delegate_method_matcher.rb
|
226
|
+
- lib/rspec/sleeping_king_studios/matchers/core/have_changed.rb
|
227
|
+
- lib/rspec/sleeping_king_studios/matchers/core/have_changed_matcher.rb
|
258
228
|
- lib/rspec/sleeping_king_studios/matchers/core/have_constant.rb
|
259
229
|
- lib/rspec/sleeping_king_studios/matchers/core/have_constant_matcher.rb
|
260
230
|
- lib/rspec/sleeping_king_studios/matchers/core/have_predicate.rb
|
@@ -272,6 +242,7 @@ files:
|
|
272
242
|
- lib/rspec/sleeping_king_studios/support.rb
|
273
243
|
- lib/rspec/sleeping_king_studios/support/method_signature.rb
|
274
244
|
- lib/rspec/sleeping_king_studios/support/method_signature_expectation.rb
|
245
|
+
- lib/rspec/sleeping_king_studios/support/value_spy.rb
|
275
246
|
- lib/rspec/sleeping_king_studios/version.rb
|
276
247
|
homepage: http://sleepingkingstudios.com
|
277
248
|
licenses:
|
@@ -288,12 +259,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
288
259
|
version: '0'
|
289
260
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
290
261
|
requirements:
|
291
|
-
- - "
|
262
|
+
- - ">"
|
292
263
|
- !ruby/object:Gem::Version
|
293
|
-
version:
|
264
|
+
version: 1.3.1
|
294
265
|
requirements: []
|
295
266
|
rubyforge_project:
|
296
|
-
rubygems_version: 2.6
|
267
|
+
rubygems_version: 2.7.6
|
297
268
|
signing_key:
|
298
269
|
specification_version: 4
|
299
270
|
summary: A collection of RSpec patches and custom matchers.
|