Commit d0e9f5a930f43d1a5f9085f4aa29d237c8e8a488

Authored by Dhruv Kapadia
1 parent d1af06d3

Fixing edge case when prompts are deactivated after being added to queue

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