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'...' |
+ |