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