Commit beb3b15fdf53fbd43b334b6040bf5604514e8747
1 parent
c99242f9
Exists in
master
and in
1 other branch
test ensures answered_appearances == skips + votes
Add test that checks per question instead of globally
Showing
1 changed file
with
27 additions
and
0 deletions
Show diff stats
lib/tasks/test_api.rake
@@ -339,6 +339,13 @@ namespace :test_api do | @@ -339,6 +339,13 @@ namespace :test_api do | ||
339 | successes << message | 339 | successes << message |
340 | end | 340 | end |
341 | 341 | ||
342 | + message, error_occurred = answered_appearances_equals_votes_and_skips(question) | ||
343 | + if error_occurred | ||
344 | + errors << message | ||
345 | + else | ||
346 | + successes << message | ||
347 | + end | ||
348 | + | ||
342 | 349 | ||
343 | message, error_occurred = check_each_choice_appears_within_n_stddevs(question) | 350 | message, error_occurred = check_each_choice_appears_within_n_stddevs(question) |
344 | if error_occurred | 351 | if error_occurred |
@@ -650,6 +657,26 @@ namespace :test_api do | @@ -650,6 +657,26 @@ namespace :test_api do | ||
650 | #end | 657 | #end |
651 | return error_message.blank? ? [success_message, false] : [error_message, true] | 658 | return error_message.blank? ? [success_message, false] : [error_message, true] |
652 | end | 659 | end |
660 | + | ||
661 | + desc "Ensure that a question has: answered_appearances == votes + skips" | ||
662 | + task :answered_appearances_equals_votes_and_skips => :environment do | ||
663 | + question = Question.find(ENV["question_id"]) | ||
664 | + puts answered_appearances_equals_votes_and_skips(question).inspect | ||
665 | + end | ||
666 | + | ||
667 | + def answered_appearances_equals_votes_and_skips(question) | ||
668 | + error_message = "" | ||
669 | + success_message = "All vote and skip objects have an associated appearance object" | ||
670 | + total_answered_appearances = Appearance.count(:conditions => ['answerable_id IS NOT NULL AND question_id = ?', question.id]) | ||
671 | + total_votes = question.votes.count | ||
672 | + total_skips = question.skips.count | ||
673 | + if (total_answered_appearances != total_votes + total_skips) | ||
674 | + error_message += "Question #{question.id}: answered_appearances = #{total_answered_appearances}, votes = #{total_votes}, skips = #{total_skips}" | ||
675 | + end | ||
676 | + | ||
677 | + | ||
678 | + return error_message.blank? ? [success_message, false] : [error_message, true] | ||
679 | + end | ||
653 | 680 | ||
654 | def ensure_all_votes_and_skips_have_unique_appearance | 681 | def ensure_all_votes_and_skips_have_unique_appearance |
655 | error_message = "" | 682 | error_message = "" |