devise-async 0.3.0 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,5 +1,13 @@
1
1
  ## Unreleased
2
2
 
3
+ ## 0.3.1
4
+
5
+ * Fixes
6
+ * Do not register after_commit unless ORM supports it
7
+ * Only enqueue notifications for after_commit if model is dirty
8
+
9
+ ## 0.3.0
10
+
3
11
  * Fixes
4
12
  * Added `Devise::Async::Model` to use new devise's after_commit hooks to resolve #6 (only devise >=2.1.1)
5
13
 
@@ -4,13 +4,21 @@ module Devise
4
4
  extend ActiveSupport::Concern
5
5
 
6
6
  included do
7
- after_commit :send_devise_pending_notifications
7
+ if respond_to?(:after_commit) # AR only
8
+ after_commit :send_devise_pending_notifications
9
+ else # mongoid
10
+ after_save :send_devise_pending_notifications
11
+ end
8
12
  end
9
13
 
10
14
  protected
11
15
 
12
16
  def send_devise_notification(notification)
13
- devise_pending_notifications << notification
17
+ if changed?
18
+ devise_pending_notifications << notification
19
+ else
20
+ Devise::Async::Worker.enqueue(notification, self.class.name, self.id.to_s)
21
+ end
14
22
  end
15
23
 
16
24
  def send_devise_pending_notifications
@@ -1,5 +1,5 @@
1
1
  module Devise
2
2
  module Async
3
- VERSION = "0.3.0"
3
+ VERSION = "0.3.1"
4
4
  end
5
5
  end
@@ -3,18 +3,38 @@ require "test_helper"
3
3
  module Devise
4
4
  module Async
5
5
  describe "Model" do
6
- it "accumulates notifications to be send after commit" do
6
+ it "accumulates notifications to be sent after commit on Model creation" do
7
+ Admin.transaction do
8
+ admin = create_admin
9
+ admin.send(:devise_pending_notifications).must_equal [:confirmation_instructions]
10
+ end
11
+ end
12
+
13
+ it "immediately sends notifications when the model has not changed" do
7
14
  admin = create_admin
15
+ Worker.expects(:enqueue).with(:confirmation_instructions, "Admin", admin.id.to_s)
8
16
  admin.send_confirmation_instructions
9
- admin.send(:devise_pending_notifications).must_equal [:confirmation_instructions]
10
- Worker.expects(:enqueue).never
17
+ end
18
+
19
+ it "accumulates notifications to be sent after commit when Model has been changed" do
20
+ admin = create_admin
21
+ Admin.transaction do
22
+ admin[:username] = "changed_username"
23
+ admin.send_confirmation_instructions
24
+ admin.send(:devise_pending_notifications).must_equal [:confirmation_instructions]
25
+ Worker.expects(:enqueue).never # after_commit will not fire without save
26
+ end
11
27
  end
12
28
 
13
- it "triggers enqueues the notifications on save" do
29
+ it "triggers the enqueued notifications on save" do
14
30
  admin = create_admin
15
- admin.send_confirmation_instructions
16
- Worker.expects(:enqueue).with(:confirmation_instructions, "Admin", admin.id.to_s)
17
- admin.update_attribute(:username, "newusername")
31
+ Admin.transaction do
32
+ admin[:username] = "changed_username"
33
+ admin.send_confirmation_instructions
34
+ admin.send(:devise_pending_notifications).must_equal [:confirmation_instructions]
35
+ admin.save
36
+ Worker.expects(:enqueue).with(:confirmation_instructions, "Admin", admin.id.to_s)
37
+ end
18
38
  end
19
39
  end
20
40
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: devise-async
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-07-21 00:00:00.000000000 Z
12
+ date: 2012-08-15 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: devise
@@ -232,7 +232,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
232
232
  version: '0'
233
233
  segments:
234
234
  - 0
235
- hash: -1160752069777007952
235
+ hash: -215577202643201492
236
236
  required_rubygems_version: !ruby/object:Gem::Requirement
237
237
  none: false
238
238
  requirements:
@@ -241,7 +241,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
241
241
  version: '0'
242
242
  segments:
243
243
  - 0
244
- hash: -1160752069777007952
244
+ hash: -215577202643201492
245
245
  requirements: []
246
246
  rubyforge_project:
247
247
  rubygems_version: 1.8.23