def check_button_text_update(self, view): button_text_edit = ButtonTextEdit() tester = UITester() with tester.create_ui(button_text_edit, dict(view=view)) as ui: button = tester.find_by_name(ui, "play_button") actual = button.inspect(query.DisplayedText()) self.assertEqual(actual, "I'm a play button") button_text_edit.play_button_label = "New Label" actual = button.inspect(query.DisplayedText()) self.assertEqual(actual, "New Label")
def test_simple_auto_set_false_do_not_update_qt(self): foo = Foo(name="") view = get_view(style="simple", auto_set=False) tester = UITester() with tester.create_ui(foo, dict(view=view)) as ui: name_field = tester.find_by_name(ui, "name") name_field.perform(command.KeySequence("NEW")) # with auto-set as False the displayed name should match what has # been typed not the trait itself, After "Enter" is pressed it # should match the name trait display_name = name_field.inspect(query.DisplayedText()) self.assertEqual(foo.name, "") self.assertEqual(display_name, "NEW") name_field.perform(command.KeyClick("Enter")) display_name = name_field.inspect(query.DisplayedText()) self.assertEqual(foo.name, "NEW") self.assertEqual(display_name, foo.name)
def check_format_func_used(self, style): # Regression test for enthought/traitsui#790 # The test will fail with traits < 6.1.0 because the bug # is fixed in traits, see enthought/traitsui#980 for moving those # relevant code to traitsui. foo = Foo(name="william", nickname="bill") view = View( Item("name", format_func=lambda s: s.upper(), style=style), Item("nickname", style=style), ) tester = UITester() with tester.create_ui(foo, dict(view=view)) as ui: display_name = ( tester.find_by_name(ui, "name").inspect(query.DisplayedText()) ) display_nickname = ( tester.find_by_name(ui, "nickname").inspect(query.DisplayedText()) # noqa E501 ) self.assertEqual(display_name, "WILLIAM") self.assertEqual(display_nickname, "bill")
def test_custom_auto_set_false_update_text(self): # the auto_set flag is disregard for custom editor. (not true on WX) foo = Foo() view = get_view(auto_set=False, style="custom") tester = UITester() with tester.create_ui(foo, dict(view=view)) as ui: name_field = tester.find_by_name(ui, "name") name_field.perform(command.KeySequence("NEW")) name_field.perform(command.KeyClick("Enter")) display_name = name_field.inspect(query.DisplayedText()) self.assertEqual(foo.name, "NEW\n") self.assertEqual(display_name, foo.name)
def test_simple_auto_set_update_text(self): foo = Foo() view = get_view(style="simple", auto_set=True) tester = UITester() with tester.create_ui(foo, dict(view=view)) as ui: with self.assertTraitChanges(foo, "name", count=3): name_field = tester.find_by_name(ui, "name") name_field.perform(command.KeySequence("NEW")) # with auto-set the displayed name should match the name trait display_name = name_field.inspect(query.DisplayedText()) self.assertEqual(foo.name, "NEW") self.assertEqual(display_name, foo.name)
def test_readonly_editor(self): foo = Foo(name="A name") view = get_view(style="readonly", auto_set=True) tester = UITester() with tester.create_ui(foo, dict(view=view)) as ui: name_field = tester.find_by_name(ui, "name") with self.assertRaises(InteractionNotSupported): name_field.perform(command.KeySequence("NEW")) # Trying to type should do nothing with self.assertRaises(InteractionNotSupported): name_field.perform(command.KeyClick("Space")) display_name = name_field.inspect(query.DisplayedText()) self.assertEqual(display_name, "A name")
def test_custom_auto_set_true_update_text(self): # the auto_set flag is disregard for custom editor. (not true on WX) foo = Foo() view = get_view(auto_set=True, style="custom") tester = UITester() with tester.create_ui(foo, dict(view=view)) as ui: with self.assertTraitChanges(foo, "name", count=3): name_field = tester.find_by_name(ui, "name") name_field.perform(command.KeySequence("NEW")) # with auto-set the displayed name should match the name trait display_name = name_field.inspect(query.DisplayedText()) self.assertEqual(foo.name, "NEW") self.assertEqual(display_name, foo.name)
def test_custom_auto_set_false_do_not_update_wx(self): foo = Foo(name="") view = View( Item("name", editor=TextEditor(auto_set=False), style="custom"), Item("nickname", editor=TextEditor(auto_set=False), style="custom") ) tester = UITester() with tester.create_ui(foo, dict(view=view)) as ui: name_field = tester.find_by_name(ui, "name") name_field.perform(command.KeySequence("NEW")) # with auto-set as False the displayed name should match what has # been typed not the trait itself, After moving to another textbox # it should match the name trait display_name = name_field.inspect(query.DisplayedText()) self.assertEqual(foo.name, "") self.assertEqual(display_name, "NEW") tester.find_by_name(ui, "nickname").perform(command.MouseClick()) display_name = name_field.inspect(query.DisplayedText()) self.assertEqual(foo.name, "NEW") self.assertEqual(display_name, foo.name)
def check_set_with_text_after_empty(self, mode): model = RangeModel() view = View( Item("value", editor=RangeEditor(low=1, high=12, mode=mode))) tester = UITester() with tester.create_ui(model, dict(view=view)) as ui: number_field = tester.find_by_name(ui, "value") text = number_field.locate(locator.WidgetType.textbox) # Delete all contents of textbox for _ in range(5): text.perform(command.KeyClick("Backspace")) text.perform(command.KeySequence("11")) text.perform(command.KeyClick("Enter")) displayed = text.inspect(query.DisplayedText()) self.assertEqual(model.value, 11) self.assertEqual(displayed, str(model.value))
def test_locate_element_and_edit(self): # varying the number of columns in the view tests the logic for # getting the correct nested ui for col in range(1, 5): obj = ListTraitTest(people=get_people(), num_columns=col) tester = UITester() with tester.create_ui(obj) as ui: # sanity check self.assertEqual(obj.people[7].name, "Fields") people_list = tester.find_by_name(ui, "people") item = people_list.locate(locator.Index(7)) name_field = item.find_by_name("name") for _ in range(6): name_field.perform(command.KeyClick("Backspace")) name_field.perform(command.KeySequence("David")) displayed = name_field.inspect(query.DisplayedText()) self.assertEqual(obj.people[7].name, "David") self.assertEqual(displayed, obj.people[7].name)
def check_set_with_text_valid(self, mode): model = RangeModel() view = View( Item("value", editor=RangeEditor(low=1, high=12, mode=mode))) tester = UITester() with tester.create_ui(model, dict(view=view)) as ui: # sanity check self.assertEqual(model.value, 1) number_field = tester.find_by_name(ui, "value") text = number_field.locate(locator.WidgetType.textbox) if is_windows and is_wx() and mode == 'text': # For RangeTextEditor on wx and windows, the textbox # automatically gets focus and the full content is selected. # Insertion point is moved to keep the test consistent text.target.textbox.SetInsertionPointEnd() text.perform(command.KeyClick("0")) text.perform(command.KeyClick("Enter")) displayed = text.inspect(query.DisplayedText()) self.assertEqual(model.value, 10) self.assertEqual(displayed, str(model.value))