much-result 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 50f359b93392a57fb5a5706b9b127b6683b4d9bbff35414d6dd2f88e13c3fe92
4
- data.tar.gz: 85bd060061eb19a84d5fbb44e64ff4512f1d0cafece8049880ffa76933314fd8
3
+ metadata.gz: 2114bc845c36c3d435c0c3fa6fb6015e75aed0d4a8247aa1c60e15010562dbae
4
+ data.tar.gz: 7624db2f9dbc4dc974132f45d10a74c0bca005216a3e0de7ae33f89e8c6a3974
5
5
  SHA512:
6
- metadata.gz: 704dc5d29a3d8000ec35fe54b92055e2e2e491b0c30169bc1218476fac0a8c7e5ba5e9d308f9afa06b3be72b636333250726c379340db241d59fe5e795c25987
7
- data.tar.gz: afd00a2cd6dd19af02af0c05d280434057440b6a5c4f5de713936fcc3d185abb11d22407d3ee68afcd4a97a43ab381a97e0eafc77730ec005a6479a50dab45c4
6
+ metadata.gz: 14a5f2dab0534c563be0620fa2f5c8b1bf4743490e533e57ccf048ed965f4e0f8b9b7781037c9c5168278ede24f2ed89311275f65c607c3db1877af416b378bf
7
+ data.tar.gz: f4e01c6d702d88800ecab7e26f715535795675e6582c948f601bd02311bea474f5d4e112e2a4b243aade0c33c13554ac1461fada2b4cfebfc985f5bb22afd275
data/README.md CHANGED
@@ -59,6 +59,15 @@ result.set(
59
59
  result.message # => "it worked!"
60
60
  result.other_value1 # => "something else 1"
61
61
  result.other_value2 # => "something else 2"
62
+
63
+ result.attribute_names # => [:message, :other_value1, :other_value2]
64
+
65
+ result.attributes
66
+ # => {
67
+ # message: "it worked!",
68
+ # other_value1: "something else 1",
69
+ # other_value2: "something else 2"
70
+ # }
62
71
  ```
63
72
 
64
73
  ### Capture sub-Results
@@ -77,6 +77,14 @@ class MuchResult
77
77
  self
78
78
  end
79
79
 
80
+ def attributes
81
+ @data.to_h.reject { |key, _| key.to_s.start_with?("much_result_") }
82
+ end
83
+
84
+ def attribute_names
85
+ attributes.keys
86
+ end
87
+
80
88
  def success?
81
89
  if @success_predicate.nil?
82
90
  @success_predicate =
@@ -197,7 +205,8 @@ class MuchResult
197
205
  "#<#{self.class}:#{"0x0%x" % (object_id << 1)} "\
198
206
  "#{success? ? "SUCCESS" : "FAILURE"} "\
199
207
  "#{"@description=#{@description.inspect} " if @description}"\
200
- "@sub_results=#{@sub_results.inspect}>"
208
+ "@sub_results=#{@sub_results.inspect} "\
209
+ "attribute_names: #{attribute_names}>"
201
210
  end
202
211
 
203
212
  private
@@ -1,3 +1,3 @@
1
1
  class MuchResult
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
@@ -157,6 +157,7 @@ class MuchResult
157
157
  }
158
158
 
159
159
  should have_imeths :description, :backtrace, :set
160
+ should have_imeths :attributes, :attribute_names
160
161
  should have_imeths :success?, :failure?
161
162
  should have_imeths :capture_for, :capture_for!
162
163
  should have_imeths :capture_for_all, :capture_for_all!
@@ -194,15 +195,41 @@ class MuchResult
194
195
  assert_that(exception.backtrace).equals(backtrace1)
195
196
  end
196
197
 
197
- should "allow setting arbitrary values" do
198
+ should "allow setting arbitrary attributes" do
199
+ assert_that(subject.attributes).is_empty
200
+ assert_that(subject.attribute_names).is_empty
201
+
202
+ new_value = Factory.string
203
+ subject.new_attribute = new_value
204
+
205
+ assert_that(subject.attributes).equals(new_attribute: new_value)
206
+ assert_that(subject.attribute_names).equals([:new_attribute])
207
+
208
+ assert_that(subject.other_value).is_nil
209
+ assert_that(subject.attributes).equals(new_attribute: new_value)
210
+ assert_that(subject.attribute_names).equals([:new_attribute])
211
+
212
+ return_value = subject.set(other_value: nil)
213
+
214
+ assert_that(return_value).is_the_same_as(subject)
198
215
  assert_that(subject.other_value).is_nil
216
+ assert_that(subject.attributes)
217
+ .equals(new_attribute: new_value, other_value: nil)
218
+ assert_that(subject.attribute_names)
219
+ .equals([:new_attribute, :other_value])
199
220
 
200
221
  subject.set(other_value: value1)
222
+
201
223
  assert_that(subject.other_value).equals(value1)
224
+ assert_that(subject.attributes)
225
+ .equals(new_attribute: new_value, other_value: value1)
226
+ assert_that(subject.attribute_names)
227
+ .equals([:new_attribute, :other_value])
202
228
  end
203
229
 
204
230
  should "capture MuchResults as sub-results" do
205
231
  subject.capture_for(unit_class.success(values: { value1: Factory.value }))
232
+
206
233
  assert_that(subject.success?).is_true
207
234
  assert_that(subject.sub_results.size).equals(1)
208
235
  assert_that(subject.success_sub_results.size).equals(1)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: much-result
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kelly Redding
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2020-09-10 00:00:00.000000000 Z
12
+ date: 2020-12-03 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: assert