Commit 5b655c2eae3862103346621b60cd0bc8fa05e8e8
1 parent
823f8d0d
Exists in
master
and in
1 other branch
add api test to verify session ids
appearances and their related actions (vote/skip) should have the same session
Showing
1 changed file
with
30 additions
and
1 deletions
Show diff stats
lib/tasks/test_api.rake
| ... | ... | @@ -191,7 +191,8 @@ namespace :test_api do |
| 191 | 191 | :wins_and_losses_is_even => "Verify that sum of wins and losses is even", |
| 192 | 192 | :wins_and_losses_equals_two_times_vote_count => "Verify that sum of wins and losses equals two times the vote count", |
| 193 | 193 | :check_scores_over_above_fifty => "Check that there are some scores above fifty and some below", |
| 194 | - :generated_prompts_on_each_side_are_equal => "Verify that count of generated prompts on each side is equal" | |
| 194 | + :generated_prompts_on_each_side_are_equal => "Verify that count of generated prompts on each side is equal", | |
| 195 | + :appearances_have_same_session_as_answer => "Appearances have the same session of their answer" | |
| 195 | 196 | } |
| 196 | 197 | |
| 197 | 198 | # dynamically create tasks for each question task |
| ... | ... | @@ -207,6 +208,34 @@ namespace :test_api do |
| 207 | 208 | end |
| 208 | 209 | end |
| 209 | 210 | |
| 211 | + def appearances_have_same_session_as_answer(question) | |
| 212 | + error_message = "" | |
| 213 | + success_message = "All appearances have the same session as their respective answer" | |
| 214 | + votes_sql = "SELECT appearances.id, appearances.voter_id, appearances.answerable_id, appearances.answerable_type, | |
| 215 | + votes.id AS votes_id, votes.voter_id AS votes_voter_id | |
| 216 | + FROM appearances | |
| 217 | + LEFT JOIN votes ON (votes.id = appearances.answerable_id) | |
| 218 | + WHERE appearances.answerable_type = 'Vote' | |
| 219 | + AND (appearances.voter_id <> votes.voter_id OR votes.voter_id IS NULL OR appearances.voter_id IS NULL) | |
| 220 | + AND appearances.question_id = #{question.id}" | |
| 221 | + bad_records = Vote.connection.select_all votes_sql | |
| 222 | + bad_records.each do |record| | |
| 223 | + error_message += "Appearance ##{record["id"]} session does not match the session of Vote ##{record["votes_id"]}\n" | |
| 224 | + end | |
| 225 | + skips_sql = "SELECT appearances.id, appearances.voter_id, appearances.answerable_id, appearances.answerable_type, | |
| 226 | + skips.id AS skips_id, skips.skipper_id AS skips_skipper_id | |
| 227 | + FROM appearances | |
| 228 | + LEFT JOIN skips ON (skips.id = appearances.answerable_id) | |
| 229 | + WHERE appearances.answerable_type = 'Skip' | |
| 230 | + AND (appearances.voter_id <> skips.skipper_id OR skips.skipper_id IS NULL OR appearances.voter_id IS NULL) | |
| 231 | + AND appearances.question_id = #{question.id}" | |
| 232 | + bad_records = Skip.connection.select_all skips_sql | |
| 233 | + bad_records.each do |record| | |
| 234 | + error_message += "Appearance ##{record["id"]} session does not match the session of Skip ##{record["votes_id"]}\n" | |
| 235 | + end | |
| 236 | + return error_message.blank? ? [success_message, false] : [error_message, true] | |
| 237 | + end | |
| 238 | + | |
| 210 | 239 | def generated_prompts_on_each_side_are_equal(question) |
| 211 | 240 | error_message = "" |
| 212 | 241 | success_message = "Number of generated prompts on left are equal to number generated on right" | ... | ... |