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,7 +191,8 @@ namespace :test_api do | ||
191 | :wins_and_losses_is_even => "Verify that sum of wins and losses is even", | 191 | :wins_and_losses_is_even => "Verify that sum of wins and losses is even", |
192 | :wins_and_losses_equals_two_times_vote_count => "Verify that sum of wins and losses equals two times the vote count", | 192 | :wins_and_losses_equals_two_times_vote_count => "Verify that sum of wins and losses equals two times the vote count", |
193 | :check_scores_over_above_fifty => "Check that there are some scores above fifty and some below", | 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 | # dynamically create tasks for each question task | 198 | # dynamically create tasks for each question task |
@@ -207,6 +208,34 @@ namespace :test_api do | @@ -207,6 +208,34 @@ namespace :test_api do | ||
207 | end | 208 | end |
208 | end | 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 | def generated_prompts_on_each_side_are_equal(question) | 239 | def generated_prompts_on_each_side_are_equal(question) |
211 | error_message = "" | 240 | error_message = "" |
212 | success_message = "Number of generated prompts on left are equal to number generated on right" | 241 | success_message = "Number of generated prompts on left are equal to number generated on right" |