test_web_ui: extend ui_driver methods

Add close_all_dialogs(),change assert_last_dialog_details() method
to assert_last_error_dialog() to make it more generic and tweak
add_record() method to skip asserts so we can assert later.

We are also changing assert_record_value() to accept list of values
and adding select_multiple_records().

https://pagure.io/freeipa/issue/7463

Reviewed-By: Petr Vobornik <pvoborni@redhat.com>
This commit is contained in:
Michal Reznik authored and Christian Heimes committed 2018-04-09 09:06:48 +02:00
1 parent dc4f28de52
commit 2a6ba687d0
1 file changed
+64 -5
+64 -5
View File
@@ -727,6 +727,20 @@ class UI_driver(object):
else:
break
def close_all_dialogs(self):
"""
Close all currently opened dialogs
"""
self.wait()
while True:
s = ".modal.fade.in .modal-header button.close"
btn = self.find(s, By.CSS_SELECTOR)
if btn:
btn.click()
self.wait(0.5)
else:
break
def get_form(self):
"""
Get last dialog or visible facet
@@ -1034,6 +1048,15 @@ class UI_driver(object):
'Record was not checked: %s' % input_s
self.wait()
def select_multiple_records(self, records):
"""
Select multiple records
"""
for data in records:
pkey = data['pkey']
self.select_record(pkey)
def get_record_value(self, pkey, column, parent=None, table_name=None):
"""
Get table column's text value
@@ -1246,10 +1269,13 @@ class UI_driver(object):
def add_record(self, entity, data, facet='search', facet_btn='add',
dialog_btn='add', delete=False, pre_delete=True,
dialog_name='add', navigate=True, combobox_input=None):
dialog_name='add', navigate=True, combobox_input=None,
negative=False):
"""
Add records.
When negative=True we are skipping final assertions.
Expected data format:
{
'pkey': 'key',
@@ -1295,6 +1321,9 @@ class UI_driver(object):
self.dialog_button_click('ok')
self.wait_for_request()
if negative:
return
# check for error
self.assert_no_error_dialog()
self.wait_for_request()
@@ -1861,12 +1890,20 @@ class UI_driver(object):
key = pkey
self.assert_record(key, negative=negative)
def assert_record_value(self, expected, pkey, column, parent=None, table_name=None):
def assert_record_value(self, expected, pkeys, column, parent=None,
table_name=None):
"""
Assert that column's value of record defined by pkey equals expected value.
Assert that column's value of record defined by pkey equals expected
value.
"""
val = self.get_record_value(pkey, column, parent, table_name)
assert expected == val, "Invalid value: '%s'. Expected: '%s'." % (val, expected)
if type(pkeys) is not list:
pkeys = [pkeys]
for pkey in pkeys:
val = self.get_record_value(pkey, column, parent, table_name)
assert expected == val, ("Invalid value: '%s'. Expected: '%s'."
% (val, expected))
def assert_class(self, element, cls, negative=False):
"""
@@ -1980,3 +2017,25 @@ class UI_driver(object):
assert is_present, "Notification not present"
if assert_text:
assert assert_text in is_present.text
def assert_last_error_dialog(self, expected_err, details=False,
dialog_name='error_dialog'):
"""
Assert error dialog body text or when details=True click on
'Show details' and assert text there
"""
err_dialog = self.get_last_error_dialog(dialog_name=dialog_name)
if details:
# open "Show details" paragraph
s = 'a[title="Show details"]'
details = self.find(s, By.CSS_SELECTOR)
details.click()
s = 'ul.error-container li p'
self.assert_text(s, expected_err, parent=err_dialog)
else:
s = '.modal-body div p'
self.assert_text(s, expected_err, parent=err_dialog)