mailboxer 0.0.16 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (33) hide show
  1. data/README.rdoc +32 -2
  2. data/VERSION +1 -1
  3. data/app/mailers/message_mailer.rb +35 -0
  4. data/app/mailers/notification_mailer.rb +20 -0
  5. data/app/models/message.rb +8 -5
  6. data/app/models/notification.rb +6 -1
  7. data/app/views/message_mailer/new_message_email.html.erb +20 -0
  8. data/app/views/message_mailer/new_message_email.text.erb +10 -0
  9. data/app/views/message_mailer/reply_message_email.html.erb +20 -0
  10. data/app/views/message_mailer/reply_message_email.text.erb +10 -0
  11. data/app/views/notification_mailer/new_notification_email.html.erb +20 -0
  12. data/app/views/notification_mailer/new_notification_email.text.erb +10 -0
  13. data/lib/generators/mailboxer/install_generator.rb +4 -0
  14. data/lib/generators/mailboxer/templates/initializer.rb +4 -0
  15. data/lib/mailboxer.rb +12 -0
  16. data/lib/mailboxer/exceptions.rb +12 -0
  17. data/lib/mailboxer/models/messageable.rb +28 -0
  18. data/mailboxer.gemspec +1 -1
  19. data/spec/dummy/app/models/cylon.rb +5 -1
  20. data/spec/dummy/app/models/duck.rb +10 -1
  21. data/spec/dummy/app/models/user.rb +2 -2
  22. data/spec/dummy/config/initializers/mailboxer.rb +3 -0
  23. data/spec/dummy/db/migrate/20110228120600_create_users.rb +1 -0
  24. data/spec/dummy/db/migrate/20110306002940_create_ducks.rb +1 -0
  25. data/spec/dummy/db/migrate/20110306015107_create_cylons.rb +1 -0
  26. data/spec/dummy/db/migrate/{20110407111612_create_mailboxer.rb → 20110427123542_create_mailboxer.rb} +1 -0
  27. data/spec/dummy/db/schema.rb +38 -1
  28. data/spec/factories/cylon.rb +1 -0
  29. data/spec/factories/duck.rb +1 -0
  30. data/spec/factories/user.rb +1 -0
  31. data/spec/mailers/message_mailer_spec.rb +110 -0
  32. data/spec/mailers/notification_mailer_spec.rb +61 -0
  33. metadata +18 -5
data/README.rdoc CHANGED
@@ -12,15 +12,45 @@ There is a lack of documentaion and it will be solved as soon as the gem is more
12
12
  Add to your Gemfile:
13
13
 
14
14
  gem 'mailboxer'
15
+
16
+ Then run:
15
17
 
16
- Migrations:
18
+ bundle update
19
+
20
+ Run install script:
17
21
 
18
22
  rails g mailboxer:install
23
+
24
+ And don't forget to migrate you database:
25
+
26
+ rake db:migrate
27
+
28
+ = Requirements
29
+
30
+ We are now adding support for sending emails when a Notification or a Message is sent to one o more recipients. So that, we mus assure that Messageable models have some specific methods. This methods are:
31
+
32
+ #Returning any kind of indentification you want for the model
33
+ def name
34
+ return "You should add method :name in your Messageable model"
35
+ end
36
+
37
+ #Returning the email address of the model
38
+ def email
39
+ return "define_email@on_your.model"
40
+ end
41
+
42
+ #Returning whether an email should be sent for this object (Message or Notification)
43
+ def should_email?(object)
44
+ return true
45
+ end
46
+
47
+ If these methods are not present, default ones will be created (the ones above).
48
+
19
49
 
20
50
  = Usage
21
51
 
22
52
  In your model:
23
53
 
24
- class User < ActiveRecord::Base
54
+ class User < ActiveRecord::Base
25
55
  acts_as_messageable
