rturk 1.0.5 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitmodules +3 -0
- data/.yardoc +0 -0
- data/README.markdown +49 -29
- data/Rakefile +53 -0
- data/TODO.markdown +3 -0
- data/VERSION +1 -1
- data/examples/blank_slate.rb +21 -4
- data/examples/create_hit.rb +19 -0
- data/examples/newtweet.html +0 -1
- data/examples/review_answer.rb +18 -5
- data/lib/rturk.rb +33 -6
- data/lib/rturk/adapters/answers.rb +38 -0
- data/lib/rturk/adapters/assignment.rb +75 -0
- data/lib/rturk/adapters/hit.rb +97 -0
- data/lib/rturk/builders/qualification_builder.rb +68 -0
- data/lib/rturk/builders/qualifications_builder.rb +43 -0
- data/lib/rturk/builders/question_builder.rb +51 -0
- data/lib/rturk/errors.rb +5 -0
- data/lib/rturk/logger.rb +20 -0
- data/lib/rturk/macros.rb +35 -0
- data/lib/rturk/operation.rb +86 -0
- data/lib/rturk/operations/approve_assignment.rb +28 -0
- data/lib/rturk/operations/create_hit.rb +77 -0
- data/lib/rturk/operations/disable_hit.rb +19 -0
- data/lib/rturk/operations/dispose_hit.rb +19 -0
- data/lib/rturk/operations/force_expire_hit.rb +18 -0
- data/lib/rturk/operations/get_account_balance.rb +15 -0
- data/lib/rturk/operations/get_assignments_for_hit.rb +24 -0
- data/lib/rturk/operations/get_hit.rb +21 -0
- data/lib/rturk/operations/get_reviewable_hits.rb +23 -0
- data/lib/rturk/operations/grant_bonus.rb +26 -0
- data/lib/rturk/operations/reject_assignment.rb +23 -0
- data/lib/rturk/requester.rb +58 -76
- data/lib/rturk/response.rb +58 -0
- data/lib/rturk/responses/create_hit_response.rb +33 -0
- data/lib/rturk/responses/get_account_balance_response.rb +11 -0
- data/lib/rturk/responses/get_assignments_for_hit_response.rb +43 -0
- data/lib/rturk/responses/get_hit_response.rb +80 -0
- data/lib/rturk/responses/get_reviewable_hits_response.rb +33 -0
- data/lib/rturk/utilities.rb +19 -1
- data/lib/rturk/xml_utilities.rb +23 -0
- data/rturk.gemspec +143 -0
- data/spec/adapters/answers_spec.rb +27 -0
- data/spec/adapters/assignment_spec.rb +0 -0
- data/spec/adapters/hit_spec.rb +46 -0
- data/spec/builders/qualification_spec.rb +53 -0
- data/spec/builders/qualifications_spec.rb +30 -0
- data/spec/builders/question_spec.rb +46 -0
- data/spec/fake_responses/approve_assignment.xml +5 -0
- data/spec/fake_responses/create_hit.xml +12 -0
- data/spec/fake_responses/disable_hit.xml +5 -0
- data/spec/fake_responses/dispose_hit.xml +5 -0
- data/spec/fake_responses/force_expire_hit.xml +5 -0
- data/spec/fake_responses/get_account_balance.xml +10 -0
- data/spec/fake_responses/get_assignments.xml +35 -0
- data/spec/fake_responses/get_hit.xml +41 -0
- data/spec/fake_responses/get_reviewable_hits.xml +17 -0
- data/spec/fake_responses/grant_bonus.xml +5 -0
- data/spec/fake_responses/invalid_credentials.xml +12 -0
- data/spec/fake_responses/reject_assignment.xml +5 -0
- data/spec/operations/approve_assignment_spec.rb +27 -0
- data/spec/operations/create_hit_spec.rb +66 -0
- data/spec/operations/disable_hit_spec.rb +26 -0
- data/spec/operations/dispose_hit_spec.rb +26 -0
- data/spec/operations/force_expire_hit_spec.rb +26 -0
- data/spec/operations/get_account_balance_spec.rb +15 -0
- data/spec/operations/get_assignments_spec.rb +26 -0
- data/spec/operations/get_hit_spec.rb +18 -0
- data/spec/operations/get_reviewable_hits_spec.rb +0 -0
- data/spec/operations/grant_bonus_spec.rb +32 -0
- data/spec/operations/reject_assignment_spec.rb +26 -0
- data/spec/requester_spec.rb +7 -18
- data/spec/response_spec.rb +48 -0
- data/spec/rturk_spec.rb +27 -0
- data/spec/spec_helper.rb +28 -3
- data/spec/tmp +2 -0
- data/spec/xml_parse_spec.rb +32 -0
- metadata +94 -34
- data/examples/external_page.rb +0 -33
- data/lib/rturk/answer.rb +0 -20
- data/lib/rturk/custom_operations.rb +0 -80
- data/lib/rturk/external_question_builder.rb +0 -22
- data/spec/answer_spec.rb +0 -24
- data/spec/external_question_spec.rb +0 -27
@@ -0,0 +1,30 @@
|
|
1
|
+
require File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec_helper'))
|
2
|
+
|
3
|
+
|
4
|
+
describe RTurk::Qualifications do
|
5
|
+
|
6
|
+
before(:each) do
|
7
|
+
@qualifications = RTurk::Qualifications.new
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should build a qualification set with multiple qualifications" do
|
11
|
+
@qualifications.add :approval_rate, {:gt => 80}
|
12
|
+
@qualifications.approval_rate(:lt => 90)
|
13
|
+
@qualifications.to_params['QualificationRequirement.1.Comparator'].should == 'GreaterThan'
|
14
|
+
@qualifications.to_params['QualificationRequirement.2.IntegerValue'].should == 90
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should build a qualification set with booleans" do
|
18
|
+
@qualifications.add :adult, true
|
19
|
+
@qualifications.to_params['QualificationRequirement.1.Comparator'].should == 'EqualTo'
|
20
|
+
@qualifications.to_params['QualificationRequirement.1.IntegerValue'].should == 1
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should build a qualification set with a country condition" do
|
24
|
+
@qualifications.add :adult, true
|
25
|
+
@qualifications.country :eql => 'US'
|
26
|
+
@qualifications.to_params['QualificationRequirement.2.Comparator'].should == 'EqualTo'
|
27
|
+
@qualifications.to_params['QualificationRequirement.2.LocaleValue.Country'].should == 'US'
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
require File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec_helper'))
|
2
|
+
require 'cgi'
|
3
|
+
|
4
|
+
describe RTurk::Question do
|
5
|
+
|
6
|
+
before(:all) do
|
7
|
+
end
|
8
|
+
|
9
|
+
it "should build a question" do
|
10
|
+
question = RTurk::Question.new('http://mpercival.com')
|
11
|
+
question.url.should == 'http://mpercival.com'
|
12
|
+
question.frame_height.should == 400
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should build a question " do
|
16
|
+
question = RTurk::Question.new('http://mpercival.com', :frame_height => 500, :chapter => 1)
|
17
|
+
question.params[:chapter] = 2
|
18
|
+
question.url.should == 'http://mpercival.com?chapter=2'
|
19
|
+
question.frame_height.should == 500
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should build a question with params" do
|
23
|
+
params = RTurk::Question.new('http://google.com/', :id => 'foo').to_params
|
24
|
+
CGI.unescape(params).should ==
|
25
|
+
<<-XML
|
26
|
+
<ExternalQuestion xmlns="http://mechanicalturk.amazonaws.com/AWSMechanicalTurkDataSchemas/2006-07-14/ExternalQuestion.xsd">
|
27
|
+
<ExternalURL>http://google.com/?id=foo</ExternalURL>
|
28
|
+
<FrameHeight>400</FrameHeight>
|
29
|
+
</ExternalQuestion>
|
30
|
+
XML
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should build a question without params" do
|
34
|
+
params = RTurk::Question.new('http://google.com/').to_params
|
35
|
+
CGI.unescape(params).should ==
|
36
|
+
<<-XML
|
37
|
+
<ExternalQuestion xmlns="http://mechanicalturk.amazonaws.com/AWSMechanicalTurkDataSchemas/2006-07-14/ExternalQuestion.xsd">
|
38
|
+
<ExternalURL>http://google.com/</ExternalURL>
|
39
|
+
<FrameHeight>400</FrameHeight>
|
40
|
+
</ExternalQuestion>
|
41
|
+
XML
|
42
|
+
end
|
43
|
+
|
44
|
+
|
45
|
+
|
46
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<CreateHITResponse>
|
2
|
+
<OperationRequest>
|
3
|
+
<RequestId>ece2785b-6292-4b12-a60e-4c34847a7916</RequestId>
|
4
|
+
</OperationRequest>
|
5
|
+
<HIT>
|
6
|
+
<Request>
|
7
|
+
<IsValid>True</IsValid>
|
8
|
+
</Request>
|
9
|
+
<HITId>GBHZVQX3EHXZ2AYDY2T0</HITId>
|
10
|
+
<HITTypeId>NYVZTQ1QVKJZXCYZCZVZ</HITTypeId>
|
11
|
+
</HIT>
|
12
|
+
</CreateHITResponse>
|
@@ -0,0 +1,35 @@
|
|
1
|
+
<?xml version="1.0"?>
|
2
|
+
<GetAssignmentsForHITResponse>
|
3
|
+
<OperationRequest>
|
4
|
+
<RequestId>a964d1f8-d315-4bbb-9ab6-692625d662ff</RequestId>
|
5
|
+
</OperationRequest>
|
6
|
+
<GetAssignmentsForHITResult>
|
7
|
+
<Request>
|
8
|
+
<IsValid>True</IsValid>
|
9
|
+
</Request>
|
10
|
+
<NumResults>1</NumResults>
|
11
|
+
<TotalNumResults>1</TotalNumResults>
|
12
|
+
<PageNumber>1</PageNumber>
|
13
|
+
<Assignment>
|
14
|
+
<AssignmentId>32A8TDZQEZYRV84XKZ4ZBT6JT05DKJRZ1BC42YSZ</AssignmentId>
|
15
|
+
<WorkerId>ADOJP7RNRYAFG</WorkerId>
|
16
|
+
<HITId>32A8TDZQEZYRV84XKZ4Z</HITId>
|
17
|
+
<AssignmentStatus>Submitted</AssignmentStatus>
|
18
|
+
<AutoApprovalTime>2009-11-25T05:17:32Z</AutoApprovalTime>
|
19
|
+
<AcceptTime>2009-10-26T05:17:18Z</AcceptTime>
|
20
|
+
<SubmitTime>2009-10-26T05:17:32Z</SubmitTime>
|
21
|
+
<Answer><?xml version="1.0" encoding="UTF-8"?>
|
22
|
+
<QuestionFormAnswers xmlns="http://mechanicalturk.amazonaws.com/AWSMechanicalTurkDataSchemas/2005-10-01/QuestionFormAnswers.xsd">
|
23
|
+
<Answer>
|
24
|
+
<QuestionIdentifier>tweet</QuestionIdentifier>
|
25
|
+
<FreeText>This is my tweet!</FreeText>
|
26
|
+
</Answer>
|
27
|
+
<Answer>
|
28
|
+
<QuestionIdentifier>Submit</QuestionIdentifier>
|
29
|
+
<FreeText>Submit</FreeText>
|
30
|
+
</Answer>
|
31
|
+
</QuestionFormAnswers>
|
32
|
+
</Answer>
|
33
|
+
</Assignment>
|
34
|
+
</GetAssignmentsForHITResult>
|
35
|
+
</GetAssignmentsForHITResponse>
|
@@ -0,0 +1,41 @@
|
|
1
|
+
<?xml version="1.0"?>
|
2
|
+
<GetHITResponse>
|
3
|
+
<OperationRequest>
|
4
|
+
<RequestId>49341251-fcbd-45c3-ab98-8fbe2e4d8060</RequestId>
|
5
|
+
</OperationRequest>
|
6
|
+
<HIT>
|
7
|
+
<Request>
|
8
|
+
<IsValid>True</IsValid>
|
9
|
+
</Request>
|
10
|
+
<HITId>GR4R3HY3YGBZXDCAPJWZ</HITId>
|
11
|
+
<HITTypeId>YGKZ2W5X6YFZ08ZRXXZZ</HITTypeId>
|
12
|
+
<CreationTime>2009-06-25T04:21:17Z</CreationTime>
|
13
|
+
<Title>Write a twitter update</Title>
|
14
|
+
<Description>Simply write a twitter update for me</Description>
|
15
|
+
<Question><ExternalQuestion xmlns="http://mechanicalturk.amazonaws.com/AWSMechanicalTurkDataSchemas/2006-07-14/ExternalQuestion.xsd">
|
16
|
+
<ExternalURL>http://s3.amazonaws.com/mpercival.com/newtweet.html?id=foo</ExternalURL>
|
17
|
+
<FrameHeight>400</FrameHeight>
|
18
|
+
</ExternalQuestion>
|
19
|
+
</Question>
|
20
|
+
<Keywords>twitter, blogging, writing, english</Keywords>
|
21
|
+
<HITStatus>Reviewable</HITStatus>
|
22
|
+
<MaxAssignments>1</MaxAssignments>
|
23
|
+
<Reward>
|
24
|
+
<Amount>0.10</Amount>
|
25
|
+
<CurrencyCode>USD</CurrencyCode>
|
26
|
+
<FormattedPrice>$0.10</FormattedPrice>
|
27
|
+
</Reward>
|
28
|
+
<AutoApprovalDelayInSeconds>3600</AutoApprovalDelayInSeconds>
|
29
|
+
<Expiration>2009-06-25T05:21:17Z</Expiration>
|
30
|
+
<AssignmentDurationInSeconds>3600</AssignmentDurationInSeconds>
|
31
|
+
<NumberOfSimilarHITs>0</NumberOfSimilarHITs>
|
32
|
+
<RequesterAnnotation>OptionalNote</RequesterAnnotation>
|
33
|
+
<QualificationRequirement>
|
34
|
+
<QualificationTypeId>000000000000000000L0</QualificationTypeId>
|
35
|
+
<Comparator>GreaterThan</Comparator>
|
36
|
+
<IntegerValue>90</IntegerValue>
|
37
|
+
<RequiredToPreview>0</RequiredToPreview>
|
38
|
+
</QualificationRequirement>
|
39
|
+
<HITReviewStatus>NotReviewed</HITReviewStatus>
|
40
|
+
</HIT>
|
41
|
+
</GetHITResponse>
|
@@ -0,0 +1,17 @@
|
|
1
|
+
<GetReviewableHITsResult>
|
2
|
+
<Request>
|
3
|
+
<IsValid>True</IsValid>
|
4
|
+
</Request>
|
5
|
+
<NumResults>3</NumResults>
|
6
|
+
<TotalNumResults>3</TotalNumResults>
|
7
|
+
<PageNumber>1</PageNumber>
|
8
|
+
<HIT>
|
9
|
+
<HITId>GBHZVQX3EHXZ2AYDY2T0</HITId>
|
10
|
+
</HIT>
|
11
|
+
<HIT>
|
12
|
+
<HITId>GBHZVQX3EHXZ2AYDY2T1</HITId>
|
13
|
+
</HIT>
|
14
|
+
<HIT>
|
15
|
+
<HITId>GBHZVQX3EHXZ2AYDY2T2</HITId>
|
16
|
+
</HIT>
|
17
|
+
</GetReviewableHITsResult>
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<?xml version="1.0"?>
|
2
|
+
<GetResponse>
|
3
|
+
<OperationRequest>
|
4
|
+
<RequestId>1306b1ca-0169-49fb-a196-83f6a762738c</RequestId>
|
5
|
+
<Errors>
|
6
|
+
<Error>
|
7
|
+
<Code>AWS.NotAuthorized</Code>
|
8
|
+
<Message>The identity contained in the request is not authorized to use this AWSAccessKeyId</Message>
|
9
|
+
</Error>
|
10
|
+
</Errors>
|
11
|
+
</OperationRequest>
|
12
|
+
</GetResponse>
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec_helper'))
|
2
|
+
|
3
|
+
describe RTurk::ApproveAssignment 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_assignment', :operation => 'ApproveAssignment')
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should ensure required params" do
|
12
|
+
lambda{RTurk::ApproveAssignment()}.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' => 'ApproveAssignment'))
|
18
|
+
RTurk::ApproveAssignment(:assignment_id => "123456789") rescue RTurk::InvalidRequest
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should parse and return the result" do
|
22
|
+
RTurk::ApproveAssignment(:assignment_id => "123456789").elements.should eql(
|
23
|
+
{"ApproveAssignmentResult"=>{"Request"=>{"IsValid"=>"True"}}}
|
24
|
+
)
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
require File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec_helper'))
|
2
|
+
|
3
|
+
describe "using mechanical turk with RTurk" 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
|
+
FakeWeb.clean_registry
|
9
|
+
faker('create_hit', :operation => "CreateHIT")
|
10
|
+
faker('get_hit', :operation => "GetHIT")
|
11
|
+
end
|
12
|
+
|
13
|
+
it "should let me build and send a hit" do
|
14
|
+
hit = RTurk::CreateHIT.new(:title => "Look at some pictures from 4Chan") do |hit|
|
15
|
+
hit.assignments = 5
|
16
|
+
hit.description = 'blah'
|
17
|
+
hit.question("http://mpercival.com", :frame_height => 600)
|
18
|
+
hit.reward = 0.05
|
19
|
+
hit.qualifications.add :approval_rate, {:gt => 80}
|
20
|
+
end
|
21
|
+
hit.assignments.should eql(5)
|
22
|
+
response = hit.request
|
23
|
+
response.hit_id.should_not be_nil
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should let me create a hit" do
|
27
|
+
response = RTurk::CreateHIT(:title => "Look at some pictures from 4Chan") do |hit|
|
28
|
+
hit.assignments = 5
|
29
|
+
hit.description = 'blah'
|
30
|
+
hit.question("http://mpercival.com", :test => 'b')
|
31
|
+
hit.reward = 0.05
|
32
|
+
hit.qualifications.add(:adult, true)
|
33
|
+
end
|
34
|
+
response.hit.url.should eql('http://workersandbox.mturk.com/mturk/preview?groupId=YGKZ2W5X6YFZ08ZRXXZZ')
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should let me create a hit with just option arguments" do
|
38
|
+
hit = RTurk::CreateHIT.new(:title => "Look at some pictures from 4Chan",
|
39
|
+
:description => "Pics from the b-tards",
|
40
|
+
:assignments => 5,
|
41
|
+
:reward => nil,
|
42
|
+
:question => 'http://mpercival.com?picture=1',
|
43
|
+
:qualifications => [
|
44
|
+
[:approval_rate, {:gt => 80}],
|
45
|
+
[:adult, true]
|
46
|
+
]
|
47
|
+
)
|
48
|
+
hit.assignments.should eql(5)
|
49
|
+
hit.qualifications.qualifications.size.should eql(2)
|
50
|
+
lambda{hit.request}.should raise_error RTurk::MissingParameters
|
51
|
+
end
|
52
|
+
|
53
|
+
it "should rerturn a CreateHITResponse after the request" do
|
54
|
+
response = RTurk::CreateHIT(:title => "Look at some pictures from 4Chan") do |hit|
|
55
|
+
hit.assignments = 5
|
56
|
+
hit.description = "foo"
|
57
|
+
hit.question("http://mpercival.com", :test => 'b')
|
58
|
+
hit.reward = 0.05
|
59
|
+
hit.qualifications.add(:adult, true)
|
60
|
+
end
|
61
|
+
response.is_a?(RTurk::CreateHITResponse).should be_true
|
62
|
+
response.hit_id.should == 'GBHZVQX3EHXZ2AYDY2T0'
|
63
|
+
response.hit_type_id.should == 'NYVZTQ1QVKJZXCYZCZVZ'
|
64
|
+
end
|
65
|
+
|
66
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec_helper'))
|
2
|
+
|
3
|
+
describe RTurk::DisableHIT 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('disable_hit', :operation => 'DisableHIT')
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should ensure required params" do
|
12
|
+
lambda{RTurk::DisableHIT()}.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' => 'DisableHIT'))
|
18
|
+
RTurk::DisableHIT(:hit_id => "123456789") rescue RTurk::InvalidRequest
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should parse and return the result" do
|
22
|
+
RTurk::DisableHIT(:hit_id => "123456789").should
|
23
|
+
be_a_kind_of RTurk::Response
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec_helper'))
|
2
|
+
|
3
|
+
describe RTurk::DisposeHIT 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('dispose_hit', :operation => 'DisposeHIT')
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should ensure required params" do
|
12
|
+
lambda{RTurk::DisposeHIT()}.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' => 'DisposeHIT'))
|
18
|
+
RTurk::DisposeHIT(:hit_id => "123456789") rescue RTurk::InvalidRequest
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should parse and return the result" do
|
22
|
+
RTurk::DisposeHIT(:hit_id => "123456789").should
|
23
|
+
be_a_kind_of RTurk::Response
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec_helper'))
|
2
|
+
|
3
|
+
describe RTurk::ForceExpireHIT 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('force_expire_hit', :operation => 'ForceExpireHIT')
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should ensure required params" do
|
12
|
+
lambda{RTurk::ForceExpireHIT()}.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' => 'ForceExpireHIT'))
|
18
|
+
RTurk::ForceExpireHIT(:hit_id => "123456789") rescue RTurk::InvalidRequest
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should parse and return the result" do
|
22
|
+
RTurk::ForceExpireHIT(:hit_id => "123456789").should
|
23
|
+
be_a_kind_of RTurk::Response
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec_helper'))
|
2
|
+
|
3
|
+
|
4
|
+
describe RTurk::GetAccountBalance do
|
5
|
+
|
6
|
+
before(:all) do
|
7
|
+
faker('get_account_balance', :operation => 'GetAccountBalance')
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should give me my account balance" do
|
11
|
+
RTurk.GetAccountBalance.amount.should eql(15555.55)
|
12
|
+
end
|
13
|
+
|
14
|
+
|
15
|
+
end
|