def test_pair_text_entry_with_enter_key(self): # Arrange current_state = abstraction.create_state("contactsActivity", "abcdef") target = { "selector": "id", "selectorValue": "txt_first_name", "type": "edittext", "description": "First Name", "state": "enabled" } text_entry_action = actions.TextEntry(target, GUIActionType.TEXT_ENTRY, None) # Act text_entry_enter_key_event = abstraction.pair_text_entry_with_enter_key( current_state, text_entry_action) # Assert enter_target = abstraction.create_enter_target() enter_key_action = abstraction.create_action("enter", enter_target) expected_event = { "precondition": current_state, "actions": [text_entry_action, enter_key_action] } # self.assertEqual(text_entry_enter_key_event["actions"][0]["value"], "[random string]") self.assertEqual(text_entry_enter_key_event, expected_event)
def test_can_press_return(self): # Arrange precondition = abstraction.create_state("contactsActivity", "abcdef") enter_key_target = abstraction.create_enter_target() enter_event = { "precondition": precondition, "actions": [abstraction.create_action(GUIActionType.ENTER_KEY, enter_key_target)] } self.navigate_to_note_creation() # Act self.executor.execute(enter_event)
def test_can_type_text_in_single_field(self): # Arrange precondition = abstraction.create_state("contactsActivity", "abcdef") text_field_target = abstraction.create_target(SelectorType.ID, "org.tomdroid:id/title", "", "EditText", TargetState.ENABLED) text_entry_action = abstraction.create_action(GUIActionType.TEXT_ENTRY, text_field_target) text_entry_action.value = "[random string]" enter_key_action = abstraction.create_action(GUIActionType.ENTER_KEY, abstraction.create_enter_target()) text_entry_event = { "precondition": precondition, "actions": [text_entry_action, enter_key_action] } self.navigate_to_note_creation() # Act self.executor.execute(text_entry_event) # Assert self.assertNotEqual(text_entry_action.value, "[random string]")
def test_create_partial_text_events_with_single_text_field(self): # Arrange current_state = abstraction.create_state("contactsActivity", "abcdef") text_entry_target_1 = { "selector": "id", "selectorValue": "txt_first_name", "type": "edittext", "description": "First Name", "state": "enabled" } text_entry_action_1 = actions.TextEntry(text_entry_target_1, GUIActionType.TEXT_ENTRY, None) text_entry_actions = [text_entry_action_1] non_text_entry_target_1 = { "selector": "id", "selectorValue": "ok_btn", "type": "button", "description": "OK", "state": "enabled" } non_text_entry_action_1 = actions.Click(non_text_entry_target_1, GUIActionType.CLICK, None) non_text_entry_target_2 = { "selector": "id", "selectorValue": "cancel_btn", "type": "button", "description": "Cancel", "state": "enabled" } non_text_entry_action_2 = actions.Click(non_text_entry_target_2, GUIActionType.CLICK, None) non_text_entry_target_3 = { "selector": "id", "selectorValue": "gender_radio_btn", "type": "radiobutton", "description": "Gender", "state": "enabled" } non_text_entry_action_3 = actions.Click(non_text_entry_target_3, GUIActionType.CLICK, None) non_text_entry_actions = [ non_text_entry_action_1, non_text_entry_action_2, non_text_entry_action_3 ] # Act partial_text_events = abstraction.create_partial_text_events( current_state, text_entry_actions, non_text_entry_actions) # Assert - potentially improve tests to not assert on lists but use membership assert text_entry_action = text_entry_actions[0] text_entry_action.value = "[random string]" enter_action = abstraction.create_action( "enter", abstraction.create_enter_target()) expected_event_1 = { "precondition": current_state, "actions": [text_entry_action, non_text_entry_action_1] } expected_event_2 = { "precondition": current_state, "actions": [text_entry_action, non_text_entry_action_2] } expected_event_3 = { "precondition": current_state, "actions": [text_entry_action, enter_action] } expected_event_4 = { "precondition": current_state, "actions": [non_text_entry_action_1] } expected_event_5 = { "precondition": current_state, "actions": [non_text_entry_action_2] } expected_event_6 = { "precondition": current_state, "actions": [non_text_entry_action_3] } expected_events = [ expected_event_1, expected_event_2, expected_event_3, expected_event_4, expected_event_5, expected_event_6 ] self.assertEqual(partial_text_events, expected_events)
def test_create_events_for_single_text_field(self): # Arrange current_state = abstraction.create_state("contactsActivity", "abcdef") target = { "selector": "id", "selectorValue": "txt_first_name", "type": "edittext", "description": "First Name", "state": "enabled" } text_entry_action = actions.TextEntry(target, GUIActionType.TEXT_ENTRY, None) target_1 = { "selector": "id", "selectorValue": "ok_btn", "type": "button", "description": "OK", "state": "enabled" } action_1 = actions.Click(target_1, GUIActionType.CLICK, None) target_2 = { "selector": "id", "selectorValue": "cancel_btn", "type": "button", "description": "Cancel", "state": "enabled" } action_2 = actions.Click(target_2, GUIActionType.CLICK, None) target_3 = { "selector": "id", "selectorValue": "gender_radio_btn", "type": "radiobutton", "description": "Gender", "state": "enabled" } action_3 = actions.Click(target_3, GUIActionType.CLICK, None) non_text_entry_actions = [action_1, action_2, action_3] # Act text_and_act_events = abstraction.create_events_for_single_text_field( current_state, text_entry_action, non_text_entry_actions) # Assert text_entry_action.value = "[random string]" expected_event_1 = { "precondition": current_state, "actions": [text_entry_action, action_1] } expected_event_2 = { "precondition": current_state, "actions": [text_entry_action, action_2] } expected_event_3 = { "precondition": current_state, "actions": [ text_entry_action, abstraction.create_action("enter", abstraction.create_enter_target()) ] } expected_events = [ expected_event_1, expected_event_2, expected_event_3 ] self.assertEqual(expected_events, text_and_act_events) self.assertEqual(text_and_act_events[0]["actions"][0].value, "[random string]")