resque-async_deliver 1.2.0 → 1.3.0

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: b283af21a0c77dcef7845b93bbe22bfc18f44a45
4
+ data.tar.gz: 4189c75db01030a83d39eaa98e1b0815e7e9cf27
5
+ SHA512:
6
+ metadata.gz: f91650e1b1fd0f3964983dc8cda42f389afe390602e54e397fd5b972c910da83c13e523c2562d3d1bde69f58fbfc2f8495d7eb36c40c144b27bf7d672d987ac1
7
+ data.tar.gz: ae53e96972a0a40090a8a3730c753bdf5c2c163be6c26dc716dd90382e6f7328a446f81dc3396a6bbeacc8ec08676fca82e00f6b8e2db4532aaacd2718cfa63c
data/.travis.yml ADDED
@@ -0,0 +1,10 @@
1
+ language: ruby
2
+ cache: bundler
3
+ script: "bundle exec rspec"
4
+ rvm:
5
+ - 2.1.0
6
+ - 2.0.0
7
+ - 1.9.3
8
+ - ruby-head
9
+ - jruby-19mode
10
+ - rbx-2.1.1
data/Gemfile CHANGED
@@ -1,3 +1,8 @@
1
1
  source "http://rubygems.org"
2
2
 
3
3
  gemspec
4
+
5
+ platforms :rbx do
6
+ gem 'rubysl'
7
+ gem 'rubysl-json'
8
+ end
data/README.md CHANGED
@@ -39,6 +39,8 @@ serialized as a hash containing the class and the id of the model.
39
39
  resque-async\_deliver will then `find` the records and pass them to the
40
40
  mailer.
41
41
 
42
+ The jobs will be added to Resque in the `mail` queue.
43
+
42
44
  ## Details
43
45
 
44
46
  Tested on ruby 1.8.7 and 1.9.2.
@@ -55,3 +57,7 @@ Tested on ruby 1.8.7 and 1.9.2.
55
57
  Philipe Fatio
56
58
  <philipe.fatio@gmail.com>
