Removed debugging code.
[rails.git] / test / unit / message_test.rb
1 require File.dirname(__FILE__) + '/../test_helper'
2
3 class MessageTest < Test::Unit::TestCase
4   fixtures :messages, :users
5
6   EURO = "\xe2\x82\xac" #euro symbol
7
8   # This needs to be updated when new fixtures are added
9   # or removed.
10   def test_check_message_count
11     assert_equal 2, Message.count
12   end
13
14   def test_check_empty_message_fails
15     message = Message.new
16     assert !message.valid?
17     assert message.errors.invalid?(:title)
18     assert message.errors.invalid?(:body)
19     assert message.errors.invalid?(:sent_on)
20     assert true, message.message_read
21   end
22   
23   def test_validating_msgs
24     message = messages(:one)
25     assert message.valid?
26     massage = messages(:two)
27     assert message.valid?
28   end
29   
30   def test_invalid_send_recipient
31     message = messages(:one)
32     message.sender = nil
33     message.recipient = nil
34     assert !message.valid?
35
36     assert_raise(ActiveRecord::RecordNotFound) { User.find(0) }
37     message.from_user_id = 0
38     message.to_user_id = 0
39     assert_raise(ActiveRecord::RecordInvalid) {message.save!}
40   end
41
42   def test_utf8_roundtrip
43     (1..255).each do |i|
44       assert_message_ok('c', i)
45       assert_message_ok(EURO, i)
46     end
47   end
48
49   def test_length_oversize
50     assert_raise(ActiveRecord::RecordInvalid) { make_message('c', 256).save! }
51     assert_raise(ActiveRecord::RecordInvalid) { make_message(EURO, 256).save! }
52   end
53
54   def make_message(char, count)
55     message = messages(:one)
56     message.title = char * count
57     return message
58   end
59
60   def assert_message_ok(char, count)
61     message = make_message(char, count)
62     assert message.save!
63     response = message.class.find(message.id) # stand by for some ├╝ber-generalisation...
64     assert_equal char * count, response.title, "message with #{count} #{char} chars (i.e. #{char.length*count} bytes) fails"
65   end
66
67 end