test_api.rake 1.07 KB
namespace :test_api do

   task :all => [:question_vote_consistency]

   desc "Description here"
   task(:question_vote_consistency => :environment) do
      questions = Question.find(:all)

      error_msg = ""
      questions.each do |question|

	total_wins =0
	total_votes =0
	error_bool = false
	question.choices.each do |choice|
			
	    if choice.wins
	      total_wins += choice.wins
	      total_votes += choice.wins
	    end

	    if choice.losses
              total_votes += choice.losses
	    end
        end

	
	if (2*total_wins != total_votes)
		 error_msg += "Error 1:"
		 error_bool= true
	end

	if(total_votes % 2 != 0)
		error_msg += "Error 2:"
		error_bool= true
	end

	if(total_votes != question.votes_count)
		error_msg += "Error 3:"
		error_bool = true
	end

	if error_bool
	   error_msg += "Question #{question.id}: 2*wins = #{2*total_wins}, total votes = #{total_votes}, vote_count = #{question.votes_count}\n"
	end

	error_bool = false

     end
     
     if error_msg
     	CronMailer.deliver_error_message("Data in api check error!", error_msg)
     end

   end
end