26
56
  end
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.0
1
+ 0.1.0
@@ -0,0 +1,35 @@
1
+ class MessageMailer < ActionMailer::Base
2
+ default :from => Mailboxer.default_from
3
+ #Sends and email for indicating a new message or a reply to a receiver.
4
+ #It calls new_message_email if notifing a new message and reply_message_email
5
+ #when indicating a reply to an already created conversation.
6
+ def send_email(message,receiver)
7
+ if message.conversation.messages.size > 0
8
+ reply_message_email(message,receiver)
9
+ else
10
+ new_message_email(message,receiver)
11
+ end
12
+ end
13
+
14
+ include ActionView::Helpers::SanitizeHelper
15
+
16
+ #Sends an email for indicating a new message for the receiver
17
+ def new_message_email(message,receiver)
18
+ @message = message
19
+ @receiver = receiver
20
+ mail(:to => receiver.email, :subject => "You have a new message: " + strip_tags(message.subject)) do |format|
21
+ format.html {render __method__}
22
+ format.text {render __method__}
23
+ end
24
+ end
25
+
26
+ #Sends and email for indicating a reply in an already created conversation
27
+ def reply_message_email(message,receiver)
28
+ @message = message
29
+ @receiver = receiver
30
+ mail(:to => receiver.email, :subject => "You have a new reply: " + strip_tags(message.subject)) do |format|
31
+ format.html {render __method__}
32
+ format.text {render __method__}
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,20 @@
1
+ class NotificationMailer < ActionMailer::Base
2
+ default :from => Mailboxer.default_from
3
+ #Sends and email for indicating a new notification to a receiver.
4
+ #It calls new_notification_email.
5
+ def send_email(notification,receiver)
6
+ new_notification_email(notification,receiver)
7
+ end
8
+
9
+ include ActionView::Helpers::SanitizeHelper
10
+
11
+ #Sends an email for indicating a new message for the receiver
12
+ def new_notification_email(notification,receiver)
13
+ @notification = notification
14
+ @receiver = receiver
15
+ mail(:to => receiver.email, :subject => "You have a new notification: " + strip_tags(notification.subject)) do |format|
16
+ format.html {render __method__}
17
+ format.text {render __method__}
18
+ end
19
+ end
20
+ end
@@ -8,14 +8,13 @@ class Message < Notification
8
8
  scope :conversation, lambda { |conversation|
9
9
  where(:conversation_id => conversation.id)
10
10
  }
11
-
12
11
  class << self
13
12
  #Sets the on deliver callback method.
14
13
  def on_deliver(callback_method)
15
14
  self.on_deliver_callback = callback_method
16
15
  end
17
16
  end
18
-
17
+
19
18
  #Delivers a Message. USE NOT RECOMENDED.
20
19
  #Use Mailboxer::Models::Message.send_message instead.
21
20
  def deliver(reply = false, should_clean = true)
@@ -29,6 +28,10 @@ class Message < Notification
29
28
  msg_receipt.receiver = r
30
29
  msg_receipt.mailbox_type = "inbox"
31
30
  temp_receipts << msg_receipt
31
+ #Should send an email?
32
+ if r.should_email? self
33
+ MessageMailer.send_email(self,r).deliver
34
+ end
32
35
  end
33
36
  #Sender receipt
34
37
  sender_receipt = Receipt.new
@@ -44,9 +47,9 @@ class Message < Notification
44
47
  if reply
45
48
  self.conversation.update_attribute(:updated_at, Time.now)
46
49
  end
47
- self.recipients=nil
48
- self.on_deliver_callback.call(self) unless self.on_deliver_callback.nil?
50
+ self.recipients=nil
51
+ self.on_deliver_callback.call(self) unless self.on_deliver_callback.nil?
49
52
  end
50
53
  return sender_receipt
51
- end
54
+ end
52
55
  end
@@ -1,6 +1,7 @@
1
1
  class Notification < ActiveRecord::Base
2
2
 
3
3
  attr_accessor :recipients
4
+ attr_accessor :object
4
5
  belongs_to :sender, :polymorphic => :true
5
6
  validates_presence_of :subject, :body
6
7
  has_many :receipts
@@ -30,7 +31,11 @@ class Notification < ActiveRecord::Base
30
31
  msg_receipt.notification = self
31
32
  msg_receipt.read = false
32
33
  msg_receipt.receiver = r
33
- temp_receipts << msg_receipt
34
+ temp_receipts << msg_receipt
35
+ #Should send an email?
36
+ if r.should_email? self
37
+ NotificationMailer.send_email(self,r).deliver
38
+ end
34
39
  end
