dbaccess/Module_dbaccess.mk | 5 + dbaccess/UITest_edit_field.mk | 20 +++++ dbaccess/qa/uitest/data/tdf75509.odb |binary dbaccess/qa/uitest/edit_field/tdf75509.py | 115 ++++++++++++++++++++++++++++++ 4 files changed, 140 insertions(+)
New commits: commit c7b3ea692f293346fbbdf2a391d9d971c34fa1f2 Author: Neil Roberts <[email protected]> AuthorDate: Tue Oct 28 14:26:27 2025 +0100 Commit: Xisco Fauli <[email protected]> CommitDate: Thu Oct 30 11:32:04 2025 +0100 tdf#75509 Add a UITest Change-Id: I523e49b6711944b68e99324385df6c9188c0cd6c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/193174 Tested-by: Jenkins Reviewed-by: Xisco Fauli <[email protected]> diff --git a/dbaccess/Module_dbaccess.mk b/dbaccess/Module_dbaccess.mk index f368fcc33e19..27da2e72c70e 100644 --- a/dbaccess/Module_dbaccess.mk +++ b/dbaccess/Module_dbaccess.mk @@ -89,6 +89,11 @@ $(eval $(call gb_Module_add_screenshot_targets,dbaccess,\ )) endif + +$(eval $(call gb_Module_add_uicheck_targets,dbaccess,\ + UITest_edit_field \ +)) + endif # vim: set noet sw=4 ts=4: diff --git a/dbaccess/UITest_edit_field.mk b/dbaccess/UITest_edit_field.mk new file mode 100644 index 000000000000..36053699487c --- /dev/null +++ b/dbaccess/UITest_edit_field.mk @@ -0,0 +1,20 @@ +# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*- +# +# 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/. +# + +$(eval $(call gb_UITest_UITest,edit_field)) + +$(eval $(call gb_UITest_add_modules,edit_field,$(SRCDIR)/dbaccess/qa/uitest,\ + edit_field/ \ +)) + +$(eval $(call gb_UITest_set_defs,edit_field, \ + TDOC="$(SRCDIR)/dbaccess/qa/uitest/data" \ +)) + +# vim: set noet sw=4 ts=4: diff --git a/dbaccess/qa/uitest/data/tdf75509.odb b/dbaccess/qa/uitest/data/tdf75509.odb new file mode 100644 index 000000000000..ad75091de8c3 Binary files /dev/null and b/dbaccess/qa/uitest/data/tdf75509.odb differ diff --git a/dbaccess/qa/uitest/edit_field/tdf75509.py b/dbaccess/qa/uitest/edit_field/tdf75509.py new file mode 100644 index 000000000000..0efbd11d117e --- /dev/null +++ b/dbaccess/qa/uitest/edit_field/tdf75509.py @@ -0,0 +1,115 @@ +# -*- 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_url_for_data_file, get_state_as_dict + +from libreoffice.uno.propertyvalue import mkPropertyValues + +from com.sun.star.util import URL + +#Bug 75509 - Incorrect display of digits in default Numeric formatting +# of a field when language isn't English +class tdf75509(UITestCase): + def execute_for_frame(self, xFrame, command): + url = URL() + url.Complete = command + xUrlTransformer = self.xContext.ServiceManager.createInstanceWithContext( + "com.sun.star.util.URLTransformer", self.xContext) + _, url = xUrlTransformer.parseStrict(url) + + xDispatch = xFrame.queryDispatch(url, "", 0) + xDispatch.dispatch(url, []) + + def test_tdf75509(self): + # The sample file is an HSQLDB database with a single table. Aside from the primary key, the + # table has two numeric type fields each with 2 decimal places. One of them is called + # “FrenchField” and is set to a French locale (ie, the decimal separator is “,”) and the + # other is called “EnglishField” and is set to a US English locale. + with self.ui_test.load_file(get_url_for_data_file("tdf75509.odb")) as document: + xDbWindow = self.xUITest.getTopFocusWindow() + + self.xUITest.executeCommand(".uno:DBViewTables") + + # We just want to select the single table in the list of tables but it seems difficult + # to get access to the treeview window for it because there are multiple treeviews in a + # hierarchy of windows with no name. However AppController handles SelectAll and that + # does the trick + self.xUITest.executeCommand(".uno:SelectAll") + + self.xUITest.executeCommand(".uno:DBTableEdit") + + xTableWindow = self.xUITest.getTopFocusWindow() + + xTableEditor = xTableWindow.getChild("DBTableEditor") + + # Select the “FrenchField” row + xTableEditor.executeAction("TYPE", mkPropertyValues({"KEYCODE": "DOWN"})) + + # Type a value with the comma decimal separator into the default value field + xDefaultValue = xTableWindow.getChild("DefaultValue") + + xDefaultValue.executeAction("FOCUS", tuple()) + xDefaultValue.executeAction("SET", mkPropertyValues({"TEXT": "3,14"})) + + # Focus something else so that the example text will get updated + xTableEditor.executeAction("FOCUS", tuple()) + + # The example format should be updated to reflect the default value + xFormatText = xTableWindow.getChild("FormatText") + self.assertEqual(get_state_as_dict(xFormatText)["Text"], "3,14") + + # Select the “EnglishField" + xTableEditor.executeAction("TYPE", mkPropertyValues({"KEYCODE": "DOWN"})) + + # Perform the same tests with the “.” decimal separator + xDefaultValue.executeAction("FOCUS", tuple()) + xDefaultValue.executeAction("SET", mkPropertyValues({"TEXT": "2.72"})) + xTableEditor.executeAction("FOCUS", tuple()) + self.assertEqual(get_state_as_dict(xFormatText)["Text"], "2.72") + + # Save the table (ie, just the table, not the actual database file to disk) + self.execute_for_frame(self.ui_test.get_desktop().getCurrentFrame(), ".uno:Save") + + self.xUITest.executeCommand(".uno:DBTableOpen") + + xTableWindow = self.xUITest.getTopFocusWindow() + + # Focus the “FrenchField” input in the table + xGrid = xTableWindow.getChild("DBGrid") + xGrid.executeAction("FOCUS", tuple()) + xGrid.executeAction("TYPE", mkPropertyValues({"KEYCODE": "TAB"})) + + # It should have the default value with a comma separator + xEdit = self.xUITest.getFocusWindow() + self.assertEqual(get_state_as_dict(xEdit)["Text"], "3,14") + + # Focus the “EnglishField” input in the table + xGrid.executeAction("TYPE", mkPropertyValues({"KEYCODE": "TAB"})) + + # It should have the default value with a dot separator + xEdit = self.xUITest.getFocusWindow() + self.assertEqual(get_state_as_dict(xEdit)["Text"], "2.72") + + # Modify the field so that the we can save the record + xEdit.executeAction("SET", mkPropertyValues({"TEXT": "2.71"})) + + self.execute_for_frame(self.ui_test.get_desktop().getCurrentFrame(), + ".uno:RecSave") + + # Check that the default values actually entered the database + xDbController = self.ui_test.get_desktop().getActiveFrame().getController() + xConnection = xDbController.ActiveConnection + xStatement = xConnection.createStatement() + xResultSet = xStatement.executeQuery("SELECT \"FrenchField\", \"EnglishField\" " + "FROM \"Table1\"") + self.assertTrue(xResultSet.next()) + self.assertEqual(xResultSet.getString(1), "3.14") + self.assertEqual(xResultSet.getString(2), "2.71") + +# vim: set shiftwidth=4 softtabstop=4 expandtab:
