mallet 0.0.1 → 0.0.2
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/Gemfile
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
module
|
1
|
+
module Mallet
|
2
2
|
module Generators
|
3
3
|
class InstallGenerator < Rails::Generators::Base
|
4
4
|
include Rails::Generators::Migration
|
@@ -6,7 +6,7 @@ module Invoicing
|
|
6
6
|
source_root File.expand_path("../templates", __FILE__)
|
7
7
|
|
8
8
|
desc <<-CONTENT
|
9
|
-
Copies the
|
9
|
+
Copies the mallet migration file to the migrations
|
10
10
|
folder.
|
11
11
|
|
12
12
|
Please run rake db:migrate once the installer is
|
@@ -23,7 +23,7 @@ module Invoicing
|
|
23
23
|
end
|
24
24
|
|
25
25
|
def create_migration_file
|
26
|
-
migration_template 'migration.rb', 'db/migrate/
|
26
|
+
migration_template 'migration.rb', 'db/migrate/create_mallet_tables.rb'
|
27
27
|
end
|
28
28
|
end
|
29
29
|
end
|
data/lib/mallet/mail.rb
CHANGED
@@ -5,6 +5,11 @@ module Mallet
|
|
5
5
|
|
6
6
|
belongs_to :malletable, polymorphic: true
|
7
7
|
|
8
|
+
scope :pending, where(workflow_state: 'pending')
|
9
|
+
scope :sent, where(workflow_state: 'sent')
|
10
|
+
scope :failed, where(workflow_state: 'failed')
|
11
|
+
scope :for, lambda {|malletable| where(malletable_type: malletable.class.name, malletable_id: malletable.id)}
|
12
|
+
|
8
13
|
validates_presence_of :mailer_class
|
9
14
|
validates_presence_of :mailer_method
|
10
15
|
validates_presence_of :malletable
|
@@ -15,9 +20,10 @@ module Mallet
|
|
15
20
|
workflow do
|
16
21
|
state :pending do
|
17
22
|
event :deliver, :transitions_to => :sent
|
23
|
+
event :error, :transitions_to => :failed
|
18
24
|
end
|
19
25
|
|
20
|
-
state :
|
26
|
+
state :failed
|
21
27
|
state :sent
|
22
28
|
end
|
23
29
|
|
@@ -32,6 +38,11 @@ module Mallet
|
|
32
38
|
def deliver
|
33
39
|
mailer_class.constantize.send mailer_method.to_sym, malletable
|
34
40
|
end
|
41
|
+
|
42
|
+
def self.deliver_all!
|
43
|
+
pending.each(&:delayed_delivery)
|
44
|
+
end
|
45
|
+
|
35
46
|
end
|
36
47
|
|
37
48
|
end
|
data/lib/mallet/version.rb
CHANGED
@@ -2,18 +2,20 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Mallet::Mail do
|
4
4
|
|
5
|
+
before(:each) do
|
6
|
+
@job = Delayed::Job.create!
|
7
|
+
end
|
8
|
+
|
5
9
|
context "on creation" do
|
6
10
|
|
7
11
|
before(:each) do
|
8
|
-
job =
|
12
|
+
job = @job
|
9
13
|
|
10
14
|
@mail = Mallet::mail do
|
11
15
|
to job
|
12
16
|
mailer ActionMailer::Base.name
|
13
17
|
method 'welcome'
|
14
18
|
end
|
15
|
-
|
16
|
-
@job = job
|
17
19
|
end
|
18
20
|
|
19
21
|
it "should default to a pending state" do
|
@@ -40,7 +42,7 @@ describe Mallet::Mail do
|
|
40
42
|
context "on delivery" do
|
41
43
|
|
42
44
|
before(:each) do
|
43
|
-
job =
|
45
|
+
job = @job
|
44
46
|
|
45
47
|
@mail = Mallet::mail do
|
46
48
|
to job
|
@@ -60,4 +62,57 @@ describe Mallet::Mail do
|
|
60
62
|
|
61
63
|
end
|
62
64
|
|
65
|
+
context "filtering mails" do
|
66
|
+
|
67
|
+
it "should filter by pending" do
|
68
|
+
job = @job
|
69
|
+
|
70
|
+
expect {
|
71
|
+
Mallet::mail do
|
72
|
+
to job
|
73
|
+
mailer ActionMailer::Base.name
|
74
|
+
method 'welcome'
|
75
|
+
end
|
76
|
+
}.to change{ Mallet::Mail.pending.count }.by(1)
|
77
|
+
end
|
78
|
+
|
79
|
+
it "should filter by sent" do
|
80
|
+
job = @job
|
81
|
+
|
82
|
+
mail = Mallet::mail do
|
83
|
+
to job
|
84
|
+
mailer ActionMailer::Base.name
|
85
|
+
method 'welcome'
|
86
|
+
end
|
87
|
+
|
88
|
+
expect {mail.error!}.to change{ Mallet::Mail.failed.count }.by(1)
|
89
|
+
end
|
90
|
+
|
91
|
+
it "should filter by failed" do
|
92
|
+
job = @job
|
93
|
+
|
94
|
+
mail = Mallet::mail do
|
95
|
+
to job
|
96
|
+
mailer ActionMailer::Base.name
|
97
|
+
method 'welcome'
|
98
|
+
end
|
99
|
+
|
100
|
+
mail.should_receive(:deliver)
|
101
|
+
expect {mail.deliver!}.to change{ Mallet::Mail.sent.count }.by(1)
|
102
|
+
end
|
103
|
+
|
104
|
+
it "should filter by malletable item" do
|
105
|
+
job = @job
|
106
|
+
|
107
|
+
expect{
|
108
|
+
mail = Mallet::mail do
|
109
|
+
to job
|
110
|
+
mailer ActionMailer::Base.name
|
111
|
+
method 'welcome'
|
112
|
+
end
|
113
|
+
}.to change{ Mallet::Mail.for(job).count }.by(1)
|
114
|
+
end
|
115
|
+
|
116
|
+
end
|
117
|
+
|
63
118
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mallet
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -138,7 +138,6 @@ files:
|
|
138
138
|
- README.md
|
139
139
|
- Rakefile
|
140
140
|
- config.ru
|
141
|
-
- lib/generators/active_record/invoicing_generator.rb
|
142
141
|
- lib/generators/active_record/mallet_generator.rb
|
143
142
|
- lib/generators/active_record/templates/migration.rb
|
144
143
|
- lib/mallet.rb
|
@@ -1,30 +0,0 @@
|
|
1
|
-
module Mallet
|
2
|
-
module Generators
|
3
|
-
class InstallGenerator < Rails::Generators::Base
|
4
|
-
include Rails::Generators::Migration
|
5
|
-
|
6
|
-
source_root File.expand_path("../templates", __FILE__)
|
7
|
-
|
8
|
-
desc <<-CONTENT
|
9
|
-
Copies the mallet migration file to the migrations
|
10
|
-
folder.
|
11
|
-
|
12
|
-
Please run rake db:migrate once the installer is
|
13
|
-
complete.
|
14
|
-
|
15
|
-
CONTENT
|
16
|
-
|
17
|
-
def self.next_migration_number(dirname) #:nodoc:
|
18
|
-
if ActiveRecord::Base.timestamped_migrations
|
19
|
-
Time.now.utc.strftime("%Y%m%d%H%M%S")
|
20
|
-
else
|
21
|
-
"%.3d" % (current_migration_number(dirname) + 1)
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
def create_migration_file
|
26
|
-
migration_template 'migration.rb', 'db/migrate/create_mallet_tables.rb'
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|