fix tests

This commit is contained in:
Michael Hudson-Doyle 2018-07-06 14:44:19 +12:00
parent ed09054928
commit e3e5c7f760
2 changed files with 34 additions and 25 deletions

View File

@ -1,6 +1,8 @@
import re import re
import urwid import urwid
from subiquitycore.ui.stretchy import StretchyOverlay
def find_with_pred(w, pred, return_path=False): def find_with_pred(w, pred, return_path=False):
def _walk(w, path): def _walk(w, path):
@ -29,6 +31,10 @@ def find_with_pred(w, pred, return_path=False):
r, p = _walk(w, (w,) + path) r, p = _walk(w, (w,) + path)
if r: if r:
return r, p return r, p
elif isinstance(w, StretchyOverlay):
r, p = _walk(w.top_w, (w,) + path)
if r:
return r, p
return None, None return None, None
r, p = _walk(w, ()) r, p = _walk(w, ())
if return_path: if return_path:

View File

@ -1,12 +1,15 @@
import unittest import unittest
from unittest import mock from unittest import mock
import urwid
from subiquitycore.controllers.network import NetworkController from subiquitycore.controllers.network import NetworkController
from subiquitycore.models.network import Networkdev, NetworkModel from subiquitycore.models.network import Networkdev, NetworkModel
from subiquitycore.testing import view_helpers from subiquitycore.testing import view_helpers
from subiquitycore.ui.views.network_configure_manual_interface import ( from subiquitycore.ui.views.network_configure_manual_interface import (
NetworkConfigureIPv4InterfaceView) EditNetworkStretchy,
)
from subiquitycore.view import BaseView
valid_data = { valid_data = {
@ -23,42 +26,41 @@ class TestNetworkConfigureIPv4InterfaceView(unittest.TestCase):
def make_view(self): def make_view(self):
model = mock.create_autospec(spec=NetworkModel) model = mock.create_autospec(spec=NetworkModel)
controller = mock.create_autospec(spec=NetworkController) controller = mock.create_autospec(spec=NetworkController)
ifname = 'ifname'
def get_netdev_by_name(name): device = mock.create_autospec(spec=Networkdev)
if name == ifname: device.configured_ip_addresses_for_version = lambda v: []
dev = mock.create_autospec(spec=Networkdev) base_view = BaseView(urwid.Text(""))
dev.configured_ip_addresses_for_version = lambda v: [] base_view.model = model
return dev base_view.controller = controller
else: base_view.refresh_model_inputs = lambda: None
raise AssertionError("get_netdev_by_name called with " stretchy = EditNetworkStretchy(base_view, device, 4)
"unexpected arg %s" % (name,)) base_view.show_stretchy_overlay(stretchy)
model.get_netdev_by_name.side_effect = get_netdev_by_name stretchy.method_form.method.value = "manual"
return NetworkConfigureIPv4InterfaceView(model, controller, ifname) return base_view, stretchy
def test_initial_focus(self): def test_initial_focus(self):
view = self.make_view() view, stretchy = self.make_view()
focus_path = view_helpers.get_focus_path(view) focus_path = view_helpers.get_focus_path(view)
for w in reversed(focus_path): for w in reversed(focus_path):
if w is view.form.subnet.widget: if w is stretchy.method_form.method.widget:
return return
else: else:
self.fail("Subnet widget not focus") self.fail("method widget not focus")
def test_done_initially_disabled(self): def test_done_initially_disabled(self):
view = self.make_view() _, stretchy = self.make_view()
self.assertFalse(view.form.done_btn.enabled) self.assertFalse(stretchy.manual_form.done_btn.enabled)
def test_done_enabled_for_valid_data(self): def test_done_enabled_for_valid_data(self):
view = self.make_view() _, stretchy = self.make_view()
view_helpers.enter_data(view.form, valid_data) view_helpers.enter_data(stretchy.manual_form, valid_data)
self.assertTrue(view.form.done_btn.enabled) self.assertTrue(stretchy.manual_form.done_btn.enabled)
def test_click_done(self): def test_click_done(self):
# The ugliness of this test is probably an indication that the # The ugliness of this test is probably an indication that the
# view is doing too much... # view is doing too much...
view = self.make_view() view, stretchy = self.make_view()
view_helpers.enter_data(view.form, valid_data) view_helpers.enter_data(stretchy.manual_form, valid_data)
expected = valid_data.copy() expected = valid_data.copy()
expected['nameservers'] = [expected['nameservers']] expected['nameservers'] = [expected['nameservers']]
@ -68,6 +70,7 @@ class TestNetworkConfigureIPv4InterfaceView(unittest.TestCase):
but = view_helpers.find_button_matching(view, "^Save$") but = view_helpers.find_button_matching(view, "^Save$")
view_helpers.click(but) view_helpers.click(but)
view.dev.remove_ip_networks_for_version.assert_called_once_with(4) rinfv = stretchy.device.remove_ip_networks_for_version
view.dev.remove_nameservers.assert_called_once_with() rinfv.assert_called_once_with(4)
view.dev.add_network.assert_called_once_with(4, expected) stretchy.device.remove_nameservers.assert_called_once_with()
stretchy.device.add_network.assert_called_once_with(4, expected)