rturk 2.8.0 → 2.9.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.markdown +9 -0
- data/lib/rturk/adapters/assignment.rb +4 -0
- data/lib/rturk/builders/qualification_builder.rb +5 -5
- data/lib/rturk/operations/approve_rejected_assignment.rb +16 -0
- data/lib/rturk/parsers/responses/get_hit_response.rb +7 -3
- data/lib/rturk/version.rb +1 -1
- data/spec/adapters/assignment_spec.rb +11 -2
- data/spec/builders/qualification_spec.rb +12 -6
- data/spec/fake_responses/approve_rejected_assignment.xml +6 -0
- data/spec/operations/approve_rejected_assignment_spec.rb +28 -0
- data/spec/operations/get_hit_spec.rb +3 -0
- metadata +4 -1
data/CHANGELOG.markdown
CHANGED
@@ -1,3 +1,12 @@
|
|
1
|
+
2.8.0
|
2
|
+
----
|
3
|
+
* Adding support for operation SearchQualificationTypes [hampei]
|
4
|
+
* Bumped to API version 2012-03-25
|
5
|
+
2.7.0
|
6
|
+
----
|
7
|
+
* Adding support for operation SearchQualificationTypes [denniskuczynski]
|
8
|
+
* Added ServiceUnavailable error type for detecting/handling HTTP
|
9
|
+
Service Unavailable errors [denniskuczynski]
|
1
10
|
2.6.0
|
2
11
|
-----
|
3
12
|
* Adding IntegerValue attribute to AssignQualification from Ross
|
@@ -16,6 +16,10 @@ module RTurk
|
|
16
16
|
RTurk::ApproveAssignment(:assignment_id => self.id, :feedback => feedback)
|
17
17
|
end
|
18
18
|
|
19
|
+
def approve_rejected!(feedback = nil)
|
20
|
+
RTurk::ApproveRejectedAssignment(:assignment_id => self.id, :feedback => feedback)
|
21
|
+
end
|
22
|
+
|
19
23
|
def reject!(reason)
|
20
24
|
RTurk::RejectAssignment(:assignment_id => self.id, :feedback => reason)
|
21
25
|
end
|
@@ -10,7 +10,7 @@ module RTurk
|
|
10
10
|
:lte => 'LessThanOrEqualTo', :eql => 'EqualTo', :not => 'NotEqualTo', :exists => 'Exists'}
|
11
11
|
|
12
12
|
TYPES = {:approval_rate => '000000000000000000L0', :submission_rate => '00000000000000000000',
|
13
|
-
:abandoned_rate => '
|
13
|
+
:abandoned_rate => '00000000000000000070', :return_rate => '000000000000000000E0',
|
14
14
|
:rejection_rate => '000000000000000000S0', :hits_approved => '00000000000000000040',
|
15
15
|
:adult => '00000000000000000060', :country => '00000000000000000071'}
|
16
16
|
|
@@ -20,9 +20,9 @@ module RTurk
|
|
20
20
|
# needs at the minimum
|
21
21
|
# type_id, :comparator => :value
|
22
22
|
# or
|
23
|
-
# type_id, true
|
23
|
+
# type_id, :exists => true
|
24
24
|
# or
|
25
|
-
# type_id,
|
25
|
+
# type_id, true
|
26
26
|
#
|
27
27
|
def initialize(type, opts)
|
28
28
|
# If the value is a string, we can assume it's the country since,
|
@@ -39,7 +39,7 @@ module RTurk
|
|
39
39
|
elsif opts == true || opts == false
|
40
40
|
qualifier[:IntegerValue] = opts == true ? 1 : 0
|
41
41
|
qualifier[:Comparator] = COMPARATORS[:eql]
|
42
|
-
|
42
|
+
end
|
43
43
|
qualifier
|
44
44
|
end
|
45
45
|
|
@@ -68,7 +68,7 @@ module RTurk
|
|
68
68
|
if v.to_s.match(/[A-Z]./)
|
69
69
|
qualifier[:Country] = v
|
70
70
|
else
|
71
|
-
qualifier[:IntegerValue] = v
|
71
|
+
qualifier[:IntegerValue] = v unless k == :exists
|
72
72
|
end
|
73
73
|
end
|
74
74
|
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module RTurk
|
2
|
+
class ApproveRejectedAssignment < Operation
|
3
|
+
|
4
|
+
attr_accessor :assignment_id, :feedback
|
5
|
+
require_params :assignment_id
|
6
|
+
|
7
|
+
def to_params
|
8
|
+
{'AssignmentId' => self.assignment_id,
|
9
|
+
'RequesterFeedback' => self.feedback}
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.ApproveRejectedAssignment(*args)
|
14
|
+
RTurk::ApproveRejectedAssignment.create(*args)
|
15
|
+
end
|
16
|
+
end
|
@@ -48,11 +48,12 @@ module RTurk
|
|
48
48
|
:expires_at, :assignments_duration, :reward_amount, :max_assignments,
|
49
49
|
:auto_approval_delay, :description, :reward, :lifetime, :annotation,
|
50
50
|
:similar_hits_count, :assignments_pending_count, :assignments_available_count,
|
51
|
-
:assignments_completed_count
|
51
|
+
:assignments_completed_count, :question_external_url, :qualification_requirement_comparator,
|
52
|
+
:qualification_requirement_value
|
52
53
|
|
53
54
|
def initialize(response)
|
54
55
|
@raw_xml = response.body
|
55
|
-
@xml = Nokogiri::XML(@raw_xml)
|
56
|
+
@xml = Nokogiri::XML(CGI.unescapeHTML(@raw_xml))
|
56
57
|
raise_errors
|
57
58
|
map_content(@xml.xpath('//HIT'),
|
58
59
|
:hit_id => 'HITId',
|
@@ -74,7 +75,10 @@ module RTurk
|
|
74
75
|
:similar_hits_count => 'NumberOfSimilarHITs',
|
75
76
|
:assignments_pending_count => 'NumberOfAssignmentsPending',
|
76
77
|
:assignments_available_count => 'NumberOfAssignmentsAvailable',
|
77
|
-
:assignments_completed_count => 'NumberOfAssignmentsCompleted'
|
78
|
+
:assignments_completed_count => 'NumberOfAssignmentsCompleted',
|
79
|
+
:question_external_url => 'Question/*/*[1]',
|
80
|
+
:qualification_requirement_comparator => 'QualificationRequirement/Comparator',
|
81
|
+
:qualification_requirement_value => 'QualificationRequirement/IntegerValue'
|
78
82
|
)
|
79
83
|
|
80
84
|
@keywords = @keywords.split(', ') if @keywords
|
data/lib/rturk/version.rb
CHANGED
@@ -4,10 +4,19 @@ describe RTurk::Assignment do
|
|
4
4
|
describe "#bonus_payments" do
|
5
5
|
it "should call GetBonusPayments with the assignment_id" do
|
6
6
|
result = mock('result', :payments => [1, 2, 3])
|
7
|
-
|
7
|
+
assignment = RTurk::Assignment.new(123456)
|
8
8
|
RTurk.should_receive(:GetBonusPayments).
|
9
9
|
with(:assignment_id => 123456).and_return(result)
|
10
|
-
|
10
|
+
assignment.bonus_payments.should == result.payments
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
describe "#approve_rejected!" do
|
15
|
+
it "should call ApproveRejectedAssignment with assignment_id and optional feedback" do
|
16
|
+
RTurk.should_receive(:ApproveRejectedAssignment).
|
17
|
+
with(:assignment_id => 123456, :feedback => "abcde")
|
18
|
+
assignment = RTurk::Assignment.new(123456)
|
19
|
+
assignment.approve_rejected!("abcde")
|
11
20
|
end
|
12
21
|
end
|
13
22
|
end
|
@@ -2,7 +2,7 @@ require File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec_helper'))
|
|
2
2
|
|
3
3
|
|
4
4
|
describe RTurk::Qualifications do
|
5
|
-
|
5
|
+
|
6
6
|
# Possible values coming back
|
7
7
|
# {"QualificationTypeId","Comparator", "IntegerValue", "LocaleValue.Country","RequiredToPreview"}
|
8
8
|
|
@@ -21,21 +21,27 @@ describe RTurk::Qualifications do
|
|
21
21
|
@qualification.to_params.should eql({"QualificationTypeId" => '000000000000000000L0',"Comparator" => 'GreaterThan',
|
22
22
|
"IntegerValue" => 90, "RequiredToPreview" => 'false'})
|
23
23
|
end
|
24
|
-
|
24
|
+
|
25
25
|
it "should build a qualification for boolean qualification" do
|
26
26
|
@qualification = RTurk::Qualification.new('00000000000000000060', true)
|
27
27
|
@qualification.to_params.should eql({"QualificationTypeId" => '00000000000000000060',"Comparator" => 'EqualTo',
|
28
28
|
"IntegerValue" => 1, "RequiredToPreview" => "true"})
|
29
29
|
end
|
30
|
-
|
30
|
+
|
31
31
|
it "should build a qualification for country qualification" do
|
32
32
|
@qualification = RTurk::Qualification.new('00000000000000000071', :eql => 'PH')
|
33
33
|
@qualification.to_params.should eql({"QualificationTypeId" => '00000000000000000071',"Comparator" => 'EqualTo',
|
34
34
|
"LocaleValue.Country" => 'PH', "RequiredToPreview" => "true"})
|
35
35
|
end
|
36
|
-
|
36
|
+
|
37
|
+
it "should build a qualification for existence qualification" do
|
38
|
+
@qualification = RTurk::Qualification.new('00000000000000000071', :exists => true)
|
39
|
+
@qualification.to_params.should eql({"QualificationTypeId" => '00000000000000000071',"Comparator" => 'Exists',
|
40
|
+
"RequiredToPreview" => "true"})
|
41
|
+
end
|
42
|
+
|
37
43
|
context 'passing in symbols representing a TypeID' do
|
38
|
-
|
44
|
+
|
39
45
|
it "should build a qualification for Approval rate" do
|
40
46
|
@qualification = RTurk::Qualification.new(:approval_rate, :gt => 90)
|
41
47
|
@qualification.to_params.should eql({"QualificationTypeId" => '000000000000000000L0',"Comparator" => 'GreaterThan',
|
@@ -53,7 +59,7 @@ describe RTurk::Qualifications do
|
|
53
59
|
@qualification.to_params.should eql({"QualificationTypeId" => '00000000000000000071',"Comparator" => 'EqualTo',
|
54
60
|
"LocaleValue.Country" => 'PH', "RequiredToPreview" => "true"})
|
55
61
|
end
|
56
|
-
|
62
|
+
|
57
63
|
end
|
58
64
|
|
59
65
|
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec_helper'))
|
2
|
+
|
3
|
+
describe RTurk::ApproveRejectedAssignment do
|
4
|
+
|
5
|
+
before(:all) do
|
6
|
+
aws = YAML.load(File.open(File.join(SPEC_ROOT, 'mturk.yml')))
|
7
|
+
RTurk.setup(aws['AWSAccessKeyId'], aws['AWSAccessKey'], :sandbox => true)
|
8
|
+
faker('approve_rejected_assignment', :operation => 'ApproveRejectedAssignment')
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should ensure required params" do
|
12
|
+
lambda{RTurk::ApproveRejectedAssignment()}.should raise_error RTurk::MissingParameters
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should successfully request the operation" do
|
16
|
+
RTurk::Requester.should_receive(:request).once.with(
|
17
|
+
hash_including('Operation' => 'ApproveRejectedAssignment'))
|
18
|
+
RTurk::ApproveRejectedAssignment(:assignment_id => "123456789") rescue RTurk::InvalidRequest
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should parse and return the result" do
|
22
|
+
RTurk::ApproveRejectedAssignment(:assignment_id => "123456789").elements.should eql(
|
23
|
+
{"ApproveRejectedAssignmentResult"=>{"Request"=>{"IsValid"=>"True"}}}
|
24
|
+
)
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
|
@@ -11,6 +11,9 @@ describe RTurk::GetHIT do
|
|
11
11
|
response.type_id.should eql('YGKZ2W5X6YFZ08ZRXXZZ')
|
12
12
|
response.auto_approval_delay.should eql(3600)
|
13
13
|
response.status.should eql('Reviewable')
|
14
|
+
response.question_external_url.should eql("http://s3.amazonaws.com/mpercival.com/newtweet.html?id=foo")
|
15
|
+
response.qualification_requirement_comparator.should eql("GreaterThan")
|
16
|
+
response.qualification_requirement_value.should eql(90)
|
14
17
|
end
|
15
18
|
|
16
19
|
it "should not specify the ResponseGroup by default" do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rturk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.9.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -202,6 +202,7 @@ files:
|
|
202
202
|
- lib/rturk/macros.rb
|
203
203
|
- lib/rturk/operation.rb
|
204
204
|
- lib/rturk/operations/approve_assignment.rb
|
205
|
+
- lib/rturk/operations/approve_rejected_assignment.rb
|
205
206
|
- lib/rturk/operations/assign_qualification.rb
|
206
207
|
- lib/rturk/operations/block_worker.rb
|
207
208
|
- lib/rturk/operations/create_hit.rb
|
@@ -268,6 +269,7 @@ files:
|
|
268
269
|
- spec/builders/qualifications_spec.rb
|
269
270
|
- spec/builders/question_spec.rb
|
270
271
|
- spec/fake_responses/approve_assignment.xml
|
272
|
+
- spec/fake_responses/approve_rejected_assignment.xml
|
271
273
|
- spec/fake_responses/assign_qualification.xml
|
272
274
|
- spec/fake_responses/block_worker.xml
|
273
275
|
- spec/fake_responses/create_hit.xml
|
@@ -302,6 +304,7 @@ files:
|
|
302
304
|
- spec/fake_responses/update_qualification_type.xml
|
303
305
|
- spec/mturk.sample.yml
|
304
306
|
- spec/operations/approve_assignment_spec.rb
|
307
|
+
- spec/operations/approve_rejected_assignment_spec.rb
|
305
308
|
- spec/operations/assign_qualification_spec.rb
|
306
309
|
- spec/operations/block_worker_spec.rb
|
307
310
|
- spec/operations/create_hit_spec.rb
|