summaryrefslogtreecommitdiffstats
path: root/sc/qa/uitest/calc_tests/tdf120161.py
diff options
context:
space:
mode:
Diffstat (limited to 'sc/qa/uitest/calc_tests/tdf120161.py')
-rwxr-xr-xsc/qa/uitest/calc_tests/tdf120161.py85
1 files changed, 85 insertions, 0 deletions
diff --git a/sc/qa/uitest/calc_tests/tdf120161.py b/sc/qa/uitest/calc_tests/tdf120161.py
new file mode 100755
index 000000000..18c5f3ed4
--- /dev/null
+++ b/sc/qa/uitest/calc_tests/tdf120161.py
@@ -0,0 +1,85 @@
+# -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*-
+#
+# 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
+import org.libreoffice.unotest
+import os
+import pathlib
+from tempfile import TemporaryDirectory
+
+
+def get_url_for_data_file(file_name):
+ return pathlib.Path(org.libreoffice.unotest.makeCopyFromTDOC(file_name)).as_uri()
+
+
+# Bug 120161: PRINTING, PDF Export: Problem with selected cells which cross pages
+class tdf120161(UITestCase):
+ def getFileContent(self, pathAndFileName):
+ with open(pathAndFileName, 'rb') as theFile: # b is important -> binary
+ # Return as binary string
+ data = theFile.read()
+ return data
+
+ def verifyExportToFile(self, xDoc, xContext, xRange, xFontName, xFilename):
+ # set selection
+ xGridWin = xDoc.getChild("grid_window")
+ xGridWin.executeAction("SELECT", mkPropertyValues({"RANGE": xRange}))
+
+ # set print area
+ self.xUITest.executeCommand(".uno:DefinePrintArea")
+
+ # create temp file name
+ xURL = 'file:///' + xFilename
+
+ # prepare to export into pdf
+ xServiceManager = xContext.ServiceManager
+ xDispatcher = xServiceManager.createInstanceWithContext(
+ 'com.sun.star.frame.DispatchHelper', xContext)
+ xDocFrame = self.ui_test.get_desktop().getCurrentFrame()
+ document = self.ui_test.get_component()
+
+ # get selection
+ xSelection = document.Sheets.getByName("Sheet1").getCellRangeByName(xRange)
+ self.assertIsNotNone(xSelection)
+
+ # run export into pdf
+ xFilterData = mkPropertyValues(
+ {'Selection': xSelection, 'ViewPDFAfterExport': True, 'Printing': '2'})
+ xParams = mkPropertyValues(
+ {'URL': xURL, 'FilterName': 'calc_pdf_Export', 'FilterData': xFilterData})
+ xDispatcher.executeDispatch(xDocFrame, '.uno:ExportToPDF', '', 0, xParams)
+
+ # check resulting pdf file
+ xFileContent = self.getFileContent(xFilename)
+ position = xFileContent.find(xFontName)
+ return position > 0
+
+ # create temp directory and filename inside it
+ def verifyExport(self, xDoc, xContext, xRange, xFontName):
+ with TemporaryDirectory() as tempdir:
+ if os.altsep: # we need URL so replace "\" with "/"
+ tempdir = tempdir.replace(os.sep, os.altsep)
+ xFilename = tempdir + "/tdf120161-temp.pdf"
+ return self.verifyExportToFile(xDoc, xContext, xRange, xFontName, xFilename)
+ return False
+
+ def test_tdf120161(self):
+ calc_doc = self.ui_test.load_file(get_url_for_data_file("tdf120161.ods"))
+ xDoc = self.xUITest.getTopFocusWindow()
+ xContext = self.xContext
+
+ # check different areas to be printed without any lost cell
+ # note:
+ # 1. Visually in GridView G1 is on page-1 and H1 is on page-2
+ # 2. DejaVuSans is used only in H1
+ self.assertFalse(self.verifyExport(xDoc, xContext, "A1:G1", b"DejaVuSans"))
+ self.assertTrue(self.verifyExport(xDoc, xContext, "H1:I1", b"DejaVuSans"))
+ self.assertTrue(self.verifyExport(xDoc, xContext, "G1:H1", b"DejaVuSans"))
+
+ self.ui_test.close_doc()
+
+# vim: set shiftwidth=4 softtabstop=4 expandtab: