sc/qa/uitest/calc_tests3/tdf95217.py |   54 +++++++++++++++++++++++++++++++++++
 sc/qa/uitest/data/tdf95217.html      |   49 +++++++++++++++++++++++++++++++
 uitest/uitest/test.py                |   26 ++++++++++++++++
 3 files changed, 129 insertions(+)

New commits:
commit d7fb6b22cf7e66eb2594001cc42c6bff8b5a49e2
Author:     Xisco Fauli <[email protected]>
AuthorDate: Mon Dec 27 16:50:20 2021 +0100
Commit:     Xisco Fauli <[email protected]>
CommitDate: Thu Dec 30 11:03:38 2021 +0100

    tdf#95217, tdf#142600: sc: Add UItest
    
    for that, launch an http server in a separate thread
    
    Change-Id: I9d78c9a4349620a9de31b3963f2a31ff1d354f86
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/127592
    Tested-by: Jenkins
    Reviewed-by: Xisco Fauli <[email protected]>

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:

Reply via email to