beef up partition view tests a bit
This commit is contained in:
parent
4389c1636b
commit
f972119126
|
@ -9,6 +9,7 @@ from subiquitycore.testing import view_helpers
|
||||||
|
|
||||||
from subiquity.controllers.filesystem import FilesystemController
|
from subiquity.controllers.filesystem import FilesystemController
|
||||||
from subiquity.models.filesystem import (
|
from subiquity.models.filesystem import (
|
||||||
|
dehumanize_size,
|
||||||
Disk,
|
Disk,
|
||||||
FilesystemModel,
|
FilesystemModel,
|
||||||
Partition,
|
Partition,
|
||||||
|
@ -43,6 +44,41 @@ class PartitionViewTests(unittest.TestCase):
|
||||||
view = self.make_view()
|
view = self.make_view()
|
||||||
self.assertIsNone(view_helpers.find_button_matching(view, "Delete"))
|
self.assertIsNone(view_helpers.find_button_matching(view, "Delete"))
|
||||||
|
|
||||||
def test_delete_present_for_partition(self):
|
def test_delete_not_disabled_for_ordinary_partition(self):
|
||||||
view = self.make_view(Partition(size=50))
|
view = self.make_view(Partition(size=50))
|
||||||
self.assertIsNotNone(view_helpers.find_button_matching(view, "Delete"))
|
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 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_delete_button(self):
|
||||||
|
partition = Partition(size=50)
|
||||||
|
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_create_partition(self):
|
||||||
|
valid_data = {
|
||||||
|
'partnum':1,
|
||||||
|
'size':"1M",
|
||||||
|
'fstype':FilesystemModel.fs_by_name["ext4"],
|
||||||
|
}
|
||||||
|
view = self.make_view()
|
||||||
|
view_helpers.enter_data(view.form, valid_data)
|
||||||
|
view_helpers.click(view.form.done_btn.base_widget)
|
||||||
|
valid_data['mount'] = '/'
|
||||||
|
valid_data['size'] = dehumanize_size(valid_data['size'])
|
||||||
|
view.controller.partition_disk_handler.assert_called_once_with(
|
||||||
|
view.disk, None, valid_data)
|
||||||
|
|
|
@ -2,31 +2,36 @@ import re
|
||||||
|
|
||||||
import urwid
|
import urwid
|
||||||
|
|
||||||
def find_with_pred(w, pred):
|
def find_with_pred(w, pred, return_path=False):
|
||||||
def _walk(w):
|
def _walk(w, path):
|
||||||
if pred(w):
|
if pred(w):
|
||||||
return w
|
return w, path
|
||||||
if hasattr(w, '_wrapped_widget'):
|
if hasattr(w, '_wrapped_widget'):
|
||||||
return _walk(w._wrapped_widget)
|
return _walk(w._wrapped_widget, (w,) + path)
|
||||||
if hasattr(w, 'original_widget'):
|
if hasattr(w, 'original_widget'):
|
||||||
return _walk(w.original_widget)
|
return _walk(w.original_widget, (w,) + path)
|
||||||
if isinstance(w, urwid.ListBox):
|
if isinstance(w, urwid.ListBox):
|
||||||
for w in w.body:
|
for w in w.body:
|
||||||
r = _walk(w)
|
r, p = _walk(w, (w,) + path)
|
||||||
if r:
|
if r:
|
||||||
return r
|
return r, p
|
||||||
elif hasattr(w, 'contents'):
|
elif hasattr(w, 'contents'):
|
||||||
contents = w.contents
|
contents = w.contents
|
||||||
for w, _ in contents:
|
for w, _ in contents:
|
||||||
r = _walk(w)
|
r, p = _walk(w, (w,) + path)
|
||||||
if r:
|
if r:
|
||||||
return r
|
return r, p
|
||||||
return _walk(w)
|
return None, None
|
||||||
|
r, p = _walk(w, ())
|
||||||
|
if return_path:
|
||||||
|
return r, p
|
||||||
|
else:
|
||||||
|
return r
|
||||||
|
|
||||||
def find_button_matching(w, pat):
|
def find_button_matching(w, pat, return_path=False):
|
||||||
def pred(w):
|
def pred(w):
|
||||||
return isinstance(w, urwid.Button) and re.match(pat, w.label)
|
return isinstance(w, urwid.Button) and re.match(pat, w.label)
|
||||||
return find_with_pred(w, pred)
|
return find_with_pred(w, pred, return_path)
|
||||||
|
|
||||||
def click(but):
|
def click(but):
|
||||||
but._emit('click')
|
but._emit('click')
|
||||||
|
|
Loading…
Reference in New Issue