35
40
  temp_receipts.each(&:valid?)
36
41
  if temp_receipts.all? { |t| t.errors.empty? }
@@ -0,0 +1,20 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
5
+ </head>
6
+ <body>
7
+ <h1>You have a new message: <%= strip_tags(@message.subject) %></h1>
8
+ <p>
9
+ You have received a new message:
10
+ </p>
11
+ <blockquote>
12
+ <p>
13
+ <%= raw @message.body %>
14
+ </p>
15
+ </blockquote>
16
+ <p>
17
+ Visit <%= link_to root_url,root_url %> and go to your inbox for more info.
18
+ </p>
19
+ </body>
20
+ </html>
@@ -0,0 +1,10 @@
1
+ You have a new message: <%= strip_tags(@message.subject) %>
2
+ ===============================================
3
+
4
+ You have received a new message:
5
+
6
+ -----------------------------------------------
7
+ <%= strip_tags @message.body %>
8
+ -----------------------------------------------
9
+
10
+ Visit <%= root_url %> and go to your inbox for more info.
@@ -0,0 +1,20 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
5
+ </head>
6
+ <body>
7
+ <h1>You have a new reply: <%= strip_tags(@message.subject) %></h1>
8
+ <p>
9
+ You have received a new reply:
10
+ </p>
11
+ <blockquote>
12
+ <p>
13
+ <%= raw @message.body %>
14
+ </p>
15
+ </blockquote>
16
+ <p>
17
+ Visit <%= link_to root_url,root_url %> and go to your inbox for more info.
18
+ </p>
19
+ </body>
20
+ </html>
@@ -0,0 +1,10 @@
1
+ You have a new reply: <%= strip_tags(@message.subject) %>
2
+ ===============================================
3
+
4
+ You have received a new reply:
5
+
6
+ -----------------------------------------------
7
+ <%= strip_tags @message.body %>
8
+ -----------------------------------------------
9
+
10
+ Visit <%= root_url %> and go to your inbox for more info.
@@ -0,0 +1,20 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
5
+ </head>
6
+ <body>
7
+ <h1>You have a new notification: <%= strip_tags(@notification.subject) %></h1>
8
+ <p>
9
+ You have received a new notification:
10
+ </p>
11
+ <blockquote>
12
+ <p>
13
+ <%= raw @notification.body %>
14
+ </p>
15
+ </blockquote>
16
+ <p>
17
+ Visit <%= link_to root_url,root_url %> and go to your notifications for more info.
18
+ </p>
19
+ </body>
20
+ </html>
@@ -0,0 +1,10 @@
1
+ You have a new notification: <%= strip_tags(@notification.subject) %>
2
+ ===============================================
3
+
4
+ You have received a new notification:
5
+
6
+ -----------------------------------------------
7
+ <%= strip_tags @notification.body %>
8
+ -----------------------------------------------
9
+
10
+ Visit <%= root_url %> and go to your notifications for more info.
@@ -9,6 +9,10 @@ class Mailboxer::InstallGenerator < Rails::Generators::Base #:nodoc:
9
9
  ActiveRecord::Generators::Base.next_migration_number(dirname)
10
10
  end
11
11
 
12
+ def create_initializer_file
13
+ template 'initializer.rb', 'config/initializers/mailboxer.rb'
14
+ end
15
+
12
16
  def create_migration_file
13
17
  migration_template 'migration.rb', 'db/migrate/create_mailboxer.rb'
14
18
  end
@@ -0,0 +1,4 @@
1
+ Mailboxer.setup do |config|
2
+ #Configures the default from for the email sent for Messages and Notifications of Mailboxer
3
+ config.default_from = "no-reply@mailboxer.com"
4
+ end
data/lib/mailboxer.rb CHANGED
@@ -2,6 +2,18 @@ module Mailboxer
2
2
  module Models
3
3
  autoload :Messageable, 'mailboxer/models/messageable'
4
4
  end
5
+ module Exceptions
6
+ autoload :NotCompliantModel, 'mailboxer/exceptions'
7
+ end
8
+
9
+ mattr_accessor :default_from
10
+
11
+ class << self
12
+ def setup
13
+ yield self
14
+ end
15
+ end
16
+
5
17
  end
