+ test "user preferences" do
+ user = create(:user)
+
+ # a user with no tokens
+ ability = Ability.new create(:user), nil
+ [:read, :read_one, :update, :update_one, :delete_one].each do |act|
+ assert ability.can? act, UserPreference
+ end
+
+ # A user with empty tokens
+ ability = Ability.new create(:user), tokens
+
+ [:read, :read_one, :update, :update_one, :delete_one].each do |act|
+ assert ability.cannot? act, UserPreference
+ end
+
+ ability = Ability.new user, tokens(:allow_read_prefs)
+
+ [:update, :update_one, :delete_one].each do |act|
+ assert ability.cannot? act, UserPreference
+ end
+
+ [:read, :read_one].each do |act|
+ assert ability.can? act, UserPreference
+ end
+
+ ability = Ability.new user, tokens(:allow_write_prefs)
+ [:read, :read_one].each do |act|
+ assert ability.cannot? act, UserPreference
+ end
+
+ [:update, :update_one, :delete_one].each do |act|
+ assert ability.can? act, UserPreference
+ end
+ end
+end
+
+class AdministratorAbilityTest < AbilityTest
+