cleanup HITs when they have been reviewed

Andrew Cantino %!s(int64=11) %!d(string=hace) años
padre
commit
22e950214b
Se han modificado 2 ficheros con 12 adiciones y 1 borrados
  1. 2 1
      app/models/agents/human_task_agent.rb
  2. 10 0
      spec/models/agents/human_task_agent_spec.rb

+ 2 - 1
app/models/agents/human_task_agent.rb

@@ -169,7 +169,7 @@ module Agents
169 169
     def review_hits
170 170
       reviewable_hit_ids = RTurk::GetReviewableHITs.create.hit_ids
171 171
       my_reviewed_hit_ids = reviewable_hit_ids & (memory[:hits] || {}).keys.map(&:to_s)
172
-      log "MTurk reports the following HITs [#{reviewable_hit_ids.to_sentence}], of which I own [#{my_reviewed_hit_ids.to_sentence}]"
172
+      log "MTurk reports #{reviewable_hit_ids.length} HITs, of which I own [#{my_reviewed_hit_ids.to_sentence}]"
173 173
       my_reviewed_hit_ids.each do |hit_id|
174 174
         hit = RTurk::Hit.new(hit_id)
175 175
         assignments = hit.assignments
@@ -215,6 +215,7 @@ module Agents
215 215
           log "Event emitted with answer(s)", :outbound_event => event, :inbound_event => Event.find_by_id(memory[:hits][hit_id.to_sym])
216 216
 
217 217
           assignments.each(&:approve!)
218
+          hit.dispose!
218 219
 
219 220
           memory[:hits].delete(hit_id.to_sym)
220 221
         end

+ 10 - 0
spec/models/agents/human_task_agent_spec.rb

@@ -220,6 +220,14 @@ describe Agents::HumanTaskAgent do
220 220
       def max_assignments
221 221
         @options[:max_assignments] || 1
222 222
       end
223
+
224
+      def dispose!
225
+        @disposed = true
226
+      end
227
+
228
+      def disposed?
229
+        @disposed
230
+      end
223 231
     end
224 232
 
225 233
     class FakeAssignment
@@ -309,6 +317,7 @@ describe Agents::HumanTaskAgent do
309 317
         FakeAssignment.new(:status => "Submitted", :answers => {"sentiment"=>"happy", "feedback"=>"Take 2"})
310 318
       ]
311 319
       hit = FakeHit.new(:max_assignments => 2, :assignments => assignments)
320
+      hit.should_not be_disposed
312 321
       mock(RTurk::Hit).new("JH3132836336DHG") { hit }
313 322
 
314 323
       lambda {
@@ -316,6 +325,7 @@ describe Agents::HumanTaskAgent do
316 325
       }.should change { Event.count }.by(1)
317 326
 
318 327
       assignments.all? {|a| a.approved == true }.should be_true
328
+      hit.should be_disposed
319 329
 
320 330
       @checker.events.last.payload[:answers].should == [
321 331
         {:sentiment => "neutral", :feedback => ""},