6
18
  # reopen ActiveRecord and include all the above to make
7
19
  # them available to all our models if they want it
@@ -0,0 +1,12 @@
1
+ module Mailboxer
2
+ module Exceptions
3
+ #Mailboxer::Exceptions::NotCompliantModel is raised when your model with acts_as_messageable
4
+ #method is not compliant with the requirements for acting as messageable.
5
+ #
6
+ #These requirements are:
7
+ #* <b>"name" method</b>: Returning any kind of indentification you want for the model
8
+ #* <b>"email" method</b>: Returning the email address of the model.
9
+ #* <b>"should_email?(object)" method</b>: Returning whether an email should be sent for this object (Message or Notification)
10
+ class NotCompliantModel < RuntimeError; end
11
+ end
12
+ end
@@ -12,6 +12,34 @@ module Mailboxer
12
12
  has_many :messages
13
13
  has_many :receipts, :order => 'created_at DESC', :dependent => :delete_all
14
14
 
15
+ if self.table_exists?
16
+ if !self.new.respond_to? :name
17
+ self.class_eval do
18
+ #Returning any kind of indentification you want for the model
19
+ def name
20
+ return "You should add method :name in your Messageable model"
21
+ end
22
+ end
23
+ end
24
+
25
+ if !self.new.respond_to? :email
26
+ self.class_eval do
27
+ #Returning the email address of the model
28
+ def email
29
+ return "define_email@on_your.model"
30
+ end
31
+ end
32
+ end
33
+
34
+ if !self.new.respond_to? :should_email?
35
+ self.class_eval do
36
+ #Returning whether an email should be sent for this object (Message or Notification)
37
+ def should_email?(object)
38
+ return true
39
+ end
40
+ end
41
+ end
42
+ end
15
43
  include Mailboxer::Models::Messageable::InstanceMethods
16
44
  end
17
45
  end
data/mailboxer.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "mailboxer"
3
- s.version = "0.0.16"
3
+ s.version = "0.1.0"
4
4
  s.authors = ["Eduardo Casanova Cuesta"]
5
5
  s.summary = "Messaging system for rails apps."
6
6
  s.description = "A Rails engine that allows any model to act as messageable, permitting it interchange messages with any other messageable model." +
@@ -1,3 +1,7 @@
1
1
  class Cylon < ActiveRecord::Base
2
- acts_as_messageable
2
+ acts_as_messageable
3
+
4
+ def should_email?(object)
5
+ return false
6
+ end
3
7
  end
@@ -1,3 +1,12 @@
1
1
  class Duck < ActiveRecord::Base
2
- acts_as_messageable
2
+ acts_as_messageable
3
+
4
+ def should_email?(object)
5
+ case object
6
+ when Message
7
+ return false
8
+ when Notification
9
+ return true
10
+ end
11
+ end
3
12
  end
@@ -1,3 +1,3 @@
1
- class User < ActiveRecord::Base
2
- acts_as_messageable
1
+ class User < ActiveRecord::Base
2
+ acts_as_messageable
3
3
  end
@@ -0,0 +1,3 @@
1
+ Mailboxer.setup do |config|
2
+ config.default_from = "no-reply@mailboxer.com"
3
+ end
@@ -2,6 +2,7 @@ class CreateUsers < ActiveRecord::Migration
2
2
  def self.up
3
3
  create_table :users do |t|
4
4
  t.string :name
5
+ t.string :email
5
6
 
6
7
  t.timestamps
7
8
  end
@@ -2,6 +2,7 @@ class CreateDucks < ActiveRecord::Migration
2
2
  def self.up
3
3
  create_table :ducks do |t|
4
4
  t.string :name
5
+ t.string :email
5
6
 
6
7
  t.timestamps
7
8
  end
@@ -2,6 +2,7 @@ class CreateCylons < ActiveRecord::Migration
2
2
  def self.up
3
3
  create_table :cylons do |t|
4
4
  t.string :name
5
+ t.string :email
5
6
 
6
7
  t.timestamps
7
8
  end
