From 7642b5a9ab180aaedee24c6b4e38eb28cafd00b3 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Lang Date: Sun, 14 Jun 2009 09:19:20 +0000 Subject: [PATCH] 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 --- app/models/message.rb | 4 ++++ .../20090614091200_fix_messages_sticky_null.rb | 9 +++++++++ test/unit/message_test.rb | 15 +++++++++++++++ 3 files changed, 28 insertions(+) create mode 100644 db/migrate/20090614091200_fix_messages_sticky_null.rb 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