Related tdf#149786: add better unit test for vba pdf export macro
Better unit test for vba pdf export.
Change-Id: Ifa3dff79c457e21ca24b8d99c024bd59917bc990
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/147171
Tested-by: Jenkins
Reviewed-by: Balazs Varga <balazs.varga.extern@allotropia.de>
diff --git a/sc/qa/extras/testdocuments/ExportAsPDF.xlsm b/sc/qa/extras/testdocuments/ExportAsPDF.xlsm
deleted file mode 100644
index 6cb410b..0000000
--- a/sc/qa/extras/testdocuments/ExportAsPDF.xlsm
+++ /dev/null
Binary files differ
diff --git a/sc/qa/extras/vba-macro-test.cxx b/sc/qa/extras/vba-macro-test.cxx
index 268b35e..29fdf21 100644
--- a/sc/qa/extras/vba-macro-test.cxx
+++ b/sc/qa/extras/vba-macro-test.cxx
@@ -11,6 +11,8 @@
#include <test/unoapi_test.hxx>
#include <osl/file.hxx>
#include <sal/log.hxx>
#include <vcl/filter/pdfdocument.hxx>
#include <vcl/filter/PDFiumLibrary.hxx>
#include <vcl/scheduler.hxx>
#include <vcl/svapp.hxx>
#include <viewdata.hxx>
@@ -834,10 +836,39 @@ void VBAMacroTest::testTdf126457()
void VBAMacroTest::testVbaPDFExport()
{
loadFromURL(u"ExportAsPDF.xlsm");
mxComponent = loadFromDesktop("private:factory/scalc");
executeMacro("vnd.sun.Star.script:VBAProject.Module1.ExportAsPDF?"
"language=Basic&location=document");
// Save a copy of the file to get its URL
uno::Reference<frame::XStorable> xDocStorable(mxComponent, uno::UNO_QUERY);
utl::TempFileNamed aTempFile(u"testVBA_PDF_Export", true, u".ods");
aTempFile.EnableKillingFile();
uno::Sequence<beans::PropertyValue> descSaveAs(
comphelper::InitPropertySequence({ { "FilterName", uno::Any(OUString("calc8")) } }));
xDocStorable->storeAsURL(aTempFile.GetURL(), descSaveAs);
utl::TempFileNamed aTempPdfFile(u"exportedfile", true, u".pdf");
aTempPdfFile.EnableKillingFile();
css::uno::Reference<css::document::XEmbeddedScripts> xDocScr(mxComponent, uno::UNO_QUERY_THROW);
auto xLibs = xDocScr->getBasicLibraries();
auto xLibrary = xLibs->createLibrary("TestLibrary");
OUString sMacro = "Option VBASupport 1\n"
"Sub ExportAsPDF\n"
" fileName = \""
+ aTempPdfFile.GetFileName()
+ "\"\n ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, "
"FileName:=fileName, Quality:=xlQualityStandard, "
"IncludeDocProperties:=True, OpenAfterPublish:=False\n"
"End Sub\n";
xLibrary->insertByName("TestModule", uno::Any(sMacro));
executeMacro("vnd.sun.Star.script:TestLibrary.TestModule.ExportAsPDF?language=Basic&location="
"document");
// Parse the export result.
vcl::filter::PDFDocument aDocument;
SvFileStream aStream(aTempPdfFile.GetURL(), StreamMode::READ);
CPPUNIT_ASSERT_MESSAGE("Failed to get the pdf document", aDocument.Read(aStream));
}
CPPUNIT_TEST_SUITE_REGISTRATION(VBAMacroTest);