def test_drill_completed_event(self): dialog_events: List[DialogEvent] = [ DrillCompleted(self.phone, self.validated_user_profile, drill_instance_id=uuid.uuid4()) ] outbound_messages = get_outbound_sms_commands(dialog_events) self.assertEqual(len(outbound_messages), 0)
def test_user_validated_event(self): code_validation_payload = CodeValidationPayload(valid=True, is_demo=False) dialog_events: List[DialogEvent] = [ UserValidated(self.phone, self.validated_user_profile, code_validation_payload) ] outbound_messages = get_outbound_sms_commands(dialog_events) self.assertEqual(len(outbound_messages), 0)
def test_user_validation_failed_event(self): dialog_events: List[DialogEvent] = [ UserValidationFailed(self.phone, self.non_validated_user_profile) ] outbound_messages = get_outbound_sms_commands(dialog_events) self.assertEqual(len(outbound_messages), 1) message = outbound_messages[0] self.assertEqual(message.phone_number, self.phone) self.assertEqual(message.event_id, dialog_events[0].event_id) self.assertEqual(message.body, USER_VALIDATION_FAILED_COPY)
def test_drill_completed_event(self): dialog_events: List[DialogEvent] = [ DrillCompleted( phone_number=self.phone, user_profile=self.validated_user_profile, drill_instance_id=uuid.uuid4(), last_prompt_response="response", ) ] outbound_messages = get_outbound_sms_commands(dialog_events) self.assertEqual(len(outbound_messages), 0)
def test_ad_hoc_message_sent(self): body = "we have lift off" dialog_events: List[DialogEvent] = [ AdHocMessageSent( phone_number=self.phone, user_profile=self.validated_user_profile, sms=SMS(body=body), ) ] outbound_messages = get_outbound_sms_commands(dialog_events) self.assertEqual(len(outbound_messages), 1) self.assertEqual(outbound_messages[0].body, body) self.assertEqual(outbound_messages[0].media_url, None)
def test_drill_started_event(self): dialog_events: List[DialogEvent] = [ DrillStarted( self.phone, self.validated_user_profile, drill=self.drill, first_prompt=self.drill.prompts[0], ) ] outbound_messages = get_outbound_sms_commands(dialog_events) self.assertEqual(len(outbound_messages), 1) message = outbound_messages[0] self.assertEqual(message.phone_number, self.phone) self.assertEqual(message.event_id, dialog_events[0].event_id) self.assertEqual(message.body, "Hello")
def test_completed_prompt_event(self): dialog_events: List[DialogEvent] = [ CompletedPrompt( phone_number=self.phone, user_profile=self.validated_user_profile, prompt=self.drill.prompts[1], response="a", drill_instance_id=uuid.uuid4(), ) ] outbound_messages = get_outbound_sms_commands(dialog_events) self.assertEqual(len(outbound_messages), 1) message = outbound_messages[0] self.assertEqual(message.phone_number, self.phone) self.assertEqual(message.event_id, dialog_events[0].event_id) self.assertTrue(message.body.endswith("Correct!"))
def test_completed_prompt_event(self): dialog_events: List[DialogEvent] = [ CompletedPrompt( self.phone, self.validated_user_profile, prompt=self.drill.prompts[1], response="a", drill_instance_id=uuid.uuid4(), ) ] outbound_messages = get_outbound_sms_commands(dialog_events) self.assertEqual(len(outbound_messages), 1) message = outbound_messages[0] self.assertEqual(message.phone_number, self.phone) self.assertEqual(message.event_id, dialog_events[0].event_id) self.assertEqual(message.body, localize(CORRECT_ANSWER_COPY, "en", emojis=""))
def test_non_abandoned_failed_prompt_event(self): dialog_events: List[DialogEvent] = [ FailedPrompt( phone_number=self.phone, user_profile=self.validated_user_profile, prompt=self.drill.prompts[1], response="a", drill_instance_id=uuid.uuid4(), abandoned=False, ) ] outbound_messages = get_outbound_sms_commands(dialog_events) self.assertEqual(len(outbound_messages), 1) message = outbound_messages[0] self.assertEqual(message.phone_number, self.phone) self.assertEqual(message.event_id, dialog_events[0].event_id) self.assertEqual(message.body, "🤖 Sorry, not correct. Try again one more time.")
def test_abandoned_failed_prompt_event(self): dialog_events: List[DialogEvent] = [ FailedPrompt( self.phone, self.validated_user_profile, prompt=self.drill.prompts[1], response="a", drill_instance_id=uuid.uuid4(), abandoned=True, ) ] outbound_messages = get_outbound_sms_commands(dialog_events) self.assertEqual(len(outbound_messages), 1) message = outbound_messages[0] self.assertEqual(message.phone_number, self.phone) self.assertEqual(message.event_id, dialog_events[0].event_id) self.assertEqual( message.body, "🤖 The correct answer is *a*.\n\nLets move to the next one.")
def test_advance_to_next_prompt_event(self): dialog_events: List[DialogEvent] = [ AdvancedToNextPrompt( self.phone, self.validated_user_profile, prompt=self.drill.prompts[1], drill_instance_id=uuid.uuid4(), ) ] outbound_messages = get_outbound_sms_commands(dialog_events) self.assertEqual(len(outbound_messages), 2) expected_messages = [ message.text for message in self.drill.prompts[1].messages ] self.assertEqual(outbound_messages[0].phone_number, self.phone) self.assertEqual(outbound_messages[0].event_id, dialog_events[0].event_id) self.assertEqual(outbound_messages[0].body, expected_messages[0]) self.assertEqual(outbound_messages[1].phone_number, self.phone) self.assertEqual(outbound_messages[1].event_id, dialog_events[0].event_id) self.assertEqual(outbound_messages[1].body, expected_messages[1])