| Index: third_party/gsutil/boto/tests/mturk/reviewable_hits.doctest
|
| diff --git a/third_party/gsutil/boto/tests/mturk/reviewable_hits.doctest b/third_party/gsutil/boto/tests/mturk/reviewable_hits.doctest
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..113a056efd1e42306a5b37c4f7bbaff3cec67d9a
|
| --- /dev/null
|
| +++ b/third_party/gsutil/boto/tests/mturk/reviewable_hits.doctest
|
| @@ -0,0 +1,129 @@
|
| +>>> import uuid
|
| +>>> import datetime
|
| +>>> from _init_environment import MTurkConnection, mturk_host
|
| +>>> from boto.mturk.question import Question, QuestionContent, AnswerSpecification, FreeTextAnswer
|
| +
|
| +>>> conn = MTurkConnection(host=mturk_host)
|
| +
|
| +# create content for a question
|
| +>>> qn_content = QuestionContent()
|
| +>>> qn_content.append_field('Title', 'Boto no hit type question content')
|
| +>>> qn_content.append_field('Text', 'What is a boto no hit type?')
|
| +
|
| +# create the question specification
|
| +>>> qn = Question(identifier=str(uuid.uuid4()),
|
| +... content=qn_content,
|
| +... answer_spec=AnswerSpecification(FreeTextAnswer()))
|
| +
|
| +# now, create the actual HIT for the question without using a HIT type
|
| +# NOTE - the response_groups are specified to get back additional information for testing
|
| +>>> keywords=['boto', 'test', 'doctest']
|
| +>>> create_hit_rs = conn.create_hit(question=qn,
|
| +... lifetime=60*65,
|
| +... max_assignments=1,
|
| +... title='Boto Hit to be Reviewed',
|
| +... description='Boto reviewable_hits description',
|
| +... keywords=keywords,
|
| +... reward=0.23,
|
| +... duration=60*6,
|
| +... approval_delay=60*60,
|
| +... annotation='An annotation from boto create_hit test',
|
| +... response_groups=['Minimal',
|
| +... 'HITDetail',
|
| +... 'HITQuestion',
|
| +... 'HITAssignmentSummary',])
|
| +
|
| +# this is a valid request
|
| +>>> create_hit_rs.status
|
| +True
|
| +
|
| +>>> len(create_hit_rs)
|
| +1
|
| +>>> hit = create_hit_rs[0]
|
| +
|
| +# for the requested hit type id
|
| +# the HIT Type Id is a unicode string
|
| +>>> hit_type_id = hit.HITTypeId
|
| +>>> hit_type_id # doctest: +ELLIPSIS
|
| +u'...'
|
| +
|
| +>>> from selenium_support import complete_hit, has_selenium
|
| +>>> if has_selenium(): complete_hit(hit_type_id, response='reviewable_hits_test')
|
| +>>> import time
|
| +
|
| +Give mechanical turk some time to process the hit
|
| +>>> if has_selenium(): time.sleep(10)
|
| +
|
| +# should have some reviewable HIT's returned, especially if returning all HIT type's
|
| +# NOTE: but only if your account has existing HIT's in the reviewable state
|
| +>>> reviewable_rs = conn.get_reviewable_hits()
|
| +
|
| +# this is a valid request
|
| +>>> reviewable_rs.status
|
| +True
|
| +
|
| +>>> len(reviewable_rs) >= 1
|
| +True
|
| +
|
| +# should contain at least one HIT object
|
| +>>> reviewable_rs # doctest: +ELLIPSIS
|
| +[<boto.mturk.connection.HIT instance at ...]
|
| +
|
| +>>> hit_id = reviewable_rs[0].HITId
|
| +
|
| +# check that we can retrieve the assignments for a HIT
|
| +>>> assignments_rs = conn.get_assignments(hit_id)
|
| +
|
| +# this is a valid request
|
| +>>> assignments_rs.status
|
| +True
|
| +
|
| +>>> int(assignments_rs.NumResults) >= 1
|
| +True
|
| +
|
| +>>> len(assignments_rs) == int(assignments_rs.NumResults)
|
| +True
|
| +
|
| +>>> assignments_rs.PageNumber
|
| +u'1'
|
| +
|
| +>>> assignments_rs.TotalNumResults >= 1
|
| +True
|
| +
|
| +# should contain at least one Assignment object
|
| +>>> assignments_rs # doctest: +ELLIPSIS
|
| +[<boto.mturk.connection.Assignment instance at ...]
|
| +
|
| +# should have returned assignments for the requested HIT id
|
| +>>> assignment = assignments_rs[0]
|
| +
|
| +>>> assignment.HITId == hit_id
|
| +True
|
| +
|
| +# should have a valid status
|
| +>>> assignment.AssignmentStatus in ['Submitted', 'Approved', 'Rejected']
|
| +True
|
| +
|
| +# should have returned at least one answer
|
| +>>> len(assignment.answers) > 0
|
| +True
|
| +
|
| +# should contain at least one set of QuestionFormAnswer objects
|
| +>>> assignment.answers # doctest: +ELLIPSIS
|
| +[[<boto.mturk.connection.QuestionFormAnswer instance at ...]]
|
| +
|
| +>>> answer = assignment.answers[0][0]
|
| +
|
| +# the answer should have exactly one field
|
| +>>> len(answer.fields)
|
| +1
|
| +
|
| +>>> qid, text = answer.fields[0]
|
| +
|
| +>>> text # doctest: +ELLIPSIS
|
| +u'...'
|
| +
|
| +# question identifier should be a unicode string
|
| +>>> qid # doctest: +ELLIPSIS
|
| +u'...'
|
| +
|
|
|