usecasing 0.1.9 → 0.1.10

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,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ODY5ZTA4M2JkYTNkNzhiNmNlZWYzNWUxNjkzOWNmYzA4MzBhYWU1Nw==
4
+ OGM2NzViMTVhZmQxYzc1ODNmNmI4OTg0Mzk0NjgyMjI3OWJmN2I1Mw==
5
5
  data.tar.gz: !binary |-
6
- MzRmODIwMzk5ZWFjMDE1MWJjZjM5NDRhNjVhY2Q5NGVhOTgxMzcwYQ==
6
+ NDAyN2M0Y2NkMTMxNDA3NzVhYTRmOGIyOGQ2YjU3YWI3MTk3ZjQ2Yg==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- OTM1ODI3ODVjYzg4NDBjMTU1ZWFhNzIxYjg1NjAxZDJkYzRmOGIyNDJiMTg2
10
- Y2Y5YjBhYTdmN2IzZTBmZmYwZGVkMjA5NWM0ODI4YmQzNDZhNjA4ZjllZDE0
11
- MTgxZjdmYWE0NjFjZDY0MTJkN2VkOTM0NTFiMDVhZGJhZWU0MjE=
9
+ MmRiNTI4YjY3MWE4MGRhY2JhZTVhNGE2YmE5NDk5NWM0NmU2ZDIzMWRjYWUw
10
+ MGU5NzVjMTUxZmVlYmEyNTA4OWU2ODRiMTdhOGE0MDI1OWRmMDc1NTM4OTBi
11
+ MmRiOWVlYTQ4ZmMwMjhhZTRhMWM3MzZjODExNTMwNTU2MjM5YTU=
12
12
  data.tar.gz: !binary |-
13
- ODFhNWU5YTZkYzUxZTdiMjNhODVmYTIyOWQ3YTliM2E0MzUyY2VmMTRmMGI0
14
- MjUwNGY2YmM3MGYwNjljMGYwMDAxZDdjNjNkNjdmNTUxNDVhNzBkMmI2Y2U3
15
- ZGYyMzI1MDQ5MGEyODhlMDc0NzVkNDNkNTE1MjMzYzc3MDE0MDk=
13
+ NWI4ZTVlYjcxMDJkMWI3ZDhmZjE3Yzk3MjljYmIyMjVlODk4OTg1NDcyNjRm
14
+ ZTkwNjE1YTE5ODFmZTMwYzE5YTA2OTMzNTc5OTc3NjRiNmMxOGQwMWI1MmIx
15
+ N2UxNTc4NzVkNjFkY2U1MDRmMDVlN2FiNDljYTJmYzRlN2VmZTY=
data/README.md CHANGED
@@ -141,6 +141,44 @@ Oww, yeah, let's notify the customer
141
141
  end
142
142
  ````
143
143
 
144
+ #### Stopping the UseCase dependencies Flow
145
+
146
+ There are 2 ways to stop the dependency flow.
147
+ - stop! ( stop the flow without marking the usecase with error )
148
+ - failure ( stop the flow but mark the usecase with errors )
149
+
150
+
151
+ Imagine a Read Through Cache Strategy.
152
+ How can we stop the usecase flow without marking as failure ?
153
+
154
+ ````
155
+ class ReadThrough < UseCase::Base
156
+ depends MemCacheReader, DataBaseReader, MemCacheWriter
157
+ end
158
+
159
+ class MemCacheReader < UseCase::Base
160
+ def perform
161
+ context.data = CacheAdapter.read('key')
162
+ stop! if context.data
163
+ end
164
+ end
165
+
166
+ class DataBaseReader < UseCase::Base
167
+ def perform
168
+ context.data = DataBase.find('key')
169
+ end
170
+ end
171
+
172
+ class MemCacheWriter < UseCase::Base
173
+ def perform
174
+ CacheAdapter.write('key', context.data);
175
+ end
176
+ end
177
+
178
+ ````
179
+
180
+
181
+
144
182
 
145
183
  Let me know what do you think about it.
146
184
 
@@ -5,7 +5,7 @@ module UseCase
5
5
  class Errors
6
6
 
7
7
  def initialize
8
- @errors = Hash.new { |h,k| h[k.to_sym] = [] }
8
+ @errors = Hash.new
9
9
  end
10
10
 
11
11
  def all(delimiter= ", ", &block)
@@ -22,6 +22,7 @@ module UseCase
22
22
  end
23
23
 
24
24
  def push(key, value)
25
+ @errors[key.to_sym] = [] unless @errors[key.to_sym]
25
26
  @errors[key.to_sym].push(value)
26
27
  end
27
28
 
@@ -1,3 +1,3 @@
1
1
  module Usecasing
2
- VERSION = "0.1.9"
2
+ VERSION = "0.1.10"
3
3
  end
@@ -101,5 +101,14 @@ describe UseCase::Context do
101
101
  expect(errors_keys).to eql([:error_1, :error_2])
102
102
  expect(errors_values).to eql([["this is the first error"], ["this is a second error"]])
103
103
  end
104
+
105
+ # https://github.com/tdantas/usecasing/issues/4
106
+ it "does not mark failure when access key that does not exist" do
107
+ ctx = described_class.new
108
+ expect(ctx.success?).to be_true
109
+ ctx[:key]
110
+ expect(ctx.success?).to be_true
111
+ end
112
+
104
113
  end
105
114
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: usecasing
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.9
4
+ version: 0.1.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thiago Dantas
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-23 00:00:00.000000000 Z
11
+ date: 2014-05-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -109,7 +109,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
109
109
  version: '0'
110
110
  requirements: []
111
111
  rubyforge_project:
112
- rubygems_version: 2.2.1
112
+ rubygems_version: 2.2.2
113
113
  signing_key:
114
114
  specification_version: 4
115
115
  summary: UseCase Driven Approach