ohm-contrib 0.0.33 → 0.0.34

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.
data/lib/ohm/contrib.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  module Ohm
2
2
  module Contrib
3
- VERSION = '0.0.33'
3
+ VERSION = '0.0.34'
4
4
  end
5
5
 
6
6
  autoload :Boundaries, "ohm/contrib/boundaries"
@@ -10,6 +10,8 @@ module Ohm
10
10
  # - after_create
11
11
  # - before_save
12
12
  # - after_save
13
+ # - before_update
14
+ # - after_update
13
15
  # - before_delete
14
16
  # - after_delete
15
17
  #
@@ -176,10 +178,18 @@ module Ohm
176
178
  # If the save also succeeds, all after :save callbacks are
177
179
  # executed.
178
180
  def save
179
- execute_callback(:before, :save) if valid?
181
+ existing = !new?
182
+
183
+ if valid?
184
+ execute_callback(:before, :save)
185
+ execute_callback(:before, :update) if existing
186
+ end
180
187
 
181
188
  super.tap do |is_saved|
182
- execute_callback(:after, :save) if is_saved
189
+ if is_saved
190
+ execute_callback(:after, :save)
191
+ execute_callback(:after, :update) if existing
192
+ end
183
193
  end
184
194
  end
185
195
 
@@ -198,6 +208,8 @@ module Ohm
198
208
  def after_save() end
199
209
  def before_create() end
200
210
  def after_create() end
211
+ def before_update() end
212
+ def after_update() end
201
213
  def before_delete() end
202
214
  def after_delete() end
203
215
 
@@ -9,6 +9,8 @@ test "save on invalid" do
9
9
  assert ! post.did?(:do_after_create)
10
10
  assert ! post.did?(:do_before_save)
11
11
  assert ! post.did?(:do_after_save)
12
+ assert ! post.did?(:do_before_update)
13
+ assert ! post.did?(:do_after_update)
12
14
  end
13
15
 
14
16
  test "saving a valid model" do
@@ -21,6 +23,8 @@ test "saving a valid model" do
21
23
  assert post.did?(:do_after_create)
22
24
  assert post.did?(:do_before_save)
23
25
  assert post.did?(:do_after_save)
26
+ assert ! post.did?(:do_before_update)
27
+ assert ! post.did?(:do_after_update)
24
28
  end
25
29
 
26
30
  test "ensure create / save callbacks are only called once" do
@@ -33,7 +37,7 @@ test "ensure create / save callbacks are only called once" do
33
37
  assert 1 == post.count(:do_after_create)
34
38
  end
35
39
 
36
- test "using Post::create on a valid model invokes all callbacks" do
40
+ test "Post::create on a valid model invokes all callbacks (except update)" do
37
41
  post = Post.create(:body => "The Body")
38
42
 
39
43
  assert post.did?(:do_before_validate)
@@ -42,6 +46,8 @@ test "using Post::create on a valid model invokes all callbacks" do
42
46
  assert post.did?(:do_after_create)
43
47
  assert post.did?(:do_before_save)
44
48
  assert post.did?(:do_after_save)
49
+ assert ! post.did?(:do_before_update)
50
+ assert ! post.did?(:do_after_update)
45
51
  end
46
52
 
47
53
  test "ensure Post::create only invokes save / create once" do
@@ -65,9 +71,34 @@ test "on successful save of existing record" do
65
71
  assert post.did?(:do_after_validate)
66
72
  assert post.did?(:do_before_save)
67
73
  assert post.did?(:do_after_save)
74
+ assert post.did?(:do_before_update)
75
+ assert post.did?(:do_after_update)
68
76
 
69
77
  assert 1 == post.count(:do_before_save)
70
78
  assert 1 == post.count(:do_after_save)
79
+ assert 1 == post.count(:do_before_update)
80
+ assert 1 == post.count(:do_after_update)
81
+ end
82
+
83
+ test "on successful save of existing record (using #update)" do
84
+ post = Post.create(:body => "The Body")
85
+ post = Post[post.id]
86
+ post.update(:body => "New Body")
87
+
88
+ assert ! post.did?(:do_before_create)
89
+ assert ! post.did?(:do_after_create)
90
+
91
+ assert post.did?(:do_before_validate)
92
+ assert post.did?(:do_after_validate)
93
+ assert post.did?(:do_before_save)
94
+ assert post.did?(:do_after_save)
95
+ assert post.did?(:do_before_update)
96
+ assert post.did?(:do_after_update)
97
+
98
+ assert 1 == post.count(:do_before_save)
99
+ assert 1 == post.count(:do_after_save)
100
+ assert 1 == post.count(:do_before_update)
101
+ assert 1 == post.count(:do_after_update)
71
102
  end
72
103
 
73
104
  test "on failed save of existing record" do
@@ -85,6 +116,9 @@ test "on failed save of existing record" do
85
116
 
86
117
  assert ! post.did?(:do_before_save)
87
118
  assert ! post.did?(:do_after_save)
119
+
120
+ assert ! post.did?(:do_before_update)
121
+ assert ! post.did?(:do_after_update)
88
122
  end
89
123
 
90
124
  test "on delete" do
@@ -101,5 +135,7 @@ test "on delete" do
101
135
  assert ! post.did?(:do_after_create)
102
136
  assert ! post.did?(:do_before_save)
103
137
  assert ! post.did?(:do_after_save)
138
+ assert ! post.did?(:do_before_update)
139
+ assert ! post.did?(:do_after_update)
104
140
  end
105
141
 
@@ -28,6 +28,8 @@ protected
28
28
  def after_create() incr(:do_after_create) end
29
29
  def before_save() incr(:do_before_save) end
30
30
  def after_save() incr(:do_after_save) end
31
+ def before_update() incr(:do_before_update) end
32
+ def after_update() incr(:do_after_update) end
31
33
  def before_delete() incr(:do_before_delete) end
32
34
  def after_delete() incr(:do_after_delete) end
33
35
 
@@ -18,6 +18,9 @@ class Post < Ohm::Model
18
18
 
19
19
  before :delete, :do_before_delete
20
20
  after :delete, :do_after_delete
21
+
22
+ before :update, :do_before_update
23
+ after :update, :do_after_update
21
24
 
22
25
  def validate
23
26
  super
@@ -40,6 +43,8 @@ protected
40
43
  def do_after_create() incr(:do_after_create) end
41
44
  def do_before_save() incr(:do_before_save) end
42
45
  def do_after_save() incr(:do_after_save) end
46
+ def do_before_update() incr(:do_before_update) end
47
+ def do_after_update() incr(:do_after_update) end
43
48
  def do_before_delete() incr(:do_before_delete) end
44
49
  def do_after_delete() incr(:do_after_delete) end
45
50
 
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 0
8
- - 33
9
- version: 0.0.33
8
+ - 34
9
+ version: 0.0.34
10
10
  platform: ruby
11
11
  authors:
12
12
  - Cyril David