summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2009-06-14 09:19:20 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2009-06-14 09:19:20 +0000
commit7642b5a9ab180aaedee24c6b4e38eb28cafd00b3 (patch)
treed7fb81525f680c62019c425ae29ecde4149e7b7f
parent5e76040256c4a86485caf010cc9c9c8329e7aafa (diff)
downloadredmine-7642b5a9ab180aaedee24c6b4e38eb28cafd00b3.tar.gz
redmine-7642b5a9ab180aaedee24c6b4e38eb28cafd00b3.zip
Fixed: editing a message may cause sticky attribute to be NULL (#3356).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@2787 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r--app/models/message.rb4
-rw-r--r--db/migrate/20090614091200_fix_messages_sticky_null.rb9
-rw-r--r--test/unit/message_test.rb15
3 files changed, 28 insertions, 0 deletions
diff --git a/app/models/message.rb b/app/models/message.rb
index 92bcb1275..f37413286 100644
--- a/app/models/message.rb
+++ b/app/models/message.rb
@@ -66,6 +66,10 @@ class Message < ActiveRecord::Base
board.reset_counters!
end
+ def sticky=(arg)
+ write_attribute :sticky, (arg == true || arg.to_s == '1' ? 1 : 0)
+ end
+
def sticky?
sticky == 1
end
diff --git a/db/migrate/20090614091200_fix_messages_sticky_null.rb b/db/migrate/20090614091200_fix_messages_sticky_null.rb
new file mode 100644
index 000000000..cbe741732
--- /dev/null
+++ b/db/migrate/20090614091200_fix_messages_sticky_null.rb
@@ -0,0 +1,9 @@
+class FixMessagesStickyNull < ActiveRecord::Migration
+ def self.up
+ Message.update_all('sticky = 0', 'sticky IS NULL')
+ end
+
+ def self.down
+ # nothing to do
+ end
+end
diff --git a/test/unit/message_test.rb b/test/unit/message_test.rb
index d88e98bcf..09857fbc9 100644
--- a/test/unit/message_test.rb
+++ b/test/unit/message_test.rb
@@ -128,4 +128,19 @@ class MessageTest < Test::Unit::TestCase
author.roles_for_project(message.project).first.remove_permission!(:delete_own_messages)
assert !message.reload.destroyable_by?(author.reload)
end
+
+ def test_set_sticky
+ message = Message.new
+ assert_equal 0, message.sticky
+ message.sticky = nil
+ assert_equal 0, message.sticky
+ message.sticky = false
+ assert_equal 0, message.sticky
+ message.sticky = true
+ assert_equal 1, message.sticky
+ message.sticky = '0'
+ assert_equal 0, message.sticky
+ message.sticky = '1'
+ assert_equal 1, message.sticky
+ end
end