Fix tests for webelem.is_visible
This commit is contained in:
parent
73d7d57879
commit
535c7c316c
@ -24,46 +24,63 @@ from unittest import TestCase
|
|||||||
from unittest.mock import Mock
|
from unittest.mock import Mock
|
||||||
|
|
||||||
from PyQt5.QtCore import QRect, QPoint
|
from PyQt5.QtCore import QRect, QPoint
|
||||||
|
from PyQt5.QtWebKit import QWebElement
|
||||||
|
|
||||||
import qutebrowser.utils.webelem as webelem
|
import qutebrowser.utils.webelem as webelem
|
||||||
|
|
||||||
|
|
||||||
class FakeWebElement:
|
class FakeWebElement:
|
||||||
|
|
||||||
def __init__(self, geometry=None, frame=None, null=False):
|
def __init__(self, geometry=None, frame=None, null=False, visibility='',
|
||||||
|
display=''):
|
||||||
self.geometry = Mock(return_value=geometry)
|
self.geometry = Mock(return_value=geometry)
|
||||||
self.webFrame = Mock(return_value=frame)
|
self.webFrame = Mock(return_value=frame)
|
||||||
self.isNull = Mock(return_value=null)
|
self.isNull = Mock(return_value=null)
|
||||||
|
self._visibility = visibility
|
||||||
|
self._display = display
|
||||||
|
|
||||||
|
def styleProperty(self, name, strategy):
|
||||||
|
if strategy != QWebElement.ComputedStyle:
|
||||||
|
raise ValueError("styleProperty called with strategy != "
|
||||||
|
"ComputedStyle ({})!".format(strategy))
|
||||||
|
if name == 'visibility':
|
||||||
|
return self._visibility
|
||||||
|
elif name == 'display':
|
||||||
|
return self._display
|
||||||
|
else:
|
||||||
|
raise ValueError("styleProperty called with unknown name "
|
||||||
|
"'{}'".format(name))
|
||||||
|
|
||||||
|
|
||||||
class FakeWebFrame:
|
class FakeWebFrame:
|
||||||
|
|
||||||
def __init__(self, geometry, scroll):
|
def __init__(self, geometry, scroll, parent=None):
|
||||||
self.geometry = Mock(return_value=geometry)
|
self.geometry = Mock(return_value=geometry)
|
||||||
self.scrollPosition = Mock(return_value=scroll)
|
self.scrollPosition = Mock(return_value=scroll)
|
||||||
|
self.parentFrame = Mock(return_value=parent)
|
||||||
|
|
||||||
|
|
||||||
class IsVisibleInvalidTests(TestCase):
|
class IsVisibleInvalidTests(TestCase):
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.frame = FakeWebFrame(QRect(0, 0, 100, 100), QPoint(0, 0))
|
self.frame = FakeWebFrame(QRect(0, 0, 100, 100), scroll=QPoint(0, 0))
|
||||||
|
|
||||||
def test_nullelem(self):
|
def test_nullelem(self):
|
||||||
elem = FakeWebElement(null=True)
|
elem = FakeWebElement(null=True)
|
||||||
with self.assertRaises(ValueError):
|
with self.assertRaises(ValueError):
|
||||||
webelem.is_visible(elem)
|
webelem.is_visible(elem, self.frame)
|
||||||
elem.isNull.assert_called_once_with()
|
elem.isNull.assert_called_once_with()
|
||||||
self.assertFalse(elem.geometry.called)
|
self.assertFalse(elem.geometry.called)
|
||||||
self.assertFalse(elem.webFrame.called)
|
self.assertFalse(elem.webFrame.called)
|
||||||
|
|
||||||
def test_invalid_invisible(self):
|
def test_invalid_invisible(self):
|
||||||
elem = FakeWebElement(geometry=QRect(0, 0, 0, 0))
|
elem = FakeWebElement(geometry=QRect(0, 0, 0, 0), frame=self.frame)
|
||||||
self.assertFalse(elem.geometry().isValid())
|
self.assertFalse(elem.geometry().isValid())
|
||||||
self.assertEqual(elem.geometry().x(), 0)
|
self.assertEqual(elem.geometry().x(), 0)
|
||||||
self.assertFalse(webelem.is_visible(elem))
|
self.assertFalse(webelem.is_visible(elem, self.frame))
|
||||||
|
|
||||||
def test_invalid_visible(self):
|
def test_invalid_visible(self):
|
||||||
elem = FakeWebElement(geometry=QRect(10, 10, 0, 0))
|
elem = FakeWebElement(geometry=QRect(10, 10, 0, 0), frame=self.frame)
|
||||||
self.assertFalse(elem.geometry().isValid())
|
self.assertFalse(elem.geometry().isValid())
|
||||||
self.assertTrue(webelem.is_visible(elem, self.frame))
|
self.assertTrue(webelem.is_visible(elem, self.frame))
|
||||||
|
|
||||||
@ -71,14 +88,14 @@ class IsVisibleInvalidTests(TestCase):
|
|||||||
class IsVisibleScrollTests(TestCase):
|
class IsVisibleScrollTests(TestCase):
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.frame = FakeWebFrame(QRect(0, 0, 100, 100), QPoint(10, 10))
|
self.frame = FakeWebFrame(QRect(0, 0, 100, 100), scroll=QPoint(10, 10))
|
||||||
|
|
||||||
def test_invisible(self):
|
def test_invisible(self):
|
||||||
elem = FakeWebElement(geometry=QRect(9, 9, 0, 0))
|
elem = FakeWebElement(geometry=QRect(5, 5, 4, 4), frame=self.frame)
|
||||||
self.assertFalse(webelem.is_visible(elem, self.frame))
|
self.assertFalse(webelem.is_visible(elem, self.frame))
|
||||||
|
|
||||||
def test_visible(self):
|
def test_visible(self):
|
||||||
elem = FakeWebElement(geometry=QRect(10, 10, 0, 0))
|
elem = FakeWebElement(geometry=QRect(10, 10, 1, 1), frame=self.frame)
|
||||||
self.assertTrue(webelem.is_visible(elem, self.frame))
|
self.assertTrue(webelem.is_visible(elem, self.frame))
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user