From a0ae96d43e662ce40b959a177ef3840d831068ee Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Thu, 28 Jul 2016 14:46:32 +0200 Subject: [PATCH] Add more WebElementWrapper tests --- tests/unit/browser/webkit/test_webelem.py | 38 ++++++++++++++++++----- 1 file changed, 31 insertions(+), 7 deletions(-) diff --git a/tests/unit/browser/webkit/test_webelem.py b/tests/unit/browser/webkit/test_webelem.py index 621e5a1b0..0fe09fda5 100644 --- a/tests/unit/browser/webkit/test_webelem.py +++ b/tests/unit/browser/webkit/test_webelem.py @@ -453,15 +453,39 @@ class TestWebElementWrapper: elem._elem.findFirst.return_value = nullelem._elem assert elem.find_first('foo') is None - def test_text(self, elem): - raise Exception + @pytest.mark.parametrize('use_js, editable, expected', [ + (True, 'false', 'js'), + (True, 'true', 'nojs'), + (False, 'false', 'nojs'), + (False, 'true', 'nojs'), + ]) + def test_text(self, use_js, editable, expected): + elem = get_webelem(attributes={'contenteditable': editable}) + elem._elem.toPlainText.return_value = 'nojs' + elem._elem.evaluateJavaScript.return_value = 'js' + assert elem.text(use_js=use_js) == expected - def test_set_text(self, elem): - raise Exception - - def test_run_js_async(self, elem): - raise Exception + @pytest.mark.parametrize('use_js, editable, text, uses_js, arg', [ + (True, 'false', 'foo', True, "this.value='foo'"), + (True, 'false', "foo'bar", True, r"this.value='foo\'bar'"), + (True, 'true', 'foo', False, 'foo'), + (False, 'false', 'foo', False, 'foo'), + (False, 'true', 'foo', False, 'foo'), + ]) + def test_set_text(self, use_js, editable, text, uses_js, arg): + elem = get_webelem(attributes={'contenteditable': editable}) + elem.set_text(text, use_js=use_js) + attr = 'evaluateJavaScript' if uses_js else 'setPlainText' + called_mock = getattr(elem._elem, attr) + called_mock.assert_called_with(arg) + @pytest.mark.parametrize('with_cb', [True, False]) + def test_run_js_async(self, elem, with_cb): + cb = mock.Mock(spec={}) if with_cb else None + elem._elem.evaluateJavaScript.return_value = 42 + elem.run_js_async('the_answer();', cb) + if with_cb: + cb.assert_called_with(42) class TestRemoveBlankTarget: