mailboxer 0.0.14 → 0.0.15

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/README.rdoc CHANGED
@@ -4,4 +4,23 @@ This project is based on the need of a private message system for {ging / social
4
4
 
5
5
  It is born from the great, but old, code from {lpsergi / acts_as_messageable}[https://github.com/psergi/acts_as_messageable].
6
6
 
7
- There is a lack of documentaion and it will be solved as soon as the gem is more stable and had proved to be useful integrated with SocialStream.
7
+ There is a lack of documentaion and it will be solved as soon as the gem is more stable and had proved to be useful integrated with SocialStream.
8
+
9
+
10
+ = Installation
11
+
12
+ Add to your Gemfile:
13
+
14
+ gem 'mailboxer'
15
+
16
+ Migrations:
17
+
18
+ rails g mailboxer:install
19
+
20
+ = Usage
21
+
22
+ In your model:
23
+
24
+ class User < ActiveRecord::Base
25
+ acts_as_messageable
26
+ end
@@ -9,19 +9,19 @@ class Conversation < ActiveRecord::Base
9
9
 
10
10
  # before_create :clean
11
11
  scope :participant, lambda {|participant|
12
- joins(:receipts).select('DISTINCT conversations.*').where('receipts.receiver_id' => participant.id,'receipts.receiver_type' => participant.class.to_s).order("conversations.updated_at DESC")
12
+ joins(:receipts).select('DISTINCT conversations.*').where('notifications.type'=> Message.to_s,'receipts.receiver_id' => participant.id,'receipts.receiver_type' => participant.class.to_s).order("conversations.updated_at DESC")
13
13
  }
14
14
  scope :inbox, lambda {|participant|
15
- joins(:receipts).select('DISTINCT conversations.*').where('receipts.receiver_id' => participant.id,'receipts.receiver_type' => participant.class.to_s, 'receipts.mailbox_type' => 'inbox','receipts.trashed' => false).order("conversations.updated_at DESC")
15
+ joins(:receipts).select('DISTINCT conversations.*').where('notifications.type'=> Message.to_s,'receipts.receiver_id' => participant.id,'receipts.receiver_type' => participant.class.to_s, 'receipts.mailbox_type' => 'inbox','receipts.trashed' => false).order("conversations.updated_at DESC")
16
16
  }
17
17
  scope :sentbox, lambda {|participant|
18
- joins(:receipts).select('DISTINCT conversations.*').where('receipts.receiver_id' => participant.id,'receipts.receiver_type' => participant.class.to_s, 'receipts.mailbox_type' => 'sentbox','receipts.trashed' => false).order("conversations.updated_at DESC")
18
+ joins(:receipts).select('DISTINCT conversations.*').where('notifications.type'=> Message.to_s,'receipts.receiver_id' => participant.id,'receipts.receiver_type' => participant.class.to_s, 'receipts.mailbox_type' => 'sentbox','receipts.trashed' => false).order("conversations.updated_at DESC")
19
19
  }
20
20
  scope :trash, lambda {|participant|
21
- joins(:receipts).select('DISTINCT conversations.*').where('receipts.receiver_id' => participant.id,'receipts.receiver_type' => participant.class.to_s,'receipts.trashed' => true).order("conversations.updated_at DESC")
21
+ joins(:receipts).select('DISTINCT conversations.*').where('notifications.type'=> Message.to_s,'receipts.receiver_id' => participant.id,'receipts.receiver_type' => participant.class.to_s,'receipts.trashed' => true).order("conversations.updated_at DESC")
22
22
  }
23
23
  scope :unread, lambda {|participant|
24
- joins(:receipts).select('DISTINCT conversations.*').where('receipts.receiver_id' => participant.id,'receipts.receiver_type' => participant.class.to_s,'receipts.read' => false).order("conversations.updated_at DESC")
24
+ joins(:receipts).select('DISTINCT conversations.*').where('notifications.type'=> Message.to_s,'receipts.receiver_id' => participant.id,'receipts.receiver_type' => participant.class.to_s,'receipts.read' => false).order("conversations.updated_at DESC")
25
25
  }
26
26
  class << self
27
27
  def total
@@ -31,22 +31,22 @@ class Conversation < ActiveRecord::Base
31
31
 
32
32
  def mark_as_read(participant)
33
33
  return if participant.nil?
34
- return self.receipts(participant).mark_as_read
34
+ return self.receipts_for(participant).mark_as_read
35
35
  end
36
36
 
37
37
  def mark_as_unread(participant)
38
38
  return if participant.nil?
39
- return self.receipts(participant).mark_as_unread
39
+ return self.receipts_for(participant).mark_as_unread
40
40
  end
41
41
 
42
42
  def move_to_trash(participant)
43
43
  return if participant.nil?
44
- return self.receipts(participant).move_to_trash
44
+ return self.receipts_for(participant).move_to_trash
45
45
  end
46
46
 
47
47
  def untrash(participant)
48
48
  return if participant.nil?
49
- return self.receipts(participant).untrash
49
+ return self.receipts_for(participant).untrash
50
50
  end
51
51
 
52
52
  def recipients
@@ -82,9 +82,8 @@ class Conversation < ActiveRecord::Base
82
82
  return @last_message
83
83
  end
84
84
 
85
- def receipts(participant=nil)
86
- return Receipt.conversation(self).receiver(participant) if participant
87
- return Receipt.conversation(self)
85
+ def receipts_for(participant)
86
+ return Receipt.conversation(self).receiver(participant)
88
87
  end
89
88
 
90
89
  def count_messages
@@ -93,22 +92,22 @@ class Conversation < ActiveRecord::Base
93
92
 
94
93
  def is_participant?(participant)
95
94
  return false if participant.nil?
96
- return self.receipts(participant).count != 0
95
+ return self.receipts_for(participant).count != 0
97
96
  end
98
97
 
99
98
  def is_trashed?(participant)
100
99
  return false if participant.nil?
101
- return self.receipts(participant).trash.count!=0
100
+ return self.receipts_for(participant).trash.count!=0
102
101
  end
103
102
 
104
103
  def is_completely_trashed?(participant)
105
104
  return false if participant.nil?
106
- return self.receipts(participant).trash.count==self.receipts(participant).count
105
+ return self.receipts_for(participant).trash.count==self.receipts(participant).count
107
106
  end
108
107
 
109
108
  def is_unread?(participant)
110
109
  return false if participant.nil?
111
- return self.receipts(participant).unread.count!=0
110
+ return self.receipts_for(participant).unread.count!=0
112
111
  end
113
112
  # protected
114
113
  # #[empty method]
@@ -4,6 +4,10 @@ class Mailbox
4
4
  def initialize(recipient, box = :all)
5
5
  @messageable = recipient
6
6
  end
7
+
8
+ def notifications(options = {})
9
+ return Receipt.where(options).receiver(@messageable).notifications
10
+ end
7
11
 
8
12
  def conversations(options = {})
9
13
  conv = Conversation.participant(@messageable)
@@ -22,7 +26,7 @@ class Mailbox
22
26
  if (options[:read].present? and options[:read]==false) or (options[:unread].present? and options[:unread]==true)
23
27
  conv = conv.unread(@messageable)
24
28
  end
25
-
29
+
26
30
  return conv.uniq
27
31
  end
28
32
 
@@ -46,6 +50,7 @@ class Mailbox
46
50
  end
47
51
 
48
52
  def empty_trash(options = {})
53
+ #TODO
49
54
  return false
50
55
  end
51
56
 
@@ -1,82 +1,50 @@
1
- class Message < ActiveRecord::Base
2
- #
3
- attr_accessor :recipients
4
- belongs_to :sender, :polymorphic => :true
1
+ class Message < Notification
2
+ #
5
3
  belongs_to :conversation, :validate => true, :autosave => true
6
- validates_presence_of :subject, :body, :sender
7
-
4
+ validates_presence_of :sender
5
+
8
6
  class_inheritable_accessor :on_deliver_callback
9
- protected :on_deliver_callback
10
- has_many :receipts
11
- scope :conversation, lambda { |conversation|
7
+ protected :on_deliver_callback
8
+ scope :conversation, lambda { |conversation|
12
9
  where(:conversation_id => conversation.id)
13
10
  }
14
-
15
11
  class << self
16
12
  def on_deliver(callback_method)
17
13
  self.on_deliver_callback = callback_method
18
14
  end
19
- end
20
-
15
+ end
16
+
21
17
  def deliver(reply = false, should_clean = true)
22
18
  self.clean if should_clean
23
19
  temp_receipts = Array.new
24
20
  #Receiver receipts
25
21
  self.recipients.each do |r|
26
22
  msg_receipt = Receipt.new
27
- msg_receipt.message = self
28
- msg_receipt.read = false
29
- msg_receipt.receiver = r
30
- msg_receipt.mailbox_type = "inbox"
31
- temp_receipts << msg_receipt
23
+ msg_receipt.notification = self
24
+ msg_receipt.read = false
25
+ msg_receipt.receiver = r
26
+ msg_receipt.mailbox_type = "inbox"
27
+ temp_receipts << msg_receipt
32
28
  end
33
29
  #Sender receipt
34
30
  sender_receipt = Receipt.new
35
- sender_receipt.message = self
36
- sender_receipt.read = true
37
- sender_receipt.receiver = self.sender
38
- sender_receipt.mailbox_type = "sentbox"
39
- temp_receipts << sender_receipt
40
-
41
- temp_receipts.each(&:valid?)
42
- if temp_receipts.all? { |t| t.errors.empty? }
43
- temp_receipts.each(&:save!) #Save receipts
44
- if reply
45
- self.conversation.update_attribute(:updated_at, Time.now)
46
- end
47
- self.recipients=nil
48
- self.on_deliver_callback.call(self) unless self.on_deliver_callback.nil?
49
- end
50
- return sender_receipt
51
- end
52
-
53
- def recipients
54
- if @recipients.blank?
55
- recipients_array = Array.new
56
- self.receipts.each do |receipt|
57
- recipients_array << receipt.receiver
58
- end
59
- return recipients_array
60
- end
61
- return @recipients
62
- end
31
+ sender_receipt.notification = self
32
+ sender_receipt.read = true
33
+ sender_receipt.receiver = self.sender
34
+ sender_receipt.mailbox_type = "sentbox"
35
+ temp_receipts << sender_receipt
36
+
37
+ temp_receipts.each(&:valid?)
38
+ if temp_receipts.all? { |t| t.errors.empty? }
39
+ temp_receipts.each(&:save!) #Save receipts
40
+ if reply
41
+ self.conversation.update_attribute(:updated_at, Time.now)
42
+ end
43
+ self.recipients=nil
44
+ self.on_deliver_callback.call(self) unless self.on_deliver_callback.nil?
45
+ end
46
+ return sender_receipt
47
+ end
48
+
63
49
 
64
- def receipts(participant=nil)
65
- return Receipt.message(self).receiver(participant) if participant
66
- return Receipt.message(self)
67
- end
68
-
69
- def is_unread?(participant)
70
- return false if participant.nil?
71
- return self.receipts(participant).unread.count!=0
72
- end
73
-
74
- include ActionView::Helpers::SanitizeHelper
75
- def clean
76
- unless self.subject.nil?
77
- self.subject = sanitize self.subject
78
- end
79
- self.body = sanitize self.body
80
- end
81
-
82
50
  end
@@ -0,0 +1,65 @@
1
+ class Notification < ActiveRecord::Base
2
+
3
+ attr_accessor :recipients
4
+ belongs_to :sender, :polymorphic => :true
5
+ validates_presence_of :subject, :body
6
+ has_many :receipts
7
+
8
+ class << self
9
+ def notify_all(recipients,subject,body)
10
+ notification = Notification.new({:body => body, :subject => subject})
11
+ notification.recipients = recipients.is_a?(Array) ? recipients : [recipients]
12
+ notification.recipients = notification.recipients.uniq
13
+ return notification.deliver
14
+ end
15
+ end
16
+
17
+ def deliver(should_clean = true)
18
+ self.clean if should_clean
19
+ temp_receipts = Array.new
20
+ #Receiver receipts
21
+ self.recipients.each do |r|
22
+ msg_receipt = Receipt.new
23
+ msg_receipt.notification = self
24
+ msg_receipt.read = false
25
+ msg_receipt.receiver = r
26
+ temp_receipts << msg_receipt
27
+ end
28
+ temp_receipts.each(&:valid?)
29
+ if temp_receipts.all? { |t| t.errors.empty? }
30
+ temp_receipts.each(&:save!) #Save receipts
31
+ self.recipients=nil
32
+ end
33
+ return temp_receipts
34
+ end
35
+
36
+ def recipients
37
+ if @recipients.blank?
38
+ recipients_array = Array.new
39
+ self.receipts.each do |receipt|
40
+ recipients_array << receipt.receiver
41
+ end
42
+ return recipients_array
43
+ end
44
+ return @recipients
45
+ end
46
+
47
+ def receipt_for(participant)
48
+ return Receipt.notification(self).receiver(participant)
49
+ end
50
+
51
+ def is_unread?(participant)
52
+ return false if participant.nil?
53
+ return self.receipt_for(participant).unread.count!=0
54
+ end
55
+
56
+ include ActionView::Helpers::SanitizeHelper
57
+
58
+ def clean
59
+ unless self.subject.nil?
60
+ self.subject = sanitize self.subject
61
+ end
62
+ self.body = sanitize self.body
63
+ end
64
+
65
+ end
@@ -1,18 +1,22 @@
1
1
  class Receipt < ActiveRecord::Base
2
- belongs_to :message, :validate => true, :autosave => true
3
- has_one :conversation, :through => :message
2
+ belongs_to :notification, :validate => true, :autosave => true
4
3
  belongs_to :receiver, :polymorphic => :true
5
-
4
+ belongs_to :message, :foreign_key => "notification_id"
5
+
6
6
  validates_presence_of :receiver
7
7
 
8
8
  scope :receiver, lambda { |receiver|
9
9
  where(:receiver_id => receiver.id,:receiver_type => receiver.class.to_s)
10
10
  }
11
- scope :message, lambda { |message|
12
- where(:message_id => message.id)
11
+ #Notifications Scope checks type to be nil, not Notification because of STI behaviour
12
+ #with the primary class (no type is saved)
13
+ scope :notifications, joins(:notification).where('notifications.type' => nil)
14
+ scope :messages, joins(:notification).where('notifications.type' => Message.to_s)
15
+ scope :notification, lambda { |notification|
16
+ where(:notification_id => notification.id)
13
17
  }
14
18
  scope :conversation, lambda { |conversation|
15
- joins(:message).where('messages.conversation_id' => conversation.id)
19
+ joins(:notification).where('notifications.conversation_id' => conversation.id)
16
20
  }
17
21
  scope :sentbox, where(:mailbox_type => "sentbox")
18
22
  scope :inbox, where(:mailbox_type => "inbox")
@@ -72,6 +76,11 @@ class Receipt < ActiveRecord::Base
72
76
  update_attributes(:mailbox_type => :sentbox, :trashed => false)
73
77
  end
74
78
 
79
+ def conversation
80
+ return nil if notification.class == Notification
81
+ return notification.conversation if notification.class == Message
82
+ end
83
+
75
84
  protected
76
85
 
77
86
  def remove_duplicate_errors
@@ -10,7 +10,7 @@ class CreateMailboxer < ActiveRecord::Migration
10
10
  #Receipts
11
11
  create_table :receipts do |t|
12
12
  t.references :receiver, :polymorphic => true
13
- t.column :message_id, :integer, :null => false
13
+ t.column :notification_id, :integer, :null => false
14
14
  t.column :read, :boolean, :default => false
15
15
  t.column :trashed, :boolean, :default => false
16
16
  t.column :deleted, :boolean, :default => false
@@ -18,8 +18,9 @@ class CreateMailboxer < ActiveRecord::Migration
18
18
  t.column :created_at, :datetime, :null => false
19
19
  t.column :updated_at, :datetime, :null => false
20
20
  end
21
- #Messages
22
- create_table :messages do |t|
21
+ #Notifications and Messages
22
+ create_table :notifications do |t|
23
+ t.column :type, :string
23
24
  t.column :body, :text
24
25
  t.column :subject, :string, :default => ""
25
26
  t.references :sender, :polymorphic => true
@@ -33,26 +34,27 @@ class CreateMailboxer < ActiveRecord::Migration
33
34
  #Indexes
34
35
  #Conversations
35
36
  #Receipts
36
- add_index "receipts","message_id"
37
+ add_index "receipts","notification_id"
38
+
37
39
  #Messages
38
- add_index "messages","conversation_id"
40
+ add_index "notifications","conversation_id"
39
41
 
40
42
  #Foreign keys
41
43
  #Conversations
42
44
  #Receipts
43
- add_foreign_key "receipts", "messages", :name => "receipts_on_message_id"
45
+ add_foreign_key "receipts", "notifications", :name => "receipts_on_notification_id"
44
46
  #Messages
45
- add_foreign_key "messages", "conversations", :name => "messages_on_conversation_id"
47
+ add_foreign_key "notifications", "conversations", :name => "notifications_on_conversation_id"
46
48
  end
47
49
 
48
50
  def self.down
49
51
  #Tables
50
- remove_foreign_key "receipts", :name => "receipts_on_message_id"
51
- remove_foreign_key "messages", :name => "messages_on_conversation_id"
52
+ remove_foreign_key "receipts", :name => "receipts_on_notification_id"
53
+ remove_foreign_key "notifications", :name => "notifications_on_conversation_id"
52
54
 
53
55
  #Indexes
54
56
  drop_table :receipts
55
57
  drop_table :conversations
56
- drop_table :messages
58
+ drop_table :notifications
57
59
  end
58
60
  end
@@ -1,3 +1,6 @@
1
+ # Database foreign keys
2
+ require 'foreigner'
3
+
1
4
  module Mailboxer
2
5
  class Engine < Rails::Engine
3
6
 
@@ -15,11 +15,24 @@ module Mailboxer
15
15
  end
16
16
 
17
17
  module InstanceMethods
18
+
19
+ ################################### MAILBOXES
20
+
18
21
  def mailbox
19
22
  @mailbox = Mailbox.new(self) if @mailbox.nil?
20
23
  @mailbox.type = :all
21
24
  return @mailbox
22
25
  end
26
+
27
+ ################################### NOTIFICATIONS
28
+
29
+ def notify(subject,body)
30
+ notification = Notification.new({:body => body, :subject => subject})
31
+ notification.recipients = [self]
32
+ return notification.deliver
33
+ end
34
+
35
+ ################################### MESSAGES
23
36
 
24
37
  def send_message(recipients, msg_body, subject)
25
38
  convo = Conversation.new({:subject => subject})
@@ -39,11 +52,11 @@ module Mailboxer
39
52
  end
40
53
 
41
54
  def reply_to_sender(receipt, reply_body, subject = nil)
42
- return reply(receipt.conversation, receipt.message.sender, reply_body, subject)
55
+ return reply(receipt.conversation, receipt.notification.sender, reply_body, subject)
43
56
  end
44
57
 
45
58
  def reply_to_all(receipt, reply_body, subject = nil)
46
- return reply(receipt.conversation, receipt.message.recipients, reply_body, subject)
59
+ return reply(receipt.conversation, receipt.notification.recipients, reply_body, subject)
47
60
  end
48
61
 
49
62
  def reply_to_conversation(conversation, reply_body, subject = nil)
@@ -81,6 +94,8 @@ module Mailboxer
81
94
  end
82
95
  return nil
83
96
  end
97
+
98
+
84
99
  end
85
100
  end
86
101
  end
data/mailboxer.gemspec CHANGED
@@ -1,9 +1,10 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "mailboxer"
3
- s.version = "0.0.14"
3
+ s.version = "0.0.15"
4
4
  s.authors = ["Eduardo Casanova Cuesta"]
5
5
  s.summary = "Messaging system for rails apps."
6
- s.description = "A Rails engine that allows any model to act as messageable, permitting it interchange messages with any other messageable model."
6
+ s.description = "A Rails engine that allows any model to act as messageable, permitting it interchange messages with any other messageable model." +
7
+ "It also supports sending system notifications to messageable models."
7
8
  s.email = "ecasanovac@gmail.com"
8
9
  s.homepage = "http://github.com/ging/mailboxer"
9
10
  s.files = `git ls-files`.split("\n")
@@ -1,13 +1,16 @@
1
1
  class CreateMailboxer < ActiveRecord::Migration
2
2
  def self.up
3
+ #Tables
4
+ #Conversations
3
5
  create_table :conversations do |t|
4
6
  t.column :subject, :string, :default => ""
5
7
  t.column :created_at, :datetime, :null => false
6
8
  t.column :updated_at, :datetime, :null => false
7
9
  end
10
+ #Receipts
8
11
  create_table :receipts do |t|
9
12
  t.references :receiver, :polymorphic => true
10
- t.column :message_id, :integer, :null => false
13
+ t.column :notification_id, :integer, :null => false
11
14
  t.column :read, :boolean, :default => false
12
15
  t.column :trashed, :boolean, :default => false
13
16
  t.column :deleted, :boolean, :default => false
@@ -15,23 +18,42 @@ class CreateMailboxer < ActiveRecord::Migration
15
18
  t.column :created_at, :datetime, :null => false
16
19
  t.column :updated_at, :datetime, :null => false
17
20
  end
18
- create_table :messages do |t|
21
+ #Notifications and Messages
22
+ create_table :notifications do |t|
23
+ t.column :type, :string
19
24
  t.column :body, :text
20
25
  t.column :subject, :string, :default => ""
21
- t.column :headers, :text
22
26
  t.references :sender, :polymorphic => true
23
27
  t.column :conversation_id, :integer
24
- t.column :sent, :boolean, :default => false
25
28
  t.column :draft, :boolean, :default => false
26
- t.column :system, :boolean, :default => false
27
29
  t.column :updated_at, :datetime, :null => false
28
30
  t.column :created_at, :datetime, :null => false
29
31
  end
32
+
33
+
34
+ #Indexes
35
+ #Conversations
36
+ #Receipts
37
+ add_index "receipts","notification_id"
38
+ #Messages
39
+ add_index "notifications","conversation_id"
40
+
41
+ #Foreign keys
42
+ #Conversations
43
+ #Receipts
44
+ add_foreign_key "receipts", "notifications", :name => "receipts_on_notification_id"
45
+ #Messages
46
+ add_foreign_key "notifications", "conversations", :name => "notifications_on_conversation_id"
30
47
  end
31
48
 
32
49
  def self.down
50
+ #Tables
51
+ remove_foreign_key "receipts", :name => "receipts_on_notification_id"
52
+ remove_foreign_key "notifications", :name => "notifications_on_conversation_id"
53
+
54
+ #Indexes
33
55
  drop_table :receipts
34
56
  drop_table :conversations
35
- drop_table :messages
57
+ drop_table :notifications
36
58
  end
37
59
  end
@@ -11,8 +11,8 @@ describe "Messages And Receipts" do
11
11
  describe "message sending" do
12
12
 
13
13
  before do
14
- @mail1 = @entity1.send_message(@entity2,"Body","Subject")
15
- @message1 = @mail1.message
14
+ @receipt1 = @entity1.send_message(@entity2,"Body","Subject")
15
+ @message1 = @receipt1.notification
16
16
  end
17
17
 
18
18
  it "should create proper message" do
@@ -24,7 +24,7 @@ describe "Messages And Receipts" do
24
24
 
25
25
  it "should create proper mails" do
26
26
  #Sender Mail
27
- mail = Receipt.receiver(@entity1).message(@message1).first
27
+ mail = Receipt.receiver(@entity1).notification(@message1).first
28
28
  assert mail
29
29
  if mail
30
30
  mail.read.should==true
@@ -32,7 +32,7 @@ describe "Messages And Receipts" do
32
32
  mail.mailbox_type.should=="sentbox"
33
33
  end
34
34
  #Receiver Mail
35
- mail = Receipt.receiver(@entity2).message(@message1).first
35
+ mail = Receipt.receiver(@entity2).notification(@message1).first
36
36
  assert mail
37
37
  if mail
38
38
  mail.read.should==false
@@ -52,10 +52,10 @@ describe "Messages And Receipts" do
52
52
 
53
53
  describe "message replying to sender" do
54
54
  before do
55
- @mail1 = @entity1.send_message(@entity2,"Body","Subject")
56
- @mail2 = @entity2.reply_to_sender(@mail1,"Reply body")
57
- @message1 = @mail1.message
58
- @message2 = @mail2.message
55
+ @receipt1 = @entity1.send_message(@entity2,"Body","Subject")
56
+ @receipt2 = @entity2.reply_to_sender(@receipt1,"Reply body")
57
+ @message1 = @receipt1.notification
58
+ @message2 = @receipt2.notification
59
59
  end
60
60
 
61
61
  it "should create proper message" do
@@ -67,7 +67,7 @@ describe "Messages And Receipts" do
67
67
 
68
68
  it "should create proper mails" do
69
69
  #Sender Mail
70
- mail = Receipt.receiver(@entity2).message(@message2).first
70
+ mail = Receipt.receiver(@entity2).notification(@message2).first
71
71
  assert mail
72
72
  if mail
73
73
  mail.read.should==true
@@ -75,7 +75,7 @@ describe "Messages And Receipts" do
75
75
  mail.mailbox_type.should=="sentbox"
76
76
  end
77
77
  #Receiver Mail
78
- mail = Receipt.receiver(@entity1).message(@message2).first
78
+ mail = Receipt.receiver(@entity1).notification(@message2).first
79
79
  assert mail
80
80
  if mail
81
81
  mail.read.should==false
@@ -98,10 +98,10 @@ describe "Messages And Receipts" do
98
98
 
99
99
  describe "message replying to all" do
100
100
  before do
101
- @mail1 = @entity1.send_message(@entity2,"Body","Subject")
102
- @mail2 = @entity2.reply_to_all(@mail1,"Reply body")
103
- @message1 = @mail1.message
104
- @message2 = @mail2.message
101
+ @receipt1 = @entity1.send_message(@entity2,"Body","Subject")
102
+ @receipt2 = @entity2.reply_to_all(@receipt1,"Reply body")
103
+ @message1 = @receipt1.notification
104
+ @message2 = @receipt2.notification
105
105
  end
106
106
 
107
107
  it "should create proper message" do
@@ -113,7 +113,7 @@ describe "Messages And Receipts" do
113
113
 
114
114
  it "should create proper mails" do
115
115
  #Sender Mail
116
- mail = Receipt.receiver(@entity2).message(@message2).first
116
+ mail = Receipt.receiver(@entity2).notification(@message2).first
117
117
  assert mail
118
118
  if mail
119
119
  mail.read.should==true
@@ -121,7 +121,7 @@ describe "Messages And Receipts" do
121
121
  mail.mailbox_type.should=="sentbox"
122
122
  end
123
123
  #Receiver Mail
124
- mail = Receipt.receiver(@entity1).message(@message2).first
124
+ mail = Receipt.receiver(@entity1).notification(@message2).first
125
125
  assert mail
126
126
  if mail
127
127
  mail.read.should==false
@@ -143,10 +143,10 @@ describe "Messages And Receipts" do
143
143
  end
144
144
  describe "message replying to conversation" do
145
145
  before do
146
- @mail1 = @entity1.send_message(@entity2,"Body","Subject")
147
- @mail2 = @entity2.reply_to_conversation(@mail1.conversation,"Reply body")
148
- @message1 = @mail1.message
149
- @message2 = @mail2.message
146
+ @receipt1 = @entity1.send_message(@entity2,"Body","Subject")
147
+ @receipt2 = @entity2.reply_to_conversation(@receipt1.conversation,"Reply body")
148
+ @message1 = @receipt1.notification
149
+ @message2 = @receipt2.notification
150
150
  end
151
151
 
152
152
  it "should create proper message" do
@@ -158,7 +158,7 @@ describe "Messages And Receipts" do
158
158
 
159
159
  it "should create proper mails" do
160
160
  #Sender Mail
161
- mail = Receipt.receiver(@entity2).message(@message2).first
161
+ mail = Receipt.receiver(@entity2).notification(@message2).first
162
162
  assert mail
163
163
  if mail
164
164
  mail.read.should==true
@@ -166,7 +166,7 @@ describe "Messages And Receipts" do
166
166
  mail.mailbox_type.should=="sentbox"
167
167
  end
168
168
  #Receiver Mail
169
- mail = Receipt.receiver(@entity1).message(@message2).first
169
+ mail = Receipt.receiver(@entity1).notification(@message2).first
170
170
  assert mail
171
171
  if mail
172
172
  mail.read.should==false
@@ -197,8 +197,8 @@ describe "Messages And Receipts" do
197
197
  describe "message sending" do
198
198
 
199
199
  before do
200
- @mail1 = @entity1.send_message(@entity2,"Body","Subject")
201
- @message1 = @mail1.message
200
+ @receipt1 = @entity1.send_message(@entity2,"Body","Subject")
201
+ @message1 = @receipt1.notification
202
202
  end
203
203
 
204
204
  it "should create proper message" do
@@ -210,7 +210,7 @@ describe "Messages And Receipts" do
210
210
 
211
211
  it "should create proper mails" do
212
212
  #Sender Mail
213
- mail = Receipt.receiver(@entity1).message(@message1).first
213
+ mail = Receipt.receiver(@entity1).notification(@message1).first
214
214
  assert mail
215
215
  if mail
216
216
  mail.read.should==true
@@ -218,7 +218,7 @@ describe "Messages And Receipts" do
218
218
  mail.mailbox_type.should=="sentbox"
219
219
  end
220
220
  #Receiver Mail
221
- mail = Receipt.receiver(@entity2).message(@message1).first
221
+ mail = Receipt.receiver(@entity2).notification(@message1).first
222
222
  assert mail
223
223
  if mail
224
224
  mail.read.should==false
@@ -238,10 +238,10 @@ describe "Messages And Receipts" do
238
238
 
239
239
  describe "message replying to sender" do
240
240
  before do
241
- @mail1 = @entity1.send_message(@entity2,"Body","Subject")
242
- @mail2 = @entity2.reply_to_sender(@mail1,"Reply body")
243
- @message1 = @mail1.message
244
- @message2 = @mail2.message
241
+ @receipt1 = @entity1.send_message(@entity2,"Body","Subject")
242
+ @receipt2 = @entity2.reply_to_sender(@receipt1,"Reply body")
243
+ @message1 = @receipt1.notification
244
+ @message2 = @receipt2.notification
245
245
  end
246
246
 
247
247
  it "should create proper message" do
@@ -253,7 +253,7 @@ describe "Messages And Receipts" do
253
253
 
254
254
  it "should create proper mails" do
255
255
  #Sender Mail
256
- mail = Receipt.receiver(@entity2).message(@message2).first
256
+ mail = Receipt.receiver(@entity2).notification(@message2).first
257
257
  assert mail
258
258
  if mail
259
259
  mail.read.should==true
@@ -261,7 +261,7 @@ describe "Messages And Receipts" do
261
261
  mail.mailbox_type.should=="sentbox"
262
262
  end
263
263
  #Receiver Mail
264
- mail = Receipt.receiver(@entity1).message(@message2).first
264
+ mail = Receipt.receiver(@entity1).notification(@message2).first
265
265
  assert mail
266
266
  if mail
267
267
  mail.read.should==false
@@ -284,10 +284,10 @@ describe "Messages And Receipts" do
284
284
 
285
285
  describe "message replying to all" do
286
286
  before do
287
- @mail1 = @entity1.send_message(@entity2,"Body","Subject")
288
- @mail2 = @entity2.reply_to_all(@mail1,"Reply body")
289
- @message1 = @mail1.message
290
- @message2 = @mail2.message
287
+ @receipt1 = @entity1.send_message(@entity2,"Body","Subject")
288
+ @receipt2 = @entity2.reply_to_all(@receipt1,"Reply body")
289
+ @message1 = @receipt1.notification
290
+ @message2 = @receipt2.notification
291
291
  end
292
292
 
293
293
  it "should create proper message" do
@@ -299,7 +299,7 @@ describe "Messages And Receipts" do
299
299
 
300
300
  it "should create proper mails" do
301
301
  #Sender Mail
302
- mail = Receipt.receiver(@entity2).message(@message2).first
302
+ mail = Receipt.receiver(@entity2).notification(@message2).first
303
303
  assert mail
304
304
  if mail
305
305
  mail.read.should==true
@@ -307,7 +307,7 @@ describe "Messages And Receipts" do
307
307
  mail.mailbox_type.should=="sentbox"
308
308
  end
309
309
  #Receiver Mail
310
- mail = Receipt.receiver(@entity1).message(@message2).first
310
+ mail = Receipt.receiver(@entity1).notification(@message2).first
311
311
  assert mail
312
312
  if mail
313
313
  mail.read.should==false
@@ -363,8 +363,8 @@ describe "Messages And Receipts" do
363
363
  describe "message sending" do
364
364
 
365
365
  before do
366
- @mail1 = @entity1.send_message(@recipients,"Body","Subject")
367
- @message1 = @mail1.message
366
+ @receipt1 = @entity1.send_message(@recipients,"Body","Subject")
367
+ @message1 = @receipt1.notification
368
368
  end
369
369
 
370
370
  it "should create proper message" do
@@ -376,7 +376,7 @@ describe "Messages And Receipts" do
376
376
 
377
377
  it "should create proper mails" do
378
378
  #Sender Mail
379
- mail = Receipt.receiver(@entity1).message(@message1).first
379
+ mail = Receipt.receiver(@entity1).notification(@message1).first
380
380
  assert mail
381
381
  if mail
382
382
  mail.read.should==true
@@ -385,7 +385,7 @@ describe "Messages And Receipts" do
385
385
  end
386
386
  #Receiver Mails
387
387
  @recipients.each do |receiver|
388
- mail = Receipt.receiver(receiver).message(@message1).first
388
+ mail = Receipt.receiver(receiver).notification(@message1).first
389
389
  assert mail
390
390
  if mail
391
391
  mail.read.should==false
@@ -407,10 +407,10 @@ describe "Messages And Receipts" do
407
407
 
408
408
  describe "message replying to sender" do
409
409
  before do
410
- @mail1 = @entity1.send_message(@recipients,"Body","Subject")
411
- @mail2 = @entity2.reply_to_sender(@mail1,"Reply body")
412
- @message1 = @mail1.message
413
- @message2 = @mail2.message
410
+ @receipt1 = @entity1.send_message(@recipients,"Body","Subject")
411
+ @receipt2 = @entity2.reply_to_sender(@receipt1,"Reply body")
412
+ @message1 = @receipt1.notification
413
+ @message2 = @receipt2.notification
414
414
  end
415
415
 
416
416
  it "should create proper message" do
@@ -422,7 +422,7 @@ describe "Messages And Receipts" do
422
422
 
423
423
  it "should create proper mails" do
424
424
  #Sender Mail
425
- mail = Receipt.receiver(@entity2).message(@message2).first
425
+ mail = Receipt.receiver(@entity2).notification(@message2).first
426
426
  assert mail
427
427
  if mail
428
428
  mail.read.should==true
@@ -430,7 +430,7 @@ describe "Messages And Receipts" do
430
430
  mail.mailbox_type.should=="sentbox"
431
431
  end
432
432
  #Receiver Mail
433
- mail = Receipt.receiver(@entity1).message(@message2).first
433
+ mail = Receipt.receiver(@entity1).notification(@message2).first
434
434
  assert mail
435
435
  if mail
436
436
  mail.read.should==false
@@ -439,7 +439,7 @@ describe "Messages And Receipts" do
439
439
  end
440
440
 
441
441
  #No Receiver, No Mail
442
- mail = Receipt.receiver(@entity3).message(@message2).first
442
+ mail = Receipt.receiver(@entity3).notification(@message2).first
443
443
  assert mail.nil?
444
444
 
445
445
  end
@@ -459,10 +459,10 @@ describe "Messages And Receipts" do
459
459
 
460
460
  describe "message replying to all" do
461
461
  before do
462
- @mail1 = @entity1.send_message(@recipients,"Body","Subject")
463
- @mail2 = @entity2.reply_to_all(@mail1,"Reply body")
464
- @message1 = @mail1.message
465
- @message2 = @mail2.message
462
+ @receipt1 = @entity1.send_message(@recipients,"Body","Subject")
463
+ @receipt2 = @entity2.reply_to_all(@receipt1,"Reply body")
464
+ @message1 = @receipt1.notification
465
+ @message2 = @receipt2.notification
466
466
  @recipients2 = Array.new
467
467
  @recipients2 << @entity1
468
468
  @recipients2 << @entity3
@@ -478,7 +478,7 @@ describe "Messages And Receipts" do
478
478
 
479
479
  it "should create proper mails" do
480
480
  #Sender Mail
481
- mail = Receipt.receiver(@entity2).message(@message2).first
481
+ mail = Receipt.receiver(@entity2).notification(@message2).first
482
482
  assert mail
483
483
  if mail
484
484
  mail.read.should==true
@@ -487,7 +487,7 @@ describe "Messages And Receipts" do
487
487
  end
488
488
  #Receiver Mails
489
489
  @recipients2.each do |receiver|
490
- mail = Receipt.receiver(receiver).message(@message2).first
490
+ mail = Receipt.receiver(receiver).notification(@message2).first
491
491
  assert mail
492
492
  if mail
493
493
  mail.read.should==false
@@ -545,8 +545,8 @@ describe "Messages And Receipts" do
545
545
  describe "message sending" do
546
546
 
547
547
  before do
548
- @mail1 = @entity1.send_message(@recipients,"Body","Subject")
549
- @message1 = @mail1.message
548
+ @receipt1 = @entity1.send_message(@recipients,"Body","Subject")
549
+ @message1 = @receipt1.notification
550
550
  end
551
551
 
552
552
  it "should create proper message" do
@@ -558,7 +558,7 @@ describe "Messages And Receipts" do
558
558
 
559
559
  it "should create proper mails" do
560
560
  #Sender Mail
561
- mail = Receipt.receiver(@entity1).message(@message1).first
561
+ mail = Receipt.receiver(@entity1).notification(@message1).first
562
562
  assert mail
563
563
  if mail
564
564
  mail.read.should==true
@@ -567,7 +567,7 @@ describe "Messages And Receipts" do
567
567
  end
568
568
  #Receiver Mails
569
569
  @recipients.each do |receiver|
570
- mail = Receipt.receiver(receiver).message(@message1).first
570
+ mail = Receipt.receiver(receiver).notification(@message1).first
571
571
  assert mail
572
572
  if mail
573
573
  mail.read.should==false
@@ -589,10 +589,10 @@ describe "Messages And Receipts" do
589
589
 
590
590
  describe "message replying to sender" do
591
591
  before do
592
- @mail1 = @entity1.send_message(@recipients,"Body","Subject")
593
- @mail2 = @entity2.reply_to_sender(@mail1,"Reply body")
594
- @message1 = @mail1.message
595
- @message2 = @mail2.message
592
+ @receipt1 = @entity1.send_message(@recipients,"Body","Subject")
593
+ @receipt2 = @entity2.reply_to_sender(@receipt1,"Reply body")
594
+ @message1 = @receipt1.notification
595
+ @message2 = @receipt2.notification
596
596
  end
597
597
 
598
598
  it "should create proper message" do
@@ -604,7 +604,7 @@ describe "Messages And Receipts" do
604
604
 
605
605
  it "should create proper mails" do
606
606
  #Sender Mail
607
- mail = Receipt.receiver(@entity2).message(@message2).first
607
+ mail = Receipt.receiver(@entity2).notification(@message2).first
608
608
  assert mail
609
609
  if mail
610
610
  mail.read.should==true
@@ -612,7 +612,7 @@ describe "Messages And Receipts" do
612
612
  mail.mailbox_type.should=="sentbox"
613
613
  end
614
614
  #Receiver Mail
615
- mail = Receipt.receiver(@entity1).message(@message2).first
615
+ mail = Receipt.receiver(@entity1).notification(@message2).first
616
616
  assert mail
617
617
  if mail
618
618
  mail.read.should==false
@@ -621,7 +621,7 @@ describe "Messages And Receipts" do
621
621
  end
622
622
 
623
623
  #No Receiver, No Mail
624
- mail = Receipt.receiver(@entity3).message(@message2).first
624
+ mail = Receipt.receiver(@entity3).notification(@message2).first
625
625
  assert mail.nil?
626
626
 
627
627
  end
@@ -641,10 +641,10 @@ describe "Messages And Receipts" do
641
641
 
642
642
  describe "message replying to all" do
643
643
  before do
644
- @mail1 = @entity1.send_message(@recipients,"Body","Subject")
645
- @mail2 = @entity2.reply_to_all(@mail1,"Reply body")
646
- @message1 = @mail1.message
647
- @message2 = @mail2.message
644
+ @receipt1 = @entity1.send_message(@recipients,"Body","Subject")
645
+ @receipt2 = @entity2.reply_to_all(@receipt1,"Reply body")
646
+ @message1 = @receipt1.notification
647
+ @message2 = @receipt2.notification
648
648
  @recipients2 = Array.new
649
649
  @recipients2 << @entity1
650
650
  @recipients2 << @entity3
@@ -660,7 +660,7 @@ describe "Messages And Receipts" do
660
660
 
661
661
  it "should create proper mails" do
662
662
  #Sender Mail
663
- mail = Receipt.receiver(@entity2).message(@message2).first
663
+ mail = Receipt.receiver(@entity2).notification(@message2).first
664
664
  assert mail
665
665
  if mail
666
666
  mail.read.should==true
@@ -669,7 +669,7 @@ describe "Messages And Receipts" do
669
669
  end
670
670
  #Receiver Mails
671
671
  @recipients2.each do |receiver|
672
- mail = Receipt.receiver(receiver).message(@message2).first
672
+ mail = Receipt.receiver(receiver).notification(@message2).first
673
673
  assert mail
674
674
  if mail
675
675
  mail.read.should==false
@@ -5,12 +5,12 @@ describe Conversation do
5
5
  before do
6
6
  @entity1 = Factory(:user)
7
7
  @entity2 = Factory(:user)
8
- @mail1 = @entity1.send_message(@entity2,"Body","Subject")
9
- @mail2 = @entity2.reply_to_all(@mail1,"Reply body 1")
10
- @mail3 = @entity1.reply_to_all(@mail2,"Reply body 2")
11
- @mail4 = @entity2.reply_to_all(@mail3,"Reply body 3")
12
- @message1 = @mail1.message
13
- @message4 = @mail4.message
8
+ @receipt1 = @entity1.send_message(@entity2,"Body","Subject")
9
+ @receipt2 = @entity2.reply_to_all(@receipt1,"Reply body 1")
10
+ @receipt3 = @entity1.reply_to_all(@receipt2,"Reply body 2")
11
+ @receipt4 = @entity2.reply_to_all(@receipt3,"Reply body 3")
12
+ @message1 = @receipt1.notification
13
+ @message4 = @receipt4.notification
14
14
  @conversation = @message1.conversation
15
15
  end
16
16
 
@@ -9,8 +9,8 @@ describe Mailbox do
9
9
  @receipt2 = @entity2.reply_to_all(@receipt1,"Reply body 1")
10
10
  @receipt3 = @entity1.reply_to_all(@receipt2,"Reply body 2")
11
11
  @receipt4 = @entity2.reply_to_all(@receipt3,"Reply body 3")
12
- @message1 = @receipt1.message
13
- @message4 = @receipt4.message
12
+ @message1 = @receipt1.notification
13
+ @message4 = @receipt4.notification
14
14
  @conversation = @message1.conversation
15
15
  end
16
16
 
@@ -9,16 +9,16 @@ describe Message do
9
9
  @receipt2 = @entity2.reply_to_all(@receipt1,"Reply body 1")
10
10
  @receipt3 = @entity1.reply_to_all(@receipt2,"Reply body 2")
11
11
  @receipt4 = @entity2.reply_to_all(@receipt3,"Reply body 3")
12
- @message1 = @receipt1.message
13
- @message4 = @receipt4.message
12
+ @message1 = @receipt1.notification
13
+ @message4 = @receipt4.notification
14
14
  @conversation = @message1.conversation
15
15
  end
16
16
 
17
17
  it "should have right recipients" do
18
- @receipt1.message.recipients.count.should==2
19
- @receipt2.message.recipients.count.should==2
20
- @receipt3.message.recipients.count.should==2
21
- @receipt4.message.recipients.count.should==2
18
+ @receipt1.notification.recipients.count.should==2
19
+ @receipt2.notification.recipients.count.should==2
20
+ @receipt3.notification.recipients.count.should==2
21
+ @receipt4.notification.recipients.count.should==2
22
22
  end
23
23
 
24
24
  end
@@ -0,0 +1,68 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ describe Message do
4
+
5
+ before do
6
+ @entity1 = Factory(:user)
7
+ @entity2 = Factory(:user)
8
+ @entity3 = Factory(:user)
9
+ end
10
+
11
+ it "should notify one user" do
12
+ @entity1.notify("Subject","Body")
13
+
14
+ #Check getting ALL receipts
15
+ @entity1.mailbox.receipts.size.should==1
16
+ receipt = @entity1.mailbox.receipts.first
17
+ notification = receipt.notification
18
+ notification.subject.should=="Subject"
19
+ notification.body.should=="Body"
20
+
21
+ #Check getting NOTIFICATION receipts only
22
+ @entity1.mailbox.notifications.size.should==1
23
+ receipt = @entity1.mailbox.notifications.first
24
+ notification = receipt.notification
25
+ notification.subject.should=="Subject"
26
+ notification.body.should=="Body"
27
+ end
28
+
29
+ it "should notify several users" do
30
+ Notification.notify_all([@entity1,@entity2,@entity3],"Subject","Body")
31
+
32
+ #Check getting ALL receipts
33
+ @entity1.mailbox.receipts.size.should==1
34
+ receipt = @entity1.mailbox.receipts.first
35
+ notification = receipt.notification
36
+ notification.subject.should=="Subject"
37
+ notification.body.should=="Body"
38
+ @entity2.mailbox.receipts.size.should==1
39
+ receipt = @entity2.mailbox.receipts.first
40
+ notification = receipt.notification
41
+ notification.subject.should=="Subject"
42
+ notification.body.should=="Body"
43
+ @entity3.mailbox.receipts.size.should==1
44
+ receipt = @entity3.mailbox.receipts.first
45
+ notification = receipt.notification
46
+ notification.subject.should=="Subject"
47
+ notification.body.should=="Body"
48
+
49
+ #Check getting NOTIFICATION receipts only
50
+ @entity1.mailbox.notifications.size.should==1
51
+ receipt = @entity1.mailbox.notifications.first
52
+ notification = receipt.notification
53
+ notification.subject.should=="Subject"
54
+ notification.body.should=="Body"
55
+ @entity2.mailbox.notifications.size.should==1
56
+ receipt = @entity2.mailbox.notifications.first
57
+ notification = receipt.notification
58
+ notification.subject.should=="Subject"
59
+ notification.body.should=="Body"
60
+ @entity3.mailbox.notifications.size.should==1
61
+ receipt = @entity3.mailbox.notifications.first
62
+ notification = receipt.notification
63
+ notification.subject.should=="Subject"
64
+ notification.body.should=="Body"
65
+
66
+ end
67
+
68
+ end
@@ -9,7 +9,7 @@ describe Receipt do
9
9
  end
10
10
 
11
11
  it "should belong to a message" do
12
- assert @mail1.message
12
+ assert @mail1.notification
13
13
  end
14
14
 
15
15
  it "should belong to a conversation" do
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: 3
4
+ hash: 1
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 14
10
- version: 0.0.14
9
+ - 15
10
+ version: 0.0.15
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-03-30 00:00:00 +02:00
18
+ date: 2011-04-12 00:00:00 +02:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -144,7 +144,7 @@ dependencies:
144
144
  version: 0.3.9
145
145
  type: :development
146
146
  version_requirements: *id008
147
- description: A Rails engine that allows any model to act as messageable, permitting it interchange messages with any other messageable model.
147
+ description: A Rails engine that allows any model to act as messageable, permitting it interchange messages with any other messageable model.It also supports sending system notifications to messageable models.
148
148
  email: ecasanovac@gmail.com
149
149
  executables: []
150
150
 
@@ -163,6 +163,7 @@ files:
163
163
  - app/models/conversation.rb
164
164
  - app/models/mailbox.rb
165
165
  - app/models/message.rb
166
+ - app/models/notification.rb
166
167
  - app/models/receipt.rb
167
168
  - lib/generators/mailboxer/install_generator.rb
168
169
  - lib/generators/mailboxer/templates/migration.rb
@@ -198,7 +199,7 @@ files:
198
199
  - spec/dummy/db/migrate/20110228120600_create_users.rb
199
200
  - spec/dummy/db/migrate/20110306002940_create_ducks.rb
200
201
  - spec/dummy/db/migrate/20110306015107_create_cylons.rb
201
- - spec/dummy/db/migrate/20110322000127_create_mailboxer.rb
202
+ - spec/dummy/db/migrate/20110407111612_create_mailboxer.rb
202
203
  - spec/dummy/db/schema.rb
203
204
  - spec/dummy/public/404.html
204
205
  - spec/dummy/public/422.html
@@ -223,6 +224,7 @@ files:
223
224
  - spec/models/mailbox_spec.rb
224
225
  - spec/models/mailboxer_models_messageable_spec.rb
225
226
  - spec/models/message_spec.rb
227
+ - spec/models/notification_spec.rb
226
228
  - spec/models/receipt_spec.rb
227
229
  - spec/spec_helper.rb
228
230
  has_rdoc: true