Adding validations for the length of node tags, and the presence of the id (and versi...
[rails.git] / test / unit / user_preference_test.rb
1 require File.dirname(__FILE__) + '/../test_helper'
2
3 class UserPreferenceTest < ActiveSupport::TestCase
4   fixtures :users, :user_preferences
5
6   # This checks to make sure that there are two user preferences
7   # stored in the test database.
8   # This test needs to be updated for every addition/deletion from
9   # the fixture file
10   def test_check_count
11     assert_equal 2, UserPreference.count
12   end
13
14   # Checks that you cannot add a new preference, that is a duplicate
15   def test_add_duplicate_preference
16     up = user_preferences(:a)
17     newUP = UserPreference.new
18     newUP.user = users(:normal_user)
19     newUP.k = up.k
20     newUP.v = "some other value"
21     assert_not_equal newUP.v, up.v
22     assert_raise (ActiveRecord::StatementInvalid) {newUP.save}
23   end
24   
25   def test_check_valid_length
26     key = "k"
27     val = "v"
28     (1..255).each do |i|
29       up = UserPreference.new
30       up.user = users(:normal_user)
31       up.k = key*i
32       up.v = val*i
33       assert up.valid?
34       assert up.save!
35       resp = UserPreference.find(up.id)
36       assert_equal key*i, resp.k, "User preference with #{i} #{key} chars (i.e. #{key.length*i} bytes) fails"
37       assert_equal val*i, resp.v, "User preference with #{i} #{val} chars (i.e. #{val.length*i} bytes) fails"
38     end
39   end
40   
41   def test_check_invalid_length
42     key = "k"
43     val = "v"
44     [0,256].each do |i|
45       up = UserPreference.new
46       up.user = users(:normal_user)
47       up.k = key*i
48       up.v = val*i
49       assert_equal false, up.valid?
50       assert_raise(ActiveRecord::RecordInvalid) {up.save!}
51     end
52   end
53
54 end