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 = "" |