caser 0.0.1 → 0.0.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
  SHA1:
3
- metadata.gz: a75cc231c0399c0f6b15abfe52003f8473a977ab
4
- data.tar.gz: fc2b008ef54bc368d7071f40befa4cc31444e119
3
+ metadata.gz: e21259b41ce295bfd3fa40dbc6c5dfda5da1806e
4
+ data.tar.gz: fa9a498b7530e99ad3751941f2f2020a1d702528
5
5
  SHA512:
6
- metadata.gz: f78d5657c158f0b9f8161254ab4ff74c90ffa8caaa9e4d441babc20e66481c221ff363927b40f7c78a577f2eb322802950253e61e00f88dc1b6a4d0831a54809
7
- data.tar.gz: 35ef34038154d373822d0c6e17e84be24912ff211a46b7008af6be205eff614c71620d32a669a45ba532d97d759351764724ed271187b3e731561a726f210c9b
6
+ metadata.gz: 7b1d9580197158d74434aac3295cf4101e783658656beef6005127fdf2c8b710a7bed1eebb237719af492db06fcfd83f3ff58a2a0f1fa560729746af0294e5f2
7
+ data.tar.gz: cfaf1e3867f5c5980b6b7e6dbd4a4c7ab9623520eb3116c8374727129e0fc1649c92fd064b879c0e487812ecbaba2ec4a16e8694624fb135ee58330258d3df6a
data/README.md CHANGED
@@ -22,12 +22,12 @@ Or install it yourself as:
22
22
 
23
23
  ## Usage
24
24
 
25
- To create a basic use case, extend Caser::Action:
25
+ To create a basic use case, extend Caser::Action and implement after_initialize (any arity you like) and do_process:
26
26
 
27
27
  class Api::CreateContact < Caser::Action
28
28
  attr_accessor :user, params
29
- def after_initialize
30
- @user, @params = current_user, params
29
+ def after_initialize(user, params)
30
+ @user, @params = user, params
31
31
  end
32
32
 
33
33
  def do_process
@@ -39,7 +39,7 @@ To create a basic use case, extend Caser::Action:
39
39
 
40
40
  def valid?(params)
41
41
  unless :whatever
42
- errors << 'No, we're not going to do that'
42
+ errors << "No, we're not going to do that"
43
43
  return false
44
44
  end
45
45
  true
@@ -60,7 +60,7 @@ Here is typical usage in a controller:
60
60
  These use cases also support call-back style usage:
61
61
 
62
62
  def create
63
- Api::CreateContact.new(current_user, params[:contact]) do |on
63
+ Api::CreateContact.new(current_user, params[:contact]) do |on|
64
64
  on.success {|action| ... code for success case}
65
65
  on.failure {|action| ... code for failure case}
66
66
  end.process
@@ -4,8 +4,10 @@ module Caser
4
4
  class Action
5
5
  include Observable
6
6
 
7
+ attr_reader :outcome
7
8
  def initialize(*params)
8
9
  @_callbacks = nil
10
+ @outcome = nil
9
11
  yield @_callbacks = Callbacks.new if block_given?
10
12
  after_initialize(*params)
11
13
  end
@@ -46,5 +48,8 @@ module Caser
46
48
  notify_observers(event)
47
49
  end
48
50
 
51
+ def set_outcome(outcome)
52
+ @outcome = outcome
53
+ end
49
54
  end
50
55
  end
@@ -1,3 +1,3 @@
1
1
  module Caser
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -3,13 +3,15 @@ require 'caser'
3
3
 
4
4
  describe Caser::Action do
5
5
  class BasicAction < Caser::Action
6
- attr_accessor :will_fail
7
- def after_initialize(will_fail = false)
6
+ attr_accessor :will_fail, :eventual_outcome
7
+ def after_initialize(will_fail = false, eventual_outcome = eventual_outcome)
8
8
  @will_fail = will_fail
9
+ @eventual_outcome = eventual_outcome
9
10
  end
10
11
 
11
12
  def do_process
12
13
  errors << "It failed" if will_fail?
14
+ set_outcome(eventual_outcome) if eventual_outcome
13
15
  end
14
16
 
15
17
  def will_fail?
@@ -38,6 +40,12 @@ describe Caser::Action do
38
40
  @action = BasicAction.new(true).process
39
41
  @action.errors.length.must_equal 1
40
42
  end
43
+
44
+ it 'provides an outcome accessor' do
45
+ @outcome = Object.new
46
+ @action = BasicAction.new(true, @outcome).process
47
+ @action.outcome.must_equal @outcome
48
+ end
41
49
  end
42
50
 
43
51
  describe 'callback style' do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: caser
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Simon Robson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-06-29 00:00:00.000000000 Z
11
+ date: 2013-10-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler