Adding validations for the length of node tags, and the presence of the id (and versi...
[rails.git] / test / unit / user_preference_test.rb
index bd4e800150c89d8200c20855ee78919cfeff4b98..2118fcd395df252d0c40d6cc6188cb35109b650c 100644 (file)
@@ -1,8 +1,54 @@
 require File.dirname(__FILE__) + '/../test_helper'
 
 class UserPreferenceTest < ActiveSupport::TestCase
-  # Replace this with your real tests.
-  def test_truth
-    assert true
+  fixtures :users, :user_preferences
+
+  # This checks to make sure that there are two user preferences
+  # stored in the test database.
+  # This test needs to be updated for every addition/deletion from
+  # the fixture file
+  def test_check_count
+    assert_equal 2, UserPreference.count
+  end
+
+  # Checks that you cannot add a new preference, that is a duplicate
+  def test_add_duplicate_preference
+    up = user_preferences(:a)
+    newUP = UserPreference.new
+    newUP.user = users(:normal_user)
+    newUP.k = up.k
+    newUP.v = "some other value"
+    assert_not_equal newUP.v, up.v
+    assert_raise (ActiveRecord::StatementInvalid) {newUP.save}
   end
+  
+  def test_check_valid_length
+    key = "k"
+    val = "v"
+    (1..255).each do |i|
+      up = UserPreference.new
+      up.user = users(:normal_user)
+      up.k = key*i
+      up.v = val*i
+      assert up.valid?
+      assert up.save!
+      resp = UserPreference.find(up.id)
+      assert_equal key*i, resp.k, "User preference with #{i} #{key} chars (i.e. #{key.length*i} bytes) fails"
+      assert_equal val*i, resp.v, "User preference with #{i} #{val} chars (i.e. #{val.length*i} bytes) fails"
+    end
+  end
+  
+  def test_check_invalid_length
+    key = "k"
+    val = "v"
+    [0,256].each do |i|
+      up = UserPreference.new
+      up.user = users(:normal_user)
+      up.k = key*i
+      up.v = val*i
+      assert_equal false, up.valid?
+      assert_raise(ActiveRecord::RecordInvalid) {up.save!}
+    end
+  end
+
 end