diff options
Diffstat (limited to 'sc/qa/uitest/calc_tests/tdf120161.py')
-rwxr-xr-x | sc/qa/uitest/calc_tests/tdf120161.py | 85 |
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: |