Commit 9cbb9a377d85ca0ca4473fba6d053b751883fd3a
1 parent
842b177c
Exists in
master
and in
1 other branch
add test to check for prompt_id mismatch
check for prompt_id mismatch between appearances and their related votes
Showing
1 changed file
with
25 additions
and
0 deletions
Show diff stats
lib/tasks/test_api.rake
| ... | ... | @@ -3,6 +3,25 @@ namespace :test_api do |
| 3 | 3 | desc "Run all API tests" |
| 4 | 4 | task :all => [:question_vote_consistency,:generate_density_information] |
| 5 | 5 | |
| 6 | + desc "Ensure all appearance and votes have matching prompt_ids" | |
| 7 | + task :verify_appearance_vote_prompt_ids => :environment do | |
| 8 | + puts verify_appearance_vote_prompt_ids().inspect | |
| 9 | + end | |
| 10 | + def verify_appearance_vote_prompt_ids | |
| 11 | + bad_records = Vote.connection.select_all " | |
| 12 | + SELECT votes.id | |
| 13 | + FROM votes LEFT JOIN appearances | |
| 14 | + ON (votes.id = appearances.answerable_id | |
| 15 | + AND appearances.answerable_type = 'Vote') | |
| 16 | + WHERE votes.prompt_id <> appearances.prompt_id" | |
| 17 | + success_message = "Appearance and vote prompt_ids match" | |
| 18 | + error_message = bad_records.map do |record| | |
| 19 | + "Vote ##{record["id"]} has a different prompt_id than its appearance." | |
| 20 | + end | |
| 21 | + error_message.join "\n" | |
| 22 | + return error_message.blank? ? [success_message, false] : [error_message, true] | |
| 23 | + end | |
| 24 | + | |
| 6 | 25 | desc "Ensure that all choices have 0 <= score <= 100" |
| 7 | 26 | task :verify_range_of_choices_scores => :environment do |
| 8 | 27 | puts verify_range_of_choices_scores().inspect |
| ... | ... | @@ -365,6 +384,12 @@ namespace :test_api do |
| 365 | 384 | else |
| 366 | 385 | successes << message |
| 367 | 386 | end |
| 387 | + message, error_occurred = verify_appearance_vote_prompt_ids | |
| 388 | + if error_occurred | |
| 389 | + errors << message | |
| 390 | + else | |
| 391 | + successes << message | |
| 392 | + end | |
| 368 | 393 | |
| 369 | 394 | email_text = "Conducted the following tests on API data and found the following results\n" + "For each of the #{questions.length} questions in the database: \n" |
| 370 | 395 | errors.each do |e| | ... | ... |