@@ -35,6 +35,7 @@ class CreateMailboxer < ActiveRecord::Migration
35
35
  #Conversations
36
36
  #Receipts
37
37
  add_index "receipts","notification_id"
38
+
38
39
  #Messages
39
40
  add_index "notifications","conversation_id"
40
41
 
@@ -10,22 +10,59 @@
10
10
  #
11
11
  # It's strongly recommended to check this file into your version control system.
12
12
 
13
- ActiveRecord::Schema.define(:version => 20110306015107) do
13
+ ActiveRecord::Schema.define(:version => 20110427123542) do
14
+
15
+ create_table "conversations", :force => true do |t|
16
+ t.string "subject", :default => ""
17
+ t.datetime "created_at", :null => false
18
+ t.datetime "updated_at", :null => false
19
+ end
14
20
 
15
21
  create_table "cylons", :force => true do |t|
16
22
  t.string "name"
23
+ t.string "email"
17
24
  t.datetime "created_at"
18
25
  t.datetime "updated_at"
19
26
  end
20
27
 
21
28
  create_table "ducks", :force => true do |t|
22
29
  t.string "name"
30
+ t.string "email"
23
31
  t.datetime "created_at"
24
32
  t.datetime "updated_at"
25
33
  end
26
34
 
35
+ create_table "notifications", :force => true do |t|
36
+ t.string "type"
37
+ t.text "body"
38
+ t.string "subject", :default => ""
39
+ t.integer "sender_id"
40
+ t.string "sender_type"
41
+ t.integer "conversation_id"
42
+ t.boolean "draft", :default => false
43
+ t.datetime "updated_at", :null => false
44
+ t.datetime "created_at", :null => false
45
+ end
46
+
47
+ add_index "notifications", ["conversation_id"], :name => "index_notifications_on_conversation_id"
48
+
49
+ create_table "receipts", :force => true do |t|
50
+ t.integer "receiver_id"
51
+ t.string "receiver_type"
52
+ t.integer "notification_id", :null => false
53
+ t.boolean "read", :default => false
54
+ t.boolean "trashed", :default => false
55
+ t.boolean "deleted", :default => false
56
+ t.string "mailbox_type", :limit => 25
57
+ t.datetime "created_at", :null => false
58
+ t.datetime "updated_at", :null => false
59
+ end
60
+
61
+ add_index "receipts", ["notification_id"], :name => "index_receipts_on_notification_id"
62
+
27
63
  create_table "users", :force => true do |t|
28
64
  t.string "name"
65
+ t.string "email"
29
66
  t.datetime "created_at"
30
67
  t.datetime "updated_at"
31
68
  end
@@ -1,3 +1,4 @@
1
1
  Factory.define :cylon do |c|
2
2
  c.sequence(:name) { |n| "Cylon #{ n }" }
3
+ c.sequence(:email) { |n| "cylon#{ n }@cylon.com" }
3
4
  end
@@ -1,3 +1,4 @@
1
1
  Factory.define :duck do |d|
2
2
  d.sequence(:name) { |n| "Duck #{ n }" }
3
+ d.sequence(:email) { |n| "duck#{ n }@duck.com" }
3
4
  end
@@ -1,3 +1,4 @@
1
1
  Factory.define :user do |u|
2
2
  u.sequence(:name) { |n| "User #{ n }" }
3
+ u.sequence(:email) { |n| "user#{ n }@user.com" }
3
4
  end
