summaryrefslogtreecommitdiff
path: root/sc/qa
diff options
context:
space:
mode:
authorAndreas Heinisch <andreas.heinisch@yahoo.de>2022-03-07 22:30:13 +0100
committerAndreas Heinisch <andreas.heinisch@yahoo.de>2022-04-07 11:31:28 +0200
commit803c9a6f8d8681e1862e4132dbbc8cdb2f61b7b6 (patch)
tree312118a76b05f67484b7be4d8c9218c26746607c /sc/qa
parent07a1442b2441cc032c05fd9abf5b1a8db6c7e007 (diff)
tdf#80043 - Put selected text into hyperlink item
If the user selects an entire cell by a single click, and inserts an URL via the hyperlink dialog, the entire content of the corresponding cell will be replaced instead of inserting a duplicate, or appending the URL. If the cell contains more than one URL or an URL including some additional text within the cell, the hyperlink dialog will only preselect the text field when opening. If this is not the case, it fill the URL field as well. Change-Id: I9a10c3f302a6cf91a4d9dfadfbe775075eb00fad Reviewed-on: https://gerrit.libreoffice.org/c/core/+/131156 Tested-by: Jenkins Reviewed-by: Andreas Heinisch <andreas.heinisch@yahoo.de>
Diffstat (limited to 'sc/qa')
-rw-r--r--sc/qa/uitest/calc_tests9/tdf80043.py243
1 files changed, 243 insertions, 0 deletions
diff --git a/sc/qa/uitest/calc_tests9/tdf80043.py b/sc/qa/uitest/calc_tests9/tdf80043.py
new file mode 100644
index 000000000000..eb99f0038871
--- /dev/null
+++ b/sc/qa/uitest/calc_tests9/tdf80043.py
@@ -0,0 +1,243 @@
+# -*- 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 libreoffice.uno.propertyvalue import mkPropertyValues
+from libreoffice.calc.document import get_cell_by_position
+from uitest.uihelper.calc import enter_text_to_cell
+from uitest.uihelper.common import get_state_as_dict, select_pos
+
+class tdf80043(UITestCase):
+ def test_tdf80043_empty_cell(self):
+ with self.ui_test.create_doc_in_start_center("calc") as document:
+ xCalcDoc = self.xUITest.getTopFocusWindow()
+ xGridWindow = xCalcDoc.getChild("grid_window")
+
+ # Select an empty cell and insert a hyperlink
+ xGridWindow.executeAction("SELECT", mkPropertyValues({"CELL": "A1"}))
+ with self.ui_test.execute_dialog_through_command(".uno:HyperlinkDialog") as xDialog:
+ xTab = xDialog.getChild("tabcontrol")
+ select_pos(xTab, "0")
+
+ # Both fields in the hyperlink dialog should be empty
+ xTarget = xDialog.getChild("target")
+ self.assertEqual(get_state_as_dict(xTarget)["Text"], "")
+ xIndication = xDialog.getChild("indication")
+ self.assertEqual(get_state_as_dict(xIndication)["Text"], "")
+
+ # Insert a sample hyperlink
+ xTarget.executeAction("TYPE", mkPropertyValues({"TEXT": "http://www.libreoffice.org/"}))
+ xIndication.executeAction("TYPE", mkPropertyValues({"TEXT": "LibreOffice"}))
+
+ # Move focus to ensure cell is not in edit mode
+ xGridWindow.executeAction("SELECT", mkPropertyValues({"CELL": "A2"}))
+ xGridWindow.executeAction("SELECT", mkPropertyValues({"CELL": "A1"}))
+
+ # Check contents of the cell
+ xCell = get_cell_by_position(document, 0, 0, 0)
+ self.assertEqual(xCell.getString(), "LibreOffice")
+ xTextFields = xCell.getTextFields()
+ self.assertEqual(xTextFields.getCount(), 1)
+ self.assertEqual(xTextFields.getByIndex(0).URL, "http://www.libreoffice.org/")
+
+ # Reopen hyperlink dialog and check the target and the indication of the hyperlink
+ with self.ui_test.execute_dialog_through_command(".uno:HyperlinkDialog", close_button="cancel") as xDialog:
+ xTab = xDialog.getChild("tabcontrol")
+ select_pos(xTab, "0")
+
+ # Text should contain the text of the cell
+ xTarget = xDialog.getChild("target")
+ self.assertEqual(get_state_as_dict(xTarget)["Text"], "http://www.libreoffice.org/")
+ xIndication = xDialog.getChild("indication")
+ self.assertEqual(get_state_as_dict(xIndication)["Text"], "LibreOffice")
+
+ def test_tdf80043_text_cell(self):
+ with self.ui_test.create_doc_in_start_center("calc") as document:
+ xCalcDoc = self.xUITest.getTopFocusWindow()
+ xGridWindow = xCalcDoc.getChild("grid_window")
+
+ # Select a cell including a text and insert a hyperlink
+ enter_text_to_cell(xGridWindow, "A1", "LibreOffice")
+ # Move focus to ensure cell is not in edit mode
+ xGridWindow.executeAction("SELECT", mkPropertyValues({"CELL": "A2"}))
+ xGridWindow.executeAction("SELECT", mkPropertyValues({"CELL": "A1"}))
+ with self.ui_test.execute_dialog_through_command(".uno:HyperlinkDialog") as xDialog:
+ xTab = xDialog.getChild("tabcontrol")
+ select_pos(xTab, "0")
+
+ # Text should contain the text of the cell
+ xTarget = xDialog.getChild("target")
+ self.assertEqual(get_state_as_dict(xTarget)["Text"], "")
+ xIndication = xDialog.getChild("indication")
+ self.assertEqual(get_state_as_dict(xIndication)["Text"], "LibreOffice")
+
+ # Insert a sample hyperlink
+ xTarget.executeAction("TYPE", mkPropertyValues({"TEXT": "http://www.libreoffice.org/"}))
+
+ # Move focus to ensure cell is not in edit mode
+ xGridWindow.executeAction("SELECT", mkPropertyValues({"CELL": "A2"}))
+ xGridWindow.executeAction("SELECT", mkPropertyValues({"CELL": "A1"}))
+
+ # Check contents of the cell
+ xCell = get_cell_by_position(document, 0, 0, 0)
+ self.assertEqual(xCell.getString(), "LibreOffice")
+ xTextFields = xCell.getTextFields()
+ self.assertEqual(xTextFields.getCount(), 1)
+ self.assertEqual(xTextFields.getByIndex(0).URL, "http://www.libreoffice.org/")
+
+ # Reopen hyperlink dialog and check the target and the indication of the hyperlink
+ with self.ui_test.execute_dialog_through_command(".uno:HyperlinkDialog", close_button="cancel") as xDialog:
+ xTab = xDialog.getChild("tabcontrol")
+ select_pos(xTab, "0")
+
+ # Text should contain the text of the cell
+ xTarget = xDialog.getChild("target")
+ self.assertEqual(get_state_as_dict(xTarget)["Text"], "http://www.libreoffice.org/")
+ xIndication = xDialog.getChild("indication")
+ self.assertEqual(get_state_as_dict(xIndication)["Text"], "LibreOffice")
+
+ def test_tdf80043_link_text_cell(self):
+ with self.ui_test.create_doc_in_start_center("calc") as document:
+ xCalcDoc = self.xUITest.getTopFocusWindow()
+ xGridWindow = xCalcDoc.getChild("grid_window")
+
+ # Select a cell including a text and insert a hyperlink
+ enter_text_to_cell(xGridWindow, "A1", "LibreOffice")
+ # Move focus to ensure cell is not in edit mode
+ xGridWindow.executeAction("SELECT", mkPropertyValues({"CELL": "A2"}))
+ xGridWindow.executeAction("SELECT", mkPropertyValues({"CELL": "A1"}))
+ with self.ui_test.execute_dialog_through_command(".uno:HyperlinkDialog") as xDialog:
+ xTab = xDialog.getChild("tabcontrol")
+ select_pos(xTab, "0")
+
+ # Text should contain the text of the cell
+ xTarget = xDialog.getChild("target")
+ self.assertEqual(get_state_as_dict(xTarget)["Text"], "")
+ xIndication = xDialog.getChild("indication")
+ self.assertEqual(get_state_as_dict(xIndication)["Text"], "LibreOffice")
+
+ # Insert a sample hyperlink
+ xTarget.executeAction("TYPE", mkPropertyValues({"TEXT": "http://www.libreoffice.org/"}))
+
+ # Move focus to ensure cell is not in edit mode
+ xGridWindow.executeAction("SELECT", mkPropertyValues({"CELL": "A2"}))
+ xGridWindow.executeAction("SELECT", mkPropertyValues({"CELL": "A1"}))
+
+ # Insert an additional text without a hyperlink in the cell including a hyperlink
+ self.xUITest.executeCommand(".uno:SetInputMode")
+ enter_text_to_cell(xGridWindow, "A1", " Document Foundation")
+
+ # Check contents of the cell
+ xCell = get_cell_by_position(document, 0, 0, 0)
+ self.assertEqual(xCell.getString(), "LibreOffice Document Foundation")
+ xTextFields = xCell.getTextFields()
+ self.assertEqual(xTextFields.getCount(), 1)
+ self.assertEqual(xTextFields.getByIndex(0).URL, "http://www.libreoffice.org/")
+
+ # Move focus to ensure cell is not in edit mode
+ xGridWindow.executeAction("SELECT", mkPropertyValues({"CELL": "A2"}))
+ xGridWindow.executeAction("SELECT", mkPropertyValues({"CELL": "A1"}))
+
+ # Reopen hyperlink dialog and check the target and the indication of the hyperlink
+ with self.ui_test.execute_dialog_through_command(".uno:HyperlinkDialog") as xDialog:
+ xTab = xDialog.getChild("tabcontrol")
+ select_pos(xTab, "0")
+
+ # Text should contain the text of the cell
+ xTarget = xDialog.getChild("target")
+ self.assertEqual(get_state_as_dict(xTarget)["Text"], "")
+ xTarget.executeAction("TYPE", mkPropertyValues({"TEXT": "https://www.documentfoundation.org/"}))
+ xIndication = xDialog.getChild("indication")
+ self.assertEqual(get_state_as_dict(xIndication)["Text"], "LibreOffice Document Foundation")
+
+ # Check contents of the cell - move focus, otherwise text fields won't be updated
+ xGridWindow.executeAction("SELECT", mkPropertyValues({"CELL": "A2"}))
+ xCell = get_cell_by_position(document, 0, 0, 0)
+ self.assertEqual(xCell.getString(), "LibreOffice Document Foundation")
+ xTextFields = xCell.getTextFields()
+ self.assertEqual(xTextFields.getCount(), 1)
+ self.assertEqual(xTextFields.getByIndex(0).URL, "https://www.documentfoundation.org/")
+
+ def test_tdf80043_link_link_cell(self):
+ with self.ui_test.create_doc_in_start_center("calc") as document:
+ xCalcDoc = self.xUITest.getTopFocusWindow()
+ xGridWindow = xCalcDoc.getChild("grid_window")
+
+ # Select a cell including a text and insert a hyperlink
+ enter_text_to_cell(xGridWindow, "A1", "Libre")
+ # Move focus to ensure cell is not in edit mode
+ xGridWindow.executeAction("SELECT", mkPropertyValues({"CELL": "A2"}))
+ xGridWindow.executeAction("SELECT", mkPropertyValues({"CELL": "A1"}))
+ with self.ui_test.execute_dialog_through_command(".uno:HyperlinkDialog") as xDialog:
+ xTab = xDialog.getChild("tabcontrol")
+ select_pos(xTab, "0")
+
+ # Text should contain the text of the cell
+ xTarget = xDialog.getChild("target")
+ self.assertEqual(get_state_as_dict(xTarget)["Text"], "")
+ xIndication = xDialog.getChild("indication")
+ self.assertEqual(get_state_as_dict(xIndication)["Text"], "Libre")
+
+ # Insert a sample hyperlink
+ xTarget.executeAction("TYPE", mkPropertyValues({"TEXT": "http://www.libreoffice.org/"}))
+
+ # Move focus to ensure cell is not in edit mode
+ xGridWindow.executeAction("SELECT", mkPropertyValues({"CELL": "A2"}))
+ xGridWindow.executeAction("SELECT", mkPropertyValues({"CELL": "A1"}))
+
+ # Insert an additional hyperlink in the cell
+ self.xUITest.executeCommand(".uno:SetInputMode")
+ xGridWindow.executeAction("TYPE", mkPropertyValues({"KEYCODE": "Office Document Foundation"}))
+ xGridWindow.executeAction("TYPE", mkPropertyValues({"KEYCODE": "SHIFT+CTRL+LEFT"}))
+ with self.ui_test.execute_dialog_through_command(".uno:HyperlinkDialog") as xDialog:
+ xTab = xDialog.getChild("tabcontrol")
+ select_pos(xTab, "0")
+
+ # Text should contain the text of the cell
+ xTarget = xDialog.getChild("target")
+ self.assertEqual(get_state_as_dict(xTarget)["Text"], "")
+ xIndication = xDialog.getChild("indication")
+ self.assertEqual(get_state_as_dict(xIndication)["Text"], "Foundation")
+
+ # Insert a sample hyperlink
+ xTarget.executeAction("TYPE", mkPropertyValues({"TEXT": "https://www.documentfoundation.org/"}))
+
+ # Check contents of the cell
+ xGridWindow.executeAction("SELECT", mkPropertyValues({"CELL": "A2"}))
+ xCell = get_cell_by_position(document, 0, 0, 0)
+ self.assertEqual(xCell.getString(), "LibreOffice Document Foundation")
+ xTextFields = xCell.getTextFields()
+ self.assertEqual(xTextFields.getCount(), 2)
+ self.assertEqual(xTextFields.getByIndex(0).URL, "http://www.libreoffice.org/")
+ self.assertEqual(xTextFields.getByIndex(1).URL, "https://www.documentfoundation.org/")
+
+ # Move focus to ensure cell is not in edit mode
+ xGridWindow.executeAction("SELECT", mkPropertyValues({"CELL": "A2"}))
+ xGridWindow.executeAction("SELECT", mkPropertyValues({"CELL": "A1"}))
+
+ # Reopen hyperlink dialog and check the target and the indication of the hyperlink
+ with self.ui_test.execute_dialog_through_command(".uno:HyperlinkDialog") as xDialog:
+ xTab = xDialog.getChild("tabcontrol")
+ select_pos(xTab, "0")
+
+ xTarget = xDialog.getChild("target")
+ self.assertEqual(get_state_as_dict(xTarget)["Text"], "")
+ xTarget.executeAction("TYPE", mkPropertyValues({"TEXT": "https://wiki.documentfoundation.org/Main_Page"}))
+ xIndication = xDialog.getChild("indication")
+ self.assertEqual(get_state_as_dict(xIndication)["Text"], "LibreOffice Document Foundation")
+
+ # Check contents of the cell - move focus, otherwise text fields won't be updated
+ xGridWindow.executeAction("SELECT", mkPropertyValues({"CELL": "A2"}))
+ xCell = get_cell_by_position(document, 0, 0, 0)
+ self.assertEqual(xCell.getString(), "LibreOffice Document Foundation")
+ xTextFields = xCell.getTextFields()
+ self.assertEqual(xTextFields.getCount(), 1)
+ self.assertEqual(xTextFields.getByIndex(0).URL, "https://wiki.documentfoundation.org/Main_Page")
+
+# vim: set shiftwidth=4 softtabstop=4 expandtab: