tdf#131291: Add UItest

Change-Id: I65aede1899d2c509fd52f8db0657ec3a5791f681
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/90430
Tested-by: Jenkins
Reviewed-by: Xisco FaulĂ­ <xiscofauli@libreoffice.org>
Signed-off-by: Xisco Fauli <xiscofauli@libreoffice.org>
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/90390
diff --git a/sc/qa/uitest/calc_tests/data/tdf131291.ods b/sc/qa/uitest/calc_tests/data/tdf131291.ods
new file mode 100644
index 0000000..76a87c2
--- /dev/null
+++ b/sc/qa/uitest/calc_tests/data/tdf131291.ods
Binary files differ
diff --git a/sc/qa/uitest/chart/chartDataLabels.py b/sc/qa/uitest/chart/chartDataLabels.py
index d1d1cf3..e4977c7 100644
--- a/sc/qa/uitest/chart/chartDataLabels.py
+++ b/sc/qa/uitest/chart/chartDataLabels.py
@@ -15,6 +15,8 @@ from uitest.debug import sleep
import org.libreoffice.unotest
import pathlib

from com.sun.star.lang import Locale

def get_url_for_data_file(file_name):
    return pathlib.Path(org.libreoffice.unotest.makeCopyFromTDOC(file_name)).as_uri()

@@ -212,4 +214,77 @@ class chartDataLabels(UITestCase):
    self.ui_test.close_dialog_through_button(xOKBtn)

    self.ui_test.close_doc()

   def test_tdf131291(self):
    calc_doc = self.ui_test.load_file(get_url_for_data_file("tdf131291.ods"))
    xCalcDoc = self.xUITest.getTopFocusWindow()
    gridwin = xCalcDoc.getChild("grid_window")
    document = self.ui_test.get_component()

    gridwin.executeAction("SELECT", mkPropertyValues({"OBJECT": "Object 1"}))
    gridwin.executeAction("ACTIVATE", tuple())
    xChartMainTop = self.xUITest.getTopFocusWindow()
    xChartMain = xChartMainTop.getChild("chart_window")
    xSeriesObj =  xChartMain.getChild("CID/D=0:CS=0:CT=0:Series=0")

    xDataSeries = document.Sheets[0].Charts[0].getEmbeddedObject().getFirstDiagram().CoordinateSystems[0].ChartTypes[0].DataSeries
    self.assertTrue(xDataSeries[0].Label.ShowNumber)
    self.assertFalse(xDataSeries[0].Label.ShowNumberInPercent)

    self.ui_test.execute_dialog_through_action(xSeriesObj, "COMMAND", mkPropertyValues({"COMMAND": "FormatDataLabels"}))
    xDialog = self.xUITest.getTopFocusWindow()

    xTabs = xDialog.getChild("tabcontrol")
    select_pos(xTabs, "1")

    self.assertTrue(xDataSeries[0].Label.ShowNumber)
    self.assertFalse(xDataSeries[0].Label.ShowNumberInPercent)

    xNumberFormatBtn = xDialog.getChild("PB_NUMBERFORMAT")

    def handle_number_dlg(dialog):
        categoryformat = dialog.getChild("categorylb")
        formatted = dialog.getChild("formatted")

        # Select currency
        categoryformat.getChild("4").executeAction("SELECT", tuple());

        self.assertEqual(get_state_as_dict(categoryformat)["SelectEntryText"], "Currency")

        self.assertEqual(get_state_as_dict(formatted)["Text"], "[$$-409]#,##0.00;[RED]-[$$-409]#,##0.00")

        xOKButton = dialog.getChild("ok")
        self.ui_test.close_dialog_through_button(xOKButton)

    self.ui_test.execute_blocking_action(xNumberFormatBtn.executeAction, args=('CLICK', ()),
        dialog_handler=handle_number_dlg)

    xOKBtn = xDialog.getChild("ok")
    self.ui_test.close_dialog_through_button(xOKBtn)

    xNumberFormats = document.Sheets[0].Charts[0].getEmbeddedObject().getNumberFormats()
    xLocale = Locale()
    xFormat = xNumberFormats.queryKey("[$$-409]#,##0.00;[RED]-[$$-409]#,##0.00", xLocale, True)

    self.assertTrue(xDataSeries[0].Label.ShowNumber)
    self.assertFalse(xDataSeries[0].Label.ShowNumberInPercent)
    self.assertEqual(xDataSeries[0].NumberFormat, xFormat)

    #reopen and verify the previous changes
    self.ui_test.execute_dialog_through_action(xSeriesObj, "COMMAND", mkPropertyValues({"COMMAND": "FormatDataLabels"}))
    xDialog = self.xUITest.getTopFocusWindow()

    self.assertTrue(xDataSeries[0].Label.ShowNumber)
    self.assertFalse(xDataSeries[0].Label.ShowNumberInPercent)
    # tdf#131291: it would fail here: AssertionError: 0 != 104
    self.assertEqual(xDataSeries[0].NumberFormat, xFormat)

    xOKBtn = xDialog.getChild("ok")
    self.ui_test.close_dialog_through_button(xOKBtn)

    self.assertTrue(xDataSeries[0].Label.ShowNumber)
    self.assertFalse(xDataSeries[0].Label.ShowNumberInPercent)
    self.assertEqual(xDataSeries[0].NumberFormat, xFormat)
    self.ui_test.close_doc()

# vim: set shiftwidth=4 softtabstop=4 expandtab: