composable_operations 0.9.1 → 0.9.2
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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 237f6bf42a1d019c2f0de93dd8baa18c187fa276
|
4
|
+
data.tar.gz: 1c8648513871178ab2d34127fa29b1799adbee28
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1f241f35e8737eb4b1aa2a585921ec97d44ccaf62210d7eb9b166e74933cbfb8a9d147c6aee31d36bcf13fca4acf8475ed3bdcb3bde30aa9115bab8c91e645fd
|
7
|
+
data.tar.gz: 483847be976d67e1afdcd24dd5a5cf28237a1598e4b1419de1ccb48dd623a318b1ec137b68688172d77c4ff6c17056c92dce1413a678bbf631258adb08270fdd
|
@@ -14,9 +14,19 @@ module ComposableOperations
|
|
14
14
|
self
|
15
15
|
end
|
16
16
|
|
17
|
+
def failure_message
|
18
|
+
raise NotImplementedError, "Expected #{self.class} to implement ##{__callee__}"
|
19
|
+
end
|
20
|
+
|
21
|
+
def failure_message_when_negated
|
22
|
+
raise NotImplementedError, "Expected #{self.class} to implement ##{__callee__}"
|
23
|
+
end
|
24
|
+
alias negative_failure_message failure_message_when_negated
|
25
|
+
|
17
26
|
protected
|
18
27
|
|
19
28
|
attr_reader :operation
|
29
|
+
attr_reader :message
|
20
30
|
attr_reader :result
|
21
31
|
attr_reader :input
|
22
32
|
|
@@ -34,11 +44,20 @@ module ComposableOperations
|
|
34
44
|
operation.succeeded?
|
35
45
|
end
|
36
46
|
|
47
|
+
def halted?
|
48
|
+
operation.halted?
|
49
|
+
end
|
50
|
+
|
37
51
|
def result_as_expected?
|
38
52
|
return true unless result
|
39
53
|
operation.result == result
|
40
54
|
end
|
41
55
|
|
56
|
+
def message_as_expected?
|
57
|
+
return true unless message
|
58
|
+
operation.message == message
|
59
|
+
end
|
60
|
+
|
42
61
|
def input_as_text
|
43
62
|
humanize(*input)
|
44
63
|
end
|
@@ -78,7 +97,6 @@ module ComposableOperations
|
|
78
97
|
def failure_message_when_negated
|
79
98
|
"the operation succeeded unexpectedly"
|
80
99
|
end
|
81
|
-
alias negative_failure_message failure_message_when_negated
|
82
100
|
|
83
101
|
private
|
84
102
|
|
@@ -124,20 +142,58 @@ module ComposableOperations
|
|
124
142
|
def failure_message_when_negated
|
125
143
|
"the operation failed unexpectedly"
|
126
144
|
end
|
127
|
-
alias negative_failure_message failure_message_when_negated
|
128
145
|
|
129
146
|
protected
|
130
147
|
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
148
|
+
def failure_reasons
|
149
|
+
reasons = []
|
150
|
+
reasons << "it did not fail at all" unless failed?
|
151
|
+
reasons << "its message was not as expected" unless message_as_expected?
|
152
|
+
unless result_as_expected?
|
153
|
+
reasons << [
|
154
|
+
"it did not return the expected result",
|
155
|
+
"Expected: #{result.inspect}",
|
156
|
+
"Got: #{operation.result.inspect}"
|
157
|
+
].join("\n\t ")
|
158
|
+
end
|
159
|
+
reasons.map { |r| "\t- #{r}" }.join("\n")
|
136
160
|
end
|
137
161
|
|
162
|
+
end
|
163
|
+
|
164
|
+
class HaltWhilePerforming < Base
|
165
|
+
|
166
|
+
def matches?(operation)
|
167
|
+
self.operation = operation
|
168
|
+
halted? && result_as_expected? && message_as_expected?
|
169
|
+
end
|
170
|
+
|
171
|
+
def because(message)
|
172
|
+
@message = message
|
173
|
+
self
|
174
|
+
end
|
175
|
+
|
176
|
+
def description
|
177
|
+
description = "halt while performing"
|
178
|
+
description += " because #{message}" if message
|
179
|
+
description += " when initialized with custom input (#{input_as_text})" if input
|
180
|
+
description += " and return the expected result (#{result_as_text})" if result
|
181
|
+
description
|
182
|
+
end
|
183
|
+
|
184
|
+
def failure_message
|
185
|
+
"the operation did not halt while performing for the following reason(s):\n#{failure_reasons}"
|
186
|
+
end
|
187
|
+
|
188
|
+
def failure_message_when_negated
|
189
|
+
"the operation was halted unexpectedly"
|
190
|
+
end
|
191
|
+
|
192
|
+
protected
|
193
|
+
|
138
194
|
def failure_reasons
|
139
195
|
reasons = []
|
140
|
-
reasons << "it did not
|
196
|
+
reasons << "it did not halt at all" unless halted?
|
141
197
|
reasons << "its message was not as expected" unless message_as_expected?
|
142
198
|
unless result_as_expected?
|
143
199
|
reasons << [
|
@@ -159,6 +215,10 @@ module ComposableOperations
|
|
159
215
|
FailToPerform.new
|
160
216
|
end
|
161
217
|
|
218
|
+
def halt_while_performing
|
219
|
+
HaltWhilePerforming.new
|
220
|
+
end
|
221
|
+
|
162
222
|
end
|
163
223
|
end
|
164
224
|
end
|