From ee9e4c6e120b4ea1e35d11517ff789f4047317ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20Nie=C5=82acny?= Date: Wed, 29 Aug 2012 13:10:29 +0200 Subject: [PATCH] Refactor delete and restore methods Update specs for restore/delete message by the user, which is neither the sender nor the receiver --- lib/acts-as-messageable/model.rb | 32 +++++++++++++++++--------------- spec/acts-as-messageable_spec.rb | 9 +++++++++ 2 files changed, 26 insertions(+), 15 deletions(-) diff --git a/lib/acts-as-messageable/model.rb b/lib/acts-as-messageable/model.rb index 77a18b6ea..d444b60c1 100644 --- a/lib/acts-as-messageable/model.rb +++ b/lib/acts-as-messageable/model.rb @@ -123,30 +123,32 @@ def reply_to(message, *args) def delete_message(message) current_user = self - if message.to == current_user - unless message.recipient_delete - message.update_attributes!(:recipient_delete => true) + case current_user + when message.to + attribute = message.recipient_delete ? :recipient_permanent_delete : :recipient_delete + when message.from + attribute = message.sender_delete ? :sender_permanent_delete : :sender_delete else - message.update_attributes!(:recipient_permanent_delete => true) - end - elsif message.from == current_user - unless message.sender_delete - message.update_attributes!(:sender_delete => true) - else - message.update_attributes!(:sender_permanent_delete => true) - end + raise "#{current_user} can't delete this message" end + + message.update_attributes!(attribute => true) end # Mark message as restored def restore_message(message) current_user = self - if message.to == current_user - message.update_attributes!(:recipient_delete => false) - elsif message.from == current_user - message.update_attributes!(:sender_delete => false) + case current_user + when message.to + attribute = :recipient_delete + when message.from + attribute = :sender_delete + else + raise "#{current_user} can't delete this message" end + + message.update_attributes!(attribute => false) end end end diff --git a/spec/acts-as-messageable_spec.rb b/spec/acts-as-messageable_spec.rb index 60f472d70..81330b158 100644 --- a/spec/acts-as-messageable_spec.rb +++ b/spec/acts-as-messageable_spec.rb @@ -73,6 +73,7 @@ end describe "delete messages" do + it "bob should have one deleted message from alice" do @bob.messages.process do |m| m.delete @@ -112,6 +113,10 @@ @bob.sent_messages.count.should == 1 end + + it "pat should not able to delete message" do + lambda { @pat.delete_message(@message) }.should raise_error + end end describe "restore message" do @@ -127,6 +132,10 @@ @alice.deleted_messages.process { |m| m.restore } @alice.received_messages.count.should == 1 end + + it "pat should not able to restore message" do + lambda { @pat.restore_message(@message) }.should raise_error + end end describe "read/unread feature" do