@@ -0,0 +1,110 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ describe MessageMailer do
4
+ describe "when sending new message" do
5
+ before do
6
+ @sender = Factory(:user)
7
+ @entity1 = Factory(:user)
8
+ @entity2 = Factory(:duck)
9
+ @entity3 = Factory(:cylon)
10
+ @receipt1 = @sender.send_message([@entity1,@entity2,@entity3], "Body Body Body Body Body Body Body Body Body Body Body Body","Subject")
11
+ end
12
+
13
+ it "should send emails when should_email? is true (1 out of 3)" do
14
+ ActionMailer::Base.deliveries.empty?.should==false
15
+ ActionMailer::Base.deliveries.size.should==1
16
+ end
17
+
18
+ it "should send an email to user entity" do
19
+ temp = false
20
+ ActionMailer::Base.deliveries.each do |email|
21
+ if email.to.first.to_s.eql? @entity1.email
22
+ temp = true
23
+ end
24
+ end
25
+ temp.should==true
26
+ end
27
+
28
+ it "shouldn't send an email to duck entity" do
29
+ temp = false
30
+ ActionMailer::Base.deliveries.each do |email|
31
+ if email.to.first.to_s.eql? @entity2.email
32
+ temp = true
33
+ end
34
+ end
35
+ temp.should==false
36
+ end
37
+
38
+ it "shouldn't send an email to cylon entity" do
39
+ temp = false
40
+ ActionMailer::Base.deliveries.each do |email|
41
+ if email.to.first.to_s.eql? @entity3.email
42
+ temp = true
43
+ end
44
+ end
45
+ temp.should==false
46
+ end
47
+ end
48
+
49
+ describe "when replying" do
50
+ before do
51
+ @sender = Factory(:user)
52
+ @entity1 = Factory(:user)
53
+ @entity2 = Factory(:duck)
54
+ @entity3 = Factory(:cylon)
55
+ @receipt1 = @sender.send_message([@entity1,@entity2,@entity3], "Body","Subject")
56
+ @receipt2 = @sender.reply_to_all(@receipt1, "Body")
57
+ end
58
+
59
+ it "should send emails when should_email? is true (1 out of 3)" do
60
+ ActionMailer::Base.deliveries.empty?.should==false
61
+ ActionMailer::Base.deliveries.size.should==2
62
+ end
63
+
64
+ it "should send an email to user entity" do
65
+ temp = false
66
+ ActionMailer::Base.deliveries.each do |email|
67
+ if email.to.first.to_s.eql? @entity1.email
68
+ temp = true
69
+ end
70
+ end
71
+ temp.should==true
72
+ end
73
+
74
+ it "shouldn't send an email to duck entity" do
75
+ temp = false
76
+ ActionMailer::Base.deliveries.each do |email|
77
+ if email.to.first.to_s.eql? @entity2.email
78
+ temp = true
79
+ end
80
+ end
81
+ temp.should==false
82
+ end
83
+
84
+ it "shouldn't send an email to cylon entity" do
85
+ temp = false
86
+ ActionMailer::Base.deliveries.each do |email|
87
+ if email.to.first.to_s.eql? @entity3.email
88
+ temp = true
89
+ end
90
+ end
91
+ temp.should==false
92
+ end
93
+ end
94
+ end
95
+
96
+ def print_emails
97
+ ActionMailer::Base.deliveries.each do |email|
98
+ puts "----------------------------------------------------"
99
+ puts email.to
100
+ puts "---"
101
+ puts email.from
102
+ puts "---"
103
+ puts email.subject
104
+ puts "---"
105
+ puts email.body
106
+ puts "---"
107
+ puts email.encoded
108
+ puts "----------------------------------------------------"
109
+ end
110
+ end
@@ -0,0 +1,61 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ describe NotificationMailer do
4
+ before do
5
+ @entity1 = Factory(:user)
6
+ @entity2 = Factory(:duck)
7
+ @entity3 = Factory(:cylon)
8
+ @receipt1 = Notification.notify_all([@entity1,@entity2,@entity3],"Subject", "Body Body Body Body Body Body Body Body Body Body Body Body")
9
+ end
10
+
11
+ it "should send emails when should_email? is true (2 out of 3)" do
12
+ ActionMailer::Base.deliveries.empty?.should==false
13
+ ActionMailer::Base.deliveries.size.should==2
14
+ end
15
+
16
+ it "should send an email to user entity" do
17
+ temp = false
18
+ ActionMailer::Base.deliveries.each do |email|
19
+ if email.to.first.to_s.eql? @entity1.email
20
+ temp = true
21
+ end
22
+ end
23
+ temp.should==true
24
+ end
25
+
26
+ it "should send an email to duck entity" do
27
+ temp = false
28
+ ActionMailer::Base.deliveries.each do |email|
29
+ if email.to.first.to_s.eql? @entity2.email
30
+ temp = true
31
+ end
32
+ end
33
+ temp.should==true
34
+ end
35
+
36
+ it "shouldn't send an email to cylon entity" do
37
+ temp = false
38
+ ActionMailer::Base.deliveries.each do |email|
39
+ if email.to.first.to_s.eql? @entity3.email
40
+ temp = true
41
+ end
42
+ end
43
+ temp.should==false
44
+ end
45
+ end
46
+
47
+ def print_emails
48
+ ActionMailer::Base.deliveries.each do |email|
49
+ puts "----------------------------------------------------"
50
+ puts email.to
51
+ puts "---"
52
+ puts email.from
53
+ puts "---"
54
+ puts email.subject
55
+ puts "---"
56
+ puts email.body
57
+ puts "---"
58
+ puts email.encoded
59
+ puts "----------------------------------------------------"
60
+ end
61
+ end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mailboxer
3
3
  version: !ruby/object:Gem::Version
