Commit d0e9f5a930f43d1a5f9085f4aa29d237c8e8a488
1 parent
d1af06d3
Exists in
master
and in
1 other branch
Fixing edge case when prompts are deactivated after being added to queue
Showing
2 changed files
with
14 additions
and
2 deletions
Show diff stats
app/models/question.rb
... | ... | @@ -413,8 +413,11 @@ class Question < ActiveRecord::Base |
413 | 413 | end |
414 | 414 | |
415 | 415 | def pop_prompt_queue |
416 | - prompt_id = $redis.lpop(self.pq_key) | |
417 | - prompt = prompt_id.nil? ? nil : Prompt.find(prompt_id.to_i) | |
416 | + begin | |
417 | + prompt_id = $redis.lpop(self.pq_key) | |
418 | + prompt = prompt_id.nil? ? nil : Prompt.find(prompt_id.to_i) | |
419 | + end until (prompt.nil? || prompt.active?) | |
420 | + prompt | |
418 | 421 | end |
419 | 422 | |
420 | 423 | def record_prompt_cache_miss | ... | ... |
spec/models/question_spec.rb
... | ... | @@ -199,6 +199,15 @@ describe Question do |
199 | 199 | |
200 | 200 | @catchup_q.pop_prompt_queue.should == nil |
201 | 201 | end |
202 | + it "should not return prompts from queue that are deactivated" do | |
203 | + @catchup_q.clear_prompt_queue | |
204 | + @catchup_q.pop_prompt_queue.should == nil | |
205 | + prompt1 = @catchup_q.add_prompt_to_queue | |
206 | + | |
207 | + prompt = Prompt.find(prompt1) | |
208 | + prompt.left_choice.deactivate! | |
209 | + @catchup_q.choose_prompt.should_not == prompt1 | |
210 | + end | |
202 | 211 | end |
203 | 212 | |
204 | 213 | context "exporting data" do | ... | ... |