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,8 +413,11 @@ class Question < ActiveRecord::Base
413 end 413 end
414 414
415 def pop_prompt_queue 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 end 421 end
419 422
420 def record_prompt_cache_miss 423 def record_prompt_cache_miss
spec/models/question_spec.rb
@@ -199,6 +199,15 @@ describe Question do @@ -199,6 +199,15 @@ describe Question do
199 199
200 @catchup_q.pop_prompt_queue.should == nil 200 @catchup_q.pop_prompt_queue.should == nil
201 end 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 end 211 end
203 212
204 context "exporting data" do 213 context "exporting data" do