4
- hash: 63
4
+ hash: 27
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
+ - 1
8
9
  - 0
9
- - 16
10
- version: 0.0.16
10
+ version: 0.1.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Eduardo Casanova Cuesta
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-04-17 00:00:00 +02:00
18
+ date: 2011-04-27 00:00:00 +02:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -160,15 +160,25 @@ files:
160
160
  - README.rdoc
161
161
  - Rakefile
162
162
  - VERSION
163
+ - app/mailers/message_mailer.rb
164
+ - app/mailers/notification_mailer.rb
163
165
  - app/models/conversation.rb
164
166
  - app/models/mailbox.rb
165
167
  - app/models/message.rb
166
168
  - app/models/notification.rb
167
169
  - app/models/receipt.rb
170
+ - app/views/message_mailer/new_message_email.html.erb
171
+ - app/views/message_mailer/new_message_email.text.erb
172
+ - app/views/message_mailer/reply_message_email.html.erb
173
+ - app/views/message_mailer/reply_message_email.text.erb
174
+ - app/views/notification_mailer/new_notification_email.html.erb
175
+ - app/views/notification_mailer/new_notification_email.text.erb
168
176
  - lib/generators/mailboxer/install_generator.rb
177
+ - lib/generators/mailboxer/templates/initializer.rb
169
178
  - lib/generators/mailboxer/templates/migration.rb
170
179
  - lib/mailboxer.rb
171
180
  - lib/mailboxer/engine.rb
181
+ - lib/mailboxer/exceptions.rb
172
182
  - lib/mailboxer/models/messageable.rb
173
183
  - mailboxer.gemspec
174
184
  - spec/dummy/.project
@@ -191,6 +201,7 @@ files:
191
201
  - spec/dummy/config/environments/test.rb
192
202
  - spec/dummy/config/initializers/backtrace_silencers.rb
193
203
  - spec/dummy/config/initializers/inflections.rb
204
+ - spec/dummy/config/initializers/mailboxer.rb
194
205
  - spec/dummy/config/initializers/mime_types.rb
195
206
  - spec/dummy/config/initializers/secret_token.rb
196
207
  - spec/dummy/config/initializers/session_store.rb
@@ -199,7 +210,7 @@ files:
199
210
  - spec/dummy/db/migrate/20110228120600_create_users.rb
200
211
  - spec/dummy/db/migrate/20110306002940_create_ducks.rb
201
212
  - spec/dummy/db/migrate/20110306015107_create_cylons.rb
202
- - spec/dummy/db/migrate/20110407111612_create_mailboxer.rb
213
+ - spec/dummy/db/migrate/20110427123542_create_mailboxer.rb
203
214
  - spec/dummy/db/schema.rb
204
215
  - spec/dummy/public/404.html
205
216
  - spec/dummy/public/422.html
@@ -220,6 +231,8 @@ files:
220
231
  - spec/integration/message_and_receipt_spec.rb
221
232
  - spec/integration/navigation_spec.rb
222
233
  - spec/mailboxer_spec.rb
234
+ - spec/mailers/message_mailer_spec.rb
235
+ - spec/mailers/notification_mailer_spec.rb
223
236
  - spec/models/conversation_spec.rb
224
237
  - spec/models/mailbox_spec.rb
225
238
  - spec/models/mailboxer_models_messageable_spec.rb