summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sc/qa/uitest/calc_tests3/tdf95217.py54
-rw-r--r--sc/qa/uitest/data/tdf95217.html49
-rw-r--r--uitest/uitest/test.py26
3 files changed, 129 insertions, 0 deletions
diff --git a/sc/qa/uitest/calc_tests3/tdf95217.py b/sc/qa/uitest/calc_tests3/tdf95217.py
new file mode 100644
index 000000000000..98f79e51b027
--- /dev/null
+++ b/sc/qa/uitest/calc_tests3/tdf95217.py
@@ -0,0 +1,54 @@
+# -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+
+from uitest.framework import UITestCase
+from uitest.uihelper.common import get_state_as_dict
+from uitest.uihelper.common import select_pos
+from libreoffice.uno.propertyvalue import mkPropertyValues
+from uitest.uihelper.common import get_url_for_data_file
+from libreoffice.calc.document import get_cell_by_position
+
+class tdf95217(UITestCase):
+
+ def test_tdf95217(self):
+
+ with self.ui_test.launch_HTTP_server("tdf95217.html") as url:
+
+ with self.ui_test.create_doc_in_start_center("calc") as calc_doc:
+
+ with self.ui_test.execute_dialog_through_command(".uno:InsertExternalDataSource", close_button="") as xDialog:
+ xUrl = xDialog.getChild("url")
+ xUrl.executeAction("TYPE", mkPropertyValues({"TEXT": url}))
+
+ with self.ui_test.execute_blocking_action(xUrl.executeAction, args=("TYPE", mkPropertyValues({"KEYCODE": "RETURN"}))):
+ pass
+
+ xRanges = xDialog.getChild("ranges")
+ self.assertEqual("3", get_state_as_dict(xRanges)["Children"])
+
+ # tdf#142600: Without the fix in place, this test would have failed with
+ # AssertionError: 'HTML_all' != 'HTML_1'
+ self.assertEqual("HTML_all", get_state_as_dict(xRanges.getChild("0"))["Text"])
+ self.assertEqual("HTML_tables", get_state_as_dict(xRanges.getChild("1"))["Text"])
+ self.assertEqual("HTML_1", get_state_as_dict(xRanges.getChild("2"))["Text"])
+
+ # FIXME: close_dialog_through_button fails here
+ xOkBtn = xDialog.getChild("ok")
+ xOkBtn.executeAction("CLICK", tuple())
+
+ # Without the fix in place, this test would have failed with
+ # AssertionError: 'وضعیت بازار' != 'وضعیت بازار'
+ self.assertEqual("وضعیت بازار", get_cell_by_position(calc_doc, 0, 0, 0).getString())
+ self.assertEqual("شاخص کل", get_cell_by_position(calc_doc, 0, 0, 1).getString())
+ self.assertEqual("شاخص كل (هم وزن)", get_cell_by_position(calc_doc, 0, 0, 2).getString())
+ self.assertEqual("بسته", get_cell_by_position(calc_doc, 0, 1, 0).getString())
+ self.assertEqual("63175", get_cell_by_position(calc_doc, 0, 1, 1).getString())
+ self.assertEqual("9,690.30 (22.80)", get_cell_by_position(calc_doc, 0, 1, 2).getString())
+
+# vim: set shiftwidth=4 softtabstop=4 expandtab:
diff --git a/sc/qa/uitest/data/tdf95217.html b/sc/qa/uitest/data/tdf95217.html
new file mode 100644
index 000000000000..0d036333ec94
--- /dev/null
+++ b/sc/qa/uitest/data/tdf95217.html
@@ -0,0 +1,49 @@
+<!doctype html>
+<html>
+ <head><title>.:TSETMC:. :: شرکت مدیریت فناوری بورس تهران</title></head>
+ <body>
+ <table class="table1">
+ <tbody>
+ <tr>
+ <td>وضعیت بازار</td>
+ <td>بسته&nbsp;</td>
+ </tr>
+
+ <tr>
+ <td>شاخص کل</td>
+ <td>63,175</td>
+ </tr>
+
+ <tr>
+ <td>شاخص كل (هم وزن)</td>
+ <td>9,690.30 (22.80)</td>
+ </tr>
+
+ <tr>
+ <td>ارزش بازار</td>
+ <td>2,733,260.531 B</td>
+ </tr>
+
+ <tr>
+ <td>اطلاعات قیمت</td>
+ <td>94/7/29 12:34:44</td>
+ </tr>
+
+ <tr>
+ <td>تعداد معاملات</td>
+ <td>25,211</td>
+ </tr>
+
+ <tr>
+ <td>ارزش معاملات</td>
+ <td>732.587 B</td>
+ </tr>
+
+ <tr>
+ <td>حجم معاملات</td>
+ <td>312.439 M</td>
+ </tr>
+ </tbody>
+ </table>
+ </body>
+</html>
diff --git a/uitest/uitest/test.py b/uitest/uitest/test.py
index 3beee0d274f2..c798e76533dd 100644
--- a/uitest/uitest/test.py
+++ b/uitest/uitest/test.py
@@ -6,11 +6,14 @@
#
import time
+import functools
import threading
from contextlib import contextmanager
from uitest.config import DEFAULT_SLEEP
from uitest.config import MAX_WAIT
from uitest.uihelper.common import get_state_as_dict
+from http.server import HTTPServer, SimpleHTTPRequestHandler
+import os
from com.sun.star.uno import RuntimeException
@@ -268,4 +271,27 @@ class UITest(object):
time.sleep(DEFAULT_SLEEP)
raise Exception("Did not execute a dialog for a blocking action")
+ @contextmanager
+ def launch_HTTP_server(self, file_name):
+ # Spawns an http.server.HTTPServer in a separate thread
+
+ tdoc = os.getenv("TDOC")
+
+ if not os.path.exists(os.path.join(tdoc, file_name)):
+ raise Exception("File doesn't exists: " + file_name)
+
+ # Serve in TDOC directory
+ handler = functools.partial(SimpleHTTPRequestHandler, directory=tdoc)
+
+ with HTTPServer(("localhost", 0), handler) as httpd:
+ try:
+ thread = threading.Thread(target=httpd.serve_forever)
+ thread.start()
+ url = "http://%s:%d/%s" % (httpd.server_name, httpd.server_port, file_name)
+ yield url
+ finally:
+ # Call shutdown in case the testcase fails
+ httpd.shutdown()
+ thread.join()
+
# vim: set shiftwidth=4 softtabstop=4 expandtab: