require 'test_helper' class UserPreferenceTest < ActiveSupport::TestCase api_fixtures fixtures :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::RecordNotUnique) {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