Index: third_party/gsutil/boto/tests/mturk/create_free_text_question_regex.doctest |
diff --git a/third_party/gsutil/boto/tests/mturk/create_free_text_question_regex.doctest b/third_party/gsutil/boto/tests/mturk/create_free_text_question_regex.doctest |
new file mode 100644 |
index 0000000000000000000000000000000000000000..0b9d2a9a230769efb07f1f50f30863d50bac83e2 |
--- /dev/null |
+++ b/third_party/gsutil/boto/tests/mturk/create_free_text_question_regex.doctest |
@@ -0,0 +1,100 @@ |
+>>> import uuid |
+>>> import datetime |
+>>> from _init_environment import MTurkConnection, mturk_host |
+>>> from boto.mturk.question import Question, QuestionContent, AnswerSpecification, FreeTextAnswer, RegExConstraint |
+ |
+>>> 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 a free text answer that is not quite so free! |
+>>> constraints = [ |
+... RegExConstraint( |
+... "^[12][0-9]{3}-[01]?\d-[0-3]?\d$", |
+... error_text="You must enter a date with the format yyyy-mm-dd.", |
+... flags='i', |
+... )] |
+>>> ft_answer = FreeTextAnswer(constraints=constraints, |
+... default="This is not a valid format") |
+ |
+# create the question specification |
+>>> qn = Question(identifier=str(uuid.uuid4()), |
+... content=qn_content, |
+... answer_spec=AnswerSpecification(ft_answer)) |
+ |
+# 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=2, |
+... title='Boto create_hit title', |
+... description='Boto create_hit 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 |
+ |
+# for the requested hit type id |
+# the HIT Type Id is a unicode string |
+>>> len(create_hit_rs) |
+1 |
+>>> hit = create_hit_rs[0] |
+>>> hit_type_id = hit.HITTypeId |
+>>> hit_type_id # doctest: +ELLIPSIS |
+u'...' |
+ |
+>>> hit.MaxAssignments |
+u'2' |
+ |
+>>> hit.AutoApprovalDelayInSeconds |
+u'3600' |
+ |
+# expiration should be very close to now + the lifetime in seconds |
+>>> expected_datetime = datetime.datetime.utcnow() + datetime.timedelta(seconds=3900) |
+>>> expiration_datetime = datetime.datetime.strptime(hit.Expiration, '%Y-%m-%dT%H:%M:%SZ') |
+>>> delta = expected_datetime - expiration_datetime |
+>>> abs(delta).seconds < 5 |
+True |
+ |
+# duration is as specified for the HIT type |
+>>> hit.AssignmentDurationInSeconds |
+u'360' |
+ |
+# the reward has been set correctly (allow for float error here) |
+>>> int(float(hit.Amount) * 100) |
+23 |
+ |
+>>> hit.FormattedPrice |
+u'$0.23' |
+ |
+# only US currency supported at present |
+>>> hit.CurrencyCode |
+u'USD' |
+ |
+# title is the HIT type title |
+>>> hit.Title |
+u'Boto create_hit title' |
+ |
+# title is the HIT type description |
+>>> hit.Description |
+u'Boto create_hit description' |
+ |
+# annotation is correct |
+>>> hit.RequesterAnnotation |
+u'An annotation from boto create_hit test' |
+ |
+>>> hit.HITReviewStatus |
+u'NotReviewed' |