def test_show_complete(self): view = self.make_view() btn = view_helpers.find_button_matching(view, "^Reboot Now$") self.assertIs(btn, None) view.update_for_state(ApplicationState.DONE) btn = view_helpers.find_button_matching(view, "^Reboot Now$") self.assertIsNot(btn, None) view_helpers.click(btn) view.controller.click_reboot.assert_called_once_with()
def test_show_complete(self): view = self.make_view() btn = view_helpers.find_button_matching(view, "^Reboot Now$") self.assertIs(btn, None) view.show_complete() btn = view_helpers.find_button_matching(view, "^Reboot Now$") self.assertIsNot(btn, None) view_helpers.click(btn) view.controller.reboot.assert_called_once_with()
def test_basic(self): # Clicking the button for a language calls "switch_language" # on the model and "done" on the controller. view = self.make_view_with_languages([('code', 'native')]) but = view_helpers.find_button_matching(view, "^native$") view_helpers.click(but) view.controller.done.assert_called_once_with('code')
def test_click_done(self): # The ugliness of this test is probably an indication that the # view is doing too much... dev_info = create_test_instance(NetDevInfo, overrides={'static4.addresses': []}) view, stretchy = self.make_view(dev_info) valid_data = { 'subnet': '10.0.2.0/24', 'address': '10.0.2.15', 'gateway': '10.0.2.2', 'nameservers': '8.8.8.8, 1.1.1.1', 'searchdomains': '.custom, .zzz', } view_helpers.enter_data(stretchy.manual_form, valid_data) expected = StaticConfig(addresses=['10.0.2.15/24'], gateway='10.0.2.2', nameservers=['8.8.8.8', '1.1.1.1'], searchdomains=['.custom', '.zzz']) but = view_helpers.find_button_matching(view, "^Save$") view_helpers.click(but) view.controller.set_static_config.assert_called_once_with( stretchy.dev_info.name, 4, expected)
def test_delete_not_disabled_for_ordinary_partition(self): view = self.make_view(Partition(size=50 * (2**20))) but, path = view_helpers.find_button_matching(view, "Delete", return_path=True) self.assertIsNotNone(but) for w in path: if isinstance(w, urwid.WidgetDisable): self.fail("Delete button is disabled")
def c(pat): but = view_helpers.find_button_matching(self.common['ui'], '.*' + pat + '.*') if not but: ss.wait_count += 1 if ss.wait_count > 10: raise Exception("no button found matching %r after waiting for 10 secs"%(pat,)) wait(1, func=lambda : c(pat)) return ss.wait_count = 0 view_helpers.click(but)
def test_delete_disabled_for_boot_partition(self): view = self.make_view(Partition(size=50, flag="boot")) but, path = view_helpers.find_button_matching(view, "Delete", return_path=True) self.assertIsNotNone(but) for w in path: if isinstance(w, urwid.WidgetDisable): return else: self.fail("Delete button not disabled")
def test_click_done(self): view = self.make_view() view_helpers.enter_data(view.form, valid_data) CRYPTED = '<crypted>' view.model.encrypt_password.side_effect = lambda p: CRYPTED expected = valid_data.copy() expected['password'] = expected['confirm_password'] = CRYPTED done_btn = view_helpers.find_button_matching(view, "^Done$") view_helpers.click(done_btn) view.controller.create_user.assert_called_once_with(expected)
def test_click_done(self): view = self.make_view() CRYPTED = '<crypted>' with mock.patch('subiquity.ui.views.identity.crypt_password') as cp: cp.side_effect = lambda p: CRYPTED view_helpers.enter_data(view.form, valid_data) done_btn = view_helpers.find_button_matching(view, "^Done$") view_helpers.click(done_btn) expected = IdentityData(realname=valid_data['realname'], username=valid_data['username'], hostname=valid_data['hostname'], crypted_password=CRYPTED) view.controller.done.assert_called_once_with(expected)
def test_click_done(self): # The ugliness of this test is probably an indication that the # view is doing too much... view = self.make_view() view_helpers.enter_data(view.form, valid_data) expected = valid_data.copy() expected['nameservers'] = [expected['nameservers']] expected['searchdomains'] = [expected['searchdomains']] expected['network'] = expected.pop('subnet') but = view_helpers.find_button_matching(view, "^Save$") view_helpers.click(but) view.dev.remove_ip_networks_for_version.assert_called_once_with(4) view.dev.remove_nameservers.assert_called_once_with() view.dev.add_network.assert_called_once_with(4, expected)
def test_click_delete_button(self): partition = Partition(size=50 * (2**20)) view = self.make_view(partition) but = view_helpers.find_button_matching(view, "Delete") view_helpers.click(but) view.controller.delete_partition.assert_called_once_with(partition)
def test_no_delete_for_new_partition(self): view = self.make_view() self.assertIsNone(view_helpers.find_button_matching(view, "Delete"))
def test_click_back(self): view = self.make_view() button = view_helpers.find_button_matching(view, "^Back$") view_helpers.click(button) view.controller.cancel.assert_called_once_with()
def test_click_manual(self): view = self.make_view() button = view_helpers.find_button_matching(view, "^Manual$") view_helpers.click(button) view.controller.manual.assert_called_once_with()
def test_click_guided(self): view = self.make_view() button = view_helpers.find_button_matching(view, "^Use An Entire Disk$") view_helpers.click(button) view.controller.guided.assert_called_once_with()