From 1a7197807a59bbe8e839d93b11b1db46a996b229 Mon Sep 17 00:00:00 2001 From: albert Date: Fri, 19 Feb 2010 18:04:43 -0500 Subject: [PATCH] added user feedback test --- app/models/user_feedback.rb | 9 +++++++++ test/factories/user_feedback.rb | 6 ++++++ test/unit/user_feedback_test.rb | 29 +++++++++++++++++++++++++---- 3 files changed, 40 insertions(+), 4 deletions(-) create mode 100644 test/factories/user_feedback.rb diff --git a/app/models/user_feedback.rb b/app/models/user_feedback.rb index 9a7b132b0..7bdbf136b 100644 --- a/app/models/user_feedback.rb +++ b/app/models/user_feedback.rb @@ -1,5 +1,14 @@ class UserFeedback < ActiveRecord::Base set_table_name "user_feedback" belongs_to :user + belongs_to :creator, :class_name => "User" attr_accessible :body, :user_id, :is_positive + validates_presence_of :user_id, :creator_id, :body + validate :creator_is_privileged + + def creator_is_privileged + if !creator.is_privileged? + errors[:creator] << "must be privileged" + end + end end diff --git a/test/factories/user_feedback.rb b/test/factories/user_feedback.rb new file mode 100644 index 000000000..cbc8136c9 --- /dev/null +++ b/test/factories/user_feedback.rb @@ -0,0 +1,6 @@ +Factory.define(:user_feedback) do |f| + f.user {|x| x.association(:user)} + f.creator {|x| x.association(:user)} + f.is_positive true + f.body {Faker::Lorem.words} +end diff --git a/test/unit/user_feedback_test.rb b/test/unit/user_feedback_test.rb index 949cfe1b4..2d19d6afe 100644 --- a/test/unit/user_feedback_test.rb +++ b/test/unit/user_feedback_test.rb @@ -1,8 +1,29 @@ -require 'test_helper' +require File.dirname(__FILE__) + '/../test_helper' class UserFeedbackTest < ActiveSupport::TestCase - # Replace this with your real tests. - test "the truth" do - assert true + context "A user's feedback" do + should "should not validate if the creator is not privileged" do + user = Factory.create(:user) + admin = Factory.create(:admin_user) + moderator = Factory.create(:moderator_user) + janitor = Factory.create(:janitor_user) + contributor = Factory.create(:contributor_user) + privileged = Factory.create(:privileged_user) + member = Factory.create(:user) + + feedback = Factory.create(:user_feedback, :user => user, :creator => admin) + assert(feedback.errors.empty?) + feedback = Factory.create(:user_feedback, :user => user, :creator => moderator) + assert(feedback.errors.empty?) + feedback = Factory.create(:user_feedback, :user => user, :creator => janitor) + assert(feedback.errors.empty?) + feedback = Factory.create(:user_feedback, :user => user, :creator => contributor) + assert(feedback.errors.empty?) + feedback = Factory.create(:user_feedback, :user => user, :creator => privileged) + assert(feedback.errors.empty?) + feedback = Factory.build(:user_feedback, :user => user, :creator => member) + feedback.save + assert(feedback.errors.any?) + end end end