57
59
  [@fphilipe](http://twitter.com/fphilipe)
60
+
61
+
62
+ [![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/fphilipe/resque-async_deliver/trend.png)](https://bitdeli.com/free "Bitdeli Badge")
63
+
@@ -0,0 +1 @@
1
+ require 'resque/plugins/async_deliver'
@@ -0,0 +1,17 @@
1
+ require 'action_mailer'
2
+
3
+ module Resque
4
+ module Plugins
5
+ module AsyncDeliver
6
+ module ActionMailerExtension
7
+ def async_deliver
8
+ Proxy.new(self)
9
+ end
10
+ end
11
+
12
+ def self.initialize
13
+ ActionMailer::Base.send(:extend, ActionMailerExtension)
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,14 @@
1
+ module Resque
2
+ module Plugins
3
+ module AsyncDeliver
4
+ class MailJob
5
+ @queue = :mail
6
+
7
+ def self.perform(*args)
8
+ mailer, *invocation_args = Serializer.deserialize(*args)
9
+ mailer.send(*invocation_args).deliver
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,21 @@
1
+ module Resque
2
+ module Plugins
3
+ module AsyncDeliver
4
+ class Proxy
5
+ attr_reader :klass
6
+
7
+ def initialize(klass)
8
+ @klass = klass
9
+ end
10
+
11
+ def method_missing(*args)
12
+ if Resque.inline?
13
+ klass.send(*args).deliver
14
+ else
15
+ Resque.enqueue(MailJob, *Serializer.serialize(klass, *args))
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,13 @@
1
+ module Resque
2
+ module Plugins
3
+ module AsyncDeliver
4
+ class Railtie < Rails::Railtie
5
+ initializer :after_initialize do
6
+ ActiveSupport.on_load(:action_mailer) do
7
+ Resque::Plugins::AsyncDeliver.initialize
8
+ end
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,64 @@
1
+ module Resque
2
+ module Plugins
3
+ module AsyncDeliver
4
+ module Serializer
5
+ CLASS_KEY = 'async_deliver_class'
6
+ ID_KEY = 'async_deliver_id'
7
+
8
+ def self.serialize(*args)
9
+ mailer = args.shift.to_s
10
+ method_name = args.shift.to_s
11
+ arguments = serialize_collection(args)
12
+
13
+ [mailer, method_name, *arguments]
14
+ end
15
+
16
+ def self.deserialize(*args)
17
+ mailer = args.shift.constantize
18
+ method_name = args.shift.to_sym
19
+ arguments = deserialize_collection(args)
20
+
21
+ [mailer, method_name, *arguments]
22
+ end
23
+
24
+ private
25
+
26
+ def self.serialize_obj(arg)
27
+ if arg.class.respond_to?(:find) and arg.respond_to?(:id)
28
+ { CLASS_KEY => arg.class.to_s, ID_KEY => arg.id }
29
+ else
30
+ serialize_collection(arg)
31
+ end
32
+ end
33
+
34
+ def self.deserialize_obj(arg)
35
+ if arg.is_a?(Hash) and arg.key?(CLASS_KEY) and arg.key?(ID_KEY)
36
+ arg[CLASS_KEY].constantize.find(arg[ID_KEY])
37
+ else
38
+ deserialize_collection(arg)
39
+ end
40
+ end
41
+
42
+ def self.serialize_collection(obj)
43
+ if obj.is_a?(Array)
44
+ obj.map { |i| serialize_obj(i) }
45
+ elsif obj.is_a?(Hash)
46
+ Hash[obj.map { |k,v| [serialize_obj(k), serialize_obj(v)] }]
47
+ else
48
+ obj
49
+ end
50
+ end
51
+
52
+ def self.deserialize_collection(obj)
53
+ if obj.is_a?(Array)
54
+ obj.map { |i| deserialize_obj(i) }
55
+ elsif obj.is_a?(Hash)
56
+ Hash[obj.map { |k,v| [deserialize_obj(k), deserialize_obj(v)] }]
57
+ else
58
+ obj
59
+ end
60
+ end
61
+ end
62
+ end
63
+ end
64
+ end
@@ -1,7 +1,7 @@
1
1
  module Resque
2
2
  module Plugins
3
3
  module AsyncDeliver
4
- VERSION = '1.2.0'
4
+ VERSION = '1.3.0'
5
5
  end
6
6
  end
7
7
  end
@@ -0,0 +1,12 @@
1
+ require 'resque'
2
+
3
+ require 'resque/plugins/async_deliver/mail_job'
4
+ require 'resque/plugins/async_deliver/serializer'
5
+ require 'resque/plugins/async_deliver/proxy'
6
+ require 'resque/plugins/async_deliver/action_mailer_extension'
7
+
8
+ if defined? Rails
9
+ require 'resque/plugins/async_deliver/railtie'
10
+ else
11
+ Resque::Plugins::AsyncDeliver.initialize
12
+ end
@@ -1,7 +1,7 @@
1
1
  # coding: UTF-8
2
2
 
3
3
  $:.push File.expand_path("../lib", __FILE__)
4
- require "async_deliver/version"
4
+ require "resque/plugins/async_deliver/version"
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "resque-async_deliver"
@@ -26,9 +26,7 @@ transformed back to records by the mailer job and passed along to the mailer.
26
26
  s.require_paths = ["lib"]
27
27
 
28
28
  s.add_dependency 'resque' , '~> 1.0'
29
- s.add_dependency 'actionmailer', '~> 3.0'
29
+ s.add_dependency 'actionmailer', '>= 3', '< 5'
30
30
 
31
- s.add_development_dependency 'rspec-core'
32
- s.add_development_dependency 'rspec-expectations'
33
- s.add_development_dependency 'mocha'
31
+ s.add_development_dependency 'rspec', '>= 3.0.0.beta1'
34
32
  end
data/spec/spec_helper.rb CHANGED
@@ -1,7 +1,6 @@
1
- # coding: UTF-8
2
-
3
1
  require 'support'
4
2
 
5
3
  RSpec.configure do |config|
6
- config.mock_with :mocha
4
+ config.raise_errors_for_deprecations!
5
+ config.expect_with(:rspec) { |c| c.syntax = :expect }
7
6
  end
data/spec/support.rb CHANGED
@@ -1,20 +1,18 @@
1
1
  require 'resque'
2
- require 'resque-async_deliver'
2
+ require 'resque/async_deliver'
3
3
  require 'action_mailer'
4
4
  require 'singleton'
5
5
 
6
- module ActiveRecord
7
- class Base
8
- include Singleton
9
- def self.find(id); instance; end
10
- end
6
+ class Model
7
+ include Singleton
8
+ def self.find(id); instance; end
11
9
  end
12
10
 
13
- class TestUser < ActiveRecord::Base
11
+ class TestUser < Model
14
12
  def id; 123; end
15
13
  end
16
14
 
17
- class TestResource < ActiveRecord::Base
15
+ class TestResource < Model
18
16
  def id; 456; end
19
17
  end
20
18
 
@@ -22,27 +20,3 @@ class TestMailer < ActionMailer::Base
22
20
  extend Resque::Plugins::AsyncDeliver::ActionMailerExtension
23
21
  def test_message; end
24
22
  end
25
-
26
- def arguments
27
- [
28
- TestUser.instance,
29
- 123,
30
- "a string",
31
- %q[ an array ],
32
- { :a => 'hash' },
33
- TestResource.instance
34
- ]
35
- end
36
-
37
- def serialized_arguments
38
- [
39
- { :async_deliver_class => 'TestUser',
40
- :async_deliver_id => TestUser.instance.id },
41
- 123,
42
- "a string",
43
- %q[ an array ],
44
- { :a => 'hash' },
45
- { :async_deliver_class => 'TestResource',
46
- :async_deliver_id => TestResource.instance.id }
47
- ]
48
- end
@@ -0,0 +1,12 @@
1
+ require 'spec_helper'
2
+
3
+ describe ActionMailer::Base do
4
+ describe '.async_deliver' do
5
+ it 'returns a proxy for the mailer' do
6
+ proxy = TestMailer.async_deliver
7
+
8
+ expect(proxy).to be_a(Resque::Plugins::AsyncDeliver::Proxy)
9
+ expect(proxy.klass).to be(TestMailer)
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,9 @@
1
+ require 'spec_helper'
2
+
3
+ describe Resque::Plugins::AsyncDeliver do
4
+ it 'complies with the resque plugin guidelines' do
5
+ expect {
6
+ Resque::Plugin.lint(described_class)
7
+ }.not_to raise_error
8
+ end
9
+ end
@@ -0,0 +1,20 @@
1
+ require 'spec_helper'
2
+
3
+ describe Resque::Plugins::AsyncDeliver::MailJob do
4
+ describe '.perform' do
5
+ it 'instantiates a mail and delivers it' do
6
+ message = double(deliver: true)
7
+ allow(TestMailer).to receive(:test_message) { message }
8
+
9
+ described_class.perform(
10
+ 'TestMailer',
11
+ :test_message,
12
+ 'hello',
13
+ 'world'
14
+ )
15
+
16
+ expect(TestMailer).to have_received(:test_message).with('hello', 'world')
17
+ expect(message).to have_received(:deliver)
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,38 @@
1
+ require 'spec_helper'
2
+
3
+ describe Resque::Plugins::AsyncDeliver::Proxy do
4
+ let(:proxy) { described_class.new(TestMailer) }
5
+
6
+ context 'when calling a method on it' do
7
+ it 'enqueues a MailJob' do
8
+ allow(Resque).to receive(:enqueue)
9
+
10
+ proxy.test_message('hello', 'world')
11
+
12
+ expect(Resque).to have_received(:enqueue).with(
13
+ Resque::Plugins::AsyncDeliver::MailJob,
14
+ 'TestMailer',
15
+ 'test_message',
16
+ 'hello',
17
+ 'world'
18
+ )
19
+ end
20
+
21
+ context 'when Resque.inline? is true' do
22
+ it 'delivers the mail without queuing' do
23
+ message = double(deliver: true)
24
+ allow(TestMailer).to receive(:test_message) { message }
25
+
26
+ begin
27
+ Resque.inline = true
28
+ proxy.test_message
29
+ rescue => e
30
+ Resque.inline = false
31
+ raise e
32
+ end
33
+
34
+ expect(message).to have_received(:deliver)
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,60 @@
1
+ require 'spec_helper'
2
+ require 'json'
3
+
4
+ describe Resque::Plugins::AsyncDeliver::Serializer do
5
+ def serialize_and_deserialize(*args)
6
+ serialization = described_class.serialize(*args)
7
+ json = JSON.dump(serialization)
8
+ array = JSON.load(json)
9
+
10
+ described_class.deserialize(*array)
11
+ end
12
+
13
+ describe '.serialize' do
14
+ it 'returns an array with the serialized arguments' do
15
+ serialization = described_class.serialize(TestMailer, :foo, 'arg')
16
+
17
+ expect(serialization).to eq(['TestMailer', 'foo', 'arg'])
18
+ end
19
+ end
20
+
21
+ describe '.deserialize' do
22
+ it 'returns an array with the deserialized arguments' do
23
+ deserialization =
24
+ described_class.deserialize('TestMailer', 'foo', 'arg')
25
+
26
+ expect(deserialization).to eq([TestMailer, :foo, 'arg'])
27
+ end
28
+ end
29
+
30
+ it 'serializes and deserializes basic objects and queryable models' do
31
+ args = [
32
+ TestUser.instance,
33
+ 123,
34
+ 'a string',
35
+ %q[ an array ],
36
+ { 'a' => 'hash' },
37
+ TestResource.instance
38
+ ]
39
+
40
+ deserialization = serialize_and_deserialize(TestMailer, :foo, *args)
41
+
42
+ expect(deserialization.shift).to be(TestMailer)
43
+ expect(deserialization.shift).to be(:foo)
44
+ expect(deserialization).to eq(args)
45
+ end
46
+
47
+ it 'serializes and deserializes queryable models inside arrays' do
48
+ array = [TestUser.instance]
49
+ deserialization = serialize_and_deserialize(TestMailer, :foo, array)
50
+
51
+ expect(deserialization).to eq([TestMailer, :foo, array])
52
+ end
53
+
54
+ it 'serializes and deserializes queryable models inside hashes' do
55
+ hash = { 'user' => TestUser.instance }
56
+ deserialization = serialize_and_deserialize(TestMailer, :foo, hash)
57
+
58
+ expect(deserialization).to eq([TestMailer, :foo, hash])
59
+ end
60
+ end
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: resque-async_deliver
3
3
  version: !ruby/object:Gem::Version
4
- prerelease:
5
- version: 1.2.0
4
+ version: 1.3.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Philipe Fatio
@@ -10,14 +9,12 @@ autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
11
 
13
- date: 2011-07-08 00:00:00 +02:00
14
- default_executable:
12
+ date: 2014-01-03 00:00:00 Z
15
13
  dependencies:
16
14
  - !ruby/object:Gem::Dependency
17
15
  name: resque
18
16
  prerelease: false
19
17
  requirement: &id001 !ruby/object:Gem::Requirement
20
- none: false
21
18
  requirements:
22
19
  - - ~>
23
20
  - !ruby/object:Gem::Version
@@ -28,46 +25,25 @@ dependencies:
28
25
  name: actionmailer
29
26
  prerelease: false
30
27
  requirement: &id002 !ruby/object:Gem::Requirement
31
- none: false
32
28
  requirements:
33
- - - ~>
29
+ - - ">="
30
+ - !ruby/object:Gem::Version
31
+ version: "3"
32
+ - - <
34
33
  - !ruby/object:Gem::Version
35
- version: "3.0"
34
+ version: "5"
36
35
  type: :runtime
37
36
  version_requirements: *id002
38
37
  - !ruby/object:Gem::Dependency
39
- name: rspec-core
38
+ name: rspec
40
39
  prerelease: false
41
40
  requirement: &id003 !ruby/object:Gem::Requirement
42
- none: false
43
41
  requirements:
44
42
  - - ">="
45
43
  - !ruby/object:Gem::Version
46
- version: "0"
44
+ version: 3.0.0.beta1
47
45
  type: :development
48
46
  version_requirements: *id003
49
- - !ruby/object:Gem::Dependency
50
- name: rspec-expectations
51
- prerelease: false
52
- requirement: &id004 !ruby/object:Gem::Requirement
53
- none: false
54
- requirements:
55
- - - ">="
56
- - !ruby/object:Gem::Version
57
- version: "0"
58
- type: :development
59
- version_requirements: *id004
60
- - !ruby/object:Gem::Dependency
61
- name: mocha
62
- prerelease: false
63
- requirement: &id005 !ruby/object:Gem::Requirement
64
- none: false
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- version: "0"
69
- type: :development
70
- version_requirements: *id005
71
47
  description: |
72
48
  This gem makes it possible to send mails asynchronously using Resque by
73
49
  simply rewriting `SomeMailer.some_mail(ar_resource, 1234).deliver` to
@@ -88,54 +64,58 @@ files:
88
64
  - .gitignore
89
65
  - .rspec
90
66
  - .rvmrc
67
+ - .travis.yml
91
68
  - Gemfile
92
69
  - README.md
93
70
  - Rakefile
94
- - lib/async_deliver/action_mailer_extension.rb
95
- - lib/async_deliver/mail_job.rb
96
- - lib/async_deliver/proxy.rb
97
- - lib/async_deliver/railtie.rb
98
- - lib/async_deliver/version.rb
99
- - lib/resque-async_deliver.rb
71
+ - lib/resque/async_deliver.rb
72
+ - lib/resque/plugins/async_deliver.rb
73
+ - lib/resque/plugins/async_deliver/action_mailer_extension.rb
74
+ - lib/resque/plugins/async_deliver/mail_job.rb
75
+ - lib/resque/plugins/async_deliver/proxy.rb
76
+ - lib/resque/plugins/async_deliver/railtie.rb
77
+ - lib/resque/plugins/async_deliver/serializer.rb
78
+ - lib/resque/plugins/async_deliver/version.rb
100
79
  - resque-async_deliver.gemspec
101
- - spec/async_deliver/action_mailer_extension_spec.rb
102
- - spec/async_deliver/async_deliver_spec.rb
103
- - spec/async_deliver/mail_job_spec.rb
104
- - spec/async_deliver/proxy_spec.rb
105
80
  - spec/spec_helper.rb
106
81
  - spec/support.rb
107
- has_rdoc: true
82
+ - spec/unit/action_mailer_spec.rb
83
+ - spec/unit/async_deliver_spec.rb
84
+ - spec/unit/mail_job_spec.rb
85
+ - spec/unit/proxy_spec.rb
86
+ - spec/unit/serializer_spec.rb
108
87
  homepage: https://github.com/fphilipe/resque-async_deliver
109
88
  licenses: []
110
89
 
90
+ metadata: {}
91
+
111
92
  post_install_message:
112
93
  rdoc_options: []
113
94
 
114
95
  require_paths:
115
96
  - lib
116
97
  required_ruby_version: !ruby/object:Gem::Requirement
117
- none: false
118
98
  requirements:
119
- - - ">="
99
+ - &id004
100
+ - ">="
120
101
  - !ruby/object:Gem::Version
121
102
  version: "0"
122
103
  required_rubygems_version: !ruby/object:Gem::Requirement
123
- none: false
124
104
  requirements:
125
- - - ">="
126
- - !ruby/object:Gem::Version
127
- version: "0"
105
+ - *id004
128
106
  requirements: []
129
107
 
130
108
  rubyforge_project:
131
- rubygems_version: 1.6.2
109
+ rubygems_version: 2.1.10
132
110
  signing_key:
133
- specification_version: 3
111
+ specification_version: 4
134
112
  summary: Deliver mails asynchronously using Resque without explicitly creating a performable job.
135
113
  test_files:
136
- - spec/async_deliver/action_mailer_extension_spec.rb
137
- - spec/async_deliver/async_deliver_spec.rb
138
- - spec/async_deliver/mail_job_spec.rb
139
- - spec/async_deliver/proxy_spec.rb
140
114
  - spec/spec_helper.rb
141
115
  - spec/support.rb
116
+ - spec/unit/action_mailer_spec.rb
117
+ - spec/unit/async_deliver_spec.rb
118
+ - spec/unit/mail_job_spec.rb
119
+ - spec/unit/proxy_spec.rb
120
+ - spec/unit/serializer_spec.rb
121
+ has_rdoc:
@@ -1,15 +0,0 @@
1
- # coding: UTF-8
2
-
3
- require 'action_mailer'
4
-
5
- module Resque::Plugins::AsyncDeliver
6
- module ActionMailerExtension
7
- def async_deliver
8
- Proxy.new(self)
9
- end
10
- end
11
-
12
- def self.initialize
13
- ActionMailer::Base.send(:extend, ActionMailerExtension)
14
- end
15
- end
@@ -1,23 +0,0 @@
1
- # coding: UTF-8
2
-
3
- module Resque::Plugins::AsyncDeliver
4
- class MailJob
5
- @queue = :mail
6
-
7
- def self.perform(*args)
8
- mailer = args.shift.constantize
9
- method_name = args.shift
10
- arguments = []
11
- args.each do |a|
12
- if a.is_a? Hash and
13
- klass = a['async_deliver_class'] || a[:async_deliver_class] and
14
- id = a['async_deliver_id'] || a[:async_deliver_id]
15
- arguments << klass.constantize.find(id)
16
- else
17
- arguments << a
18
- end
19
- end
20
- mailer.__send__(method_name, *arguments).deliver
21
- end
22
- end
23
- end
@@ -1,25 +0,0 @@
1
- # coding: UTF-8
2
-
3
- module Resque::Plugins::AsyncDeliver
4
- class Proxy
5
- def initialize(klass)
6
- @klass = klass
7
- end
8
-
9
- def method_missing(method_name, *args)
10
- if Resque.inline?
11
- @klass.__send__(method_name, *args).deliver
12
- else
13
- arguments = [ @klass.name, method_name ]
14
- args.each do |a|
15
- if a.class < ::ActiveRecord::Base
16
- arguments << { :async_deliver_class => a.class.to_s, :async_deliver_id => a.id }
17
- else
18
- arguments << a
19
- end
20
- end
21
- Resque.enqueue(MailJob, *arguments)
22
- end
23
- end
24
- end
25
- end
@@ -1,13 +0,0 @@
1
- # coding: UTF-8
2
-
3
- require 'rails'
4
-
5
- module Resque::Plugins::AsyncDeliver
6
- class Railtie < Rails::Railtie
7
- initializer :after_initialize do
8
- ActiveSupport.on_load(:action_mailer) do
9
- Resque::Plugins::AsyncDeliver.initialize
10
- end
11
- end
12
- end
13
- end
@@ -1,17 +0,0 @@
1
- # coding: UTF-8
2
-
3
- require 'resque'
4
-
5
- module Resque
6
- module Plugins; end
7
- end
8
-
9
- require 'async_deliver/mail_job'
10
- require 'async_deliver/proxy'
11
- require 'async_deliver/action_mailer_extension'
12
-
13
- if defined? Rails
14
- require 'async_deliver/railtie'
15
- else
16
- Resque::Plugins::AsyncDeliver.initialize
17
- end
@@ -1,15 +0,0 @@
1
- # coding: UTF-8
2
-
3
- require 'spec_helper'
4
-
5
- describe 'a class extended with Resque::Plugins::AsyncDeliver::ActionMailerExtension' do
6
- describe '.async_deliver' do
7
- before do
8
- Resque::Plugins::AsyncDeliver::Proxy.expects(:new).with(TestMailer)
9
- end
10
-
11
- it 'should return a Proxy for the class' do
12
- TestMailer.async_deliver
13
- end
14
- end
15
- end
@@ -1,13 +0,0 @@
1
- # coding: UTF-8
2
-
3
- require 'spec_helper'
4
-
5
- describe Resque::Plugins::AsyncDeliver do
6
- it 'should extend ActionMailer with Resque::Plugins::AsyncDeliver::ActionMailerExtension' do
7
- ActionMailer::Base.should respond_to :async_deliver
8
- end
9
-
10
- it 'should comply to the Resque plugin guidelines' do
11
- expect { Resque::Plugin.lint(Resque::Plugins::AsyncDeliver) }.to_not raise_error
12
- end
13
- end
@@ -1,22 +0,0 @@
1
- # coding: UTF-8
2
-
3
- require 'spec_helper'
4
-
5
- describe Resque::Plugins::AsyncDeliver::MailJob do
6
- describe '.perform' do
7
- before do
8
- message = mock()
9
- message.expects(:deliver)
10
-
11
- TestMailer.expects(:test_message).with(*arguments).returns(message)
12
- end
13
-
14
- it 'should instantiate a mail and deliver it' do
15
- Resque::Plugins::AsyncDeliver::MailJob.perform(
16
- 'TestMailer',
17
- :test_message,
18
- *serialized_arguments
19
- )
20
- end
21
- end
22
- end
@@ -1,39 +0,0 @@
1
- # coding: UTF-8
2
-
3
- require 'spec_helper'
4
-
5
- describe Resque::Plugins::AsyncDeliver::Proxy do
6
- describe '#method_missing' do
7
- let(:proxy) { Resque::Plugins::AsyncDeliver::Proxy.new(TestMailer) }
8
-
9
- context 'when Resque.inline? == false' do
10
- before do
11
- Resque.expects(:enqueue).with(
12
- Resque::Plugins::AsyncDeliver::MailJob,
13
- 'TestMailer',
14
- :test_message,
15
- *serialized_arguments
16
- )
17
- end
18
-
19
- it 'should enqueue a MailJob in Resque' do
20
- proxy.test_message(*arguments)
21
- end
22
- end
23
-
24
- context 'when Resque.inline? == true' do
25
- before do
26
- Resque.inline = true
27
- Resque.expects(:enqueue).never
28
-
29
- message = mock()
30
- message.expects(:deliver)
31
- TestMailer.expects(:test_message).with(*arguments).returns(message)
32
- end
33
-
34
- it 'should deliver the mail instantly' do
35
- proxy.test_message(*arguments)
36
- end
37
- end
38
- end
39
- end