# pylint:disable=no-member
from . import client # pylint:disable=unused-import
__all__ = ['LiveTestCaseMixin']
[docs]class LiveTestCaseMixin(object):
live_client_class = client.LiveClient
[docs] def setUp(self): # pylint:disable=invalid-name
"""Call super's setUp and instantiate a live test client, only once."""
super().setUp()
if not hasattr(self.__class__, 'client'):
self.__class__.client = self.live_client_class(self.live_server_url)
self.client = self.__class__.client
[docs] @classmethod
def tearDownClass(cls): # pylint:disable=invalid-name
"""Quit the live-test client and call super's tearDownClass."""
if hasattr(cls, 'client'):
cls.client.quit()
super().tearDownClass()
# Asserts
[docs] def assertElementEqual(self, name, value, enabled=True): # pylint:disable=invalid-name
"""Check the properties of an element. Works with both WebElement and Select."""
if enabled:
self.assertElementIsEnabled(name)
else:
self.assertElementIsDisabled(name)
element = self.client.find_name(name)
Select = self.client.web_driver.web_element_classes['select'] # pylint:disable=invalid-name
if isinstance(element, Select):
self.assertSelectOptions(name, value)
else:
self.assertElementValue(name, value)
[docs] def assertElementIsDisabled(self, name, *args, **kwargs): # pylint:disable=invalid-name
self.assertFalse(self.client.find_name(name).is_enabled(), *args, **kwargs)
[docs] def assertElementIsEnabled(self, name, *args, **kwargs): # pylint:disable=invalid-name
self.assertTrue(self.client.find_name(name).is_enabled(), *args, **kwargs)
[docs] def assertElementIsReadOnly(self, name): # pylint:disable=invalid-name
self.assertIsNotNone(self.client.find_name(name).get_attribute('readonly'))
[docs] def assertElementValue(self, name, value, *args, **kwargs): # pylint:disable=invalid-name
element = self.client.find_name(name)
operator = kwargs.pop('operator', lambda x: x)
self.assertEqual(
operator(element.get_attribute('value')),
element.clean_value(value),
*args,
**kwargs)
[docs] def assertSelectOptions(self, name, texts, *args, **kwargs): # pylint:disable=invalid-name
self.assertListEqual(
sorted(o.text for o in self.client.find_name(name).all_selected_options),
sorted([texts] if isinstance(texts, str) else texts), *args, **kwargs)