diff options
author | Vasily Melenchuk <vasily.melenchuk@cib.de> | 2021-12-22 14:16:09 +0300 |
---|---|---|
committer | Thorsten Behrens <thorsten.behrens@allotropia.de> | 2021-12-24 01:52:07 +0100 |
commit | 924f3b749650aa07dbc1c20f9b8e8ec5ececc986 (patch) | |
tree | f6d47abd974847074afd27cdc8ca2a8f408db82f | |
parent | tdf#145057 Fix saving color filter when multiple data ranges in sheet (diff) | |
download | core-924f3b749650aa07dbc1c20f9b8e8ec5ececc986.tar.gz core-924f3b749650aa07dbc1c20f9b8e8ec5ececc986.zip |
tdf#104823: unittest
Ensure reading and writing to datasources
Change-Id: Idbc907a21fe3b881d1b835ed0e8c795c4ea36863
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/127311
Tested-by: Jenkins
Reviewed-by: Vasily Melenchuk <vasily.melenchuk@cib.de>
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/127334
Tested-by: Thorsten Behrens <thorsten.behrens@allotropia.de>
Reviewed-by: Thorsten Behrens <thorsten.behrens@allotropia.de>
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/tdf104823.docx | bin | 0 -> 21260 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/ooxmlfieldexport.cxx | 61 |
2 files changed, 60 insertions, 1 deletions
diff --git a/sw/qa/extras/ooxmlexport/data/tdf104823.docx b/sw/qa/extras/ooxmlexport/data/tdf104823.docx Binary files differnew file mode 100644 index 000000000000..4a354b848eea --- /dev/null +++ b/sw/qa/extras/ooxmlexport/data/tdf104823.docx diff --git a/sw/qa/extras/ooxmlexport/ooxmlfieldexport.cxx b/sw/qa/extras/ooxmlexport/ooxmlfieldexport.cxx index e587b982a863..255d4444b14d 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlfieldexport.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlfieldexport.cxx @@ -11,11 +11,14 @@ #include <xmloff/odffields.hxx> #include <IDocumentMarkAccess.hxx> #include <IMark.hxx> +#include <com/sun/star/text/XTextField.hpp> + +char const DATA_DIRECTORY[] = "/sw/qa/extras/ooxmlexport/data/"; class Test : public SwModelTestBase { public: - Test() : SwModelTestBase("/sw/qa/extras/ooxmlexport/data/", "Office Open XML Text") {} + Test() : SwModelTestBase(DATA_DIRECTORY, "Office Open XML Text") {} protected: /** @@ -771,6 +774,62 @@ DECLARE_OOXMLEXPORT_TEST( testSdtDatePicker, "test_sdt_datepicker.docx" ) CPPUNIT_ASSERT_EQUAL(OUString("008000"), sColor); } +CPPUNIT_TEST_FIXTURE(Test, testTdf104823) +{ + // Test how we can roundtrip sdt plain text with databindings support + OUString aURL = m_directories.getURLFromSrc(DATA_DIRECTORY) + "tdf104823.docx"; + loadURL(aURL, nullptr); + + css::uno::Reference<css::text::XTextFieldsSupplier> xTextFieldsSupplier( + mxComponent, css::uno::UNO_QUERY_THROW); + auto xFields(xTextFieldsSupplier->getTextFields()->createEnumeration()); + + // FIXME: seems order of fields is different than in source document + // so feel free to modify testcase if order is changed + + // First field: content from core properties + uno::Reference<text::XTextField> xField1(xFields->nextElement(), uno::UNO_QUERY); + CPPUNIT_ASSERT(xFields->hasMoreElements()); + // Check field value (it should be value from data source) and set new + CPPUNIT_ASSERT_EQUAL(OUString("True Core Property Value"), xField1->getPresentation(false)); + uno::Reference<beans::XPropertySet> xField1Props(xField1, uno::UNO_QUERY); + xField1Props->setPropertyValue("Content", uno::makeAny(OUString("New Core Property Value"))); + + // Third field: content from custom properties + uno::Reference<text::XTextField> xField2(xFields->nextElement(), uno::UNO_QUERY); + CPPUNIT_ASSERT(xFields->hasMoreElements()); + // Check field value (it should be value from data source) and set new + CPPUNIT_ASSERT_EQUAL(OUString("True Custom XML Value"), xField2->getPresentation(false)); + uno::Reference<beans::XPropertySet> xField2Props(xField2, uno::UNO_QUERY); + xField2Props->setPropertyValue("Content", uno::makeAny(OUString("New Custom XML Value"))); + + // Second field: content from extended properties + uno::Reference<text::XTextField> xField3(xFields->nextElement(), uno::UNO_QUERY); + CPPUNIT_ASSERT(!xFields->hasMoreElements()); + // Check field value (it should be value from data source) and set new + CPPUNIT_ASSERT_EQUAL(OUString("True Extended Property Value"), xField3->getPresentation(false)); + uno::Reference<beans::XPropertySet> xField3Props(xField3, uno::UNO_QUERY); + xField3Props->setPropertyValue("Content", uno::makeAny(OUString("New Extended Property Value"))); + + // Save and check saved data + save("Office Open XML Text", maTempFile); + mbExported = true; + xmlDocPtr pXmlCustomPropsDoc = parseExport("customXml/item1.xml"); + CPPUNIT_ASSERT(pXmlCustomPropsDoc); + // FIXME: strange it won't run simple /employees/employee/name xpath query. Does not like namespaces? + assertXPathContent(pXmlCustomPropsDoc, "//*/*[local-name()='name']", "New Custom XML Value"); + + xmlDocPtr pXmlAppPropsDoc = parseExport("docProps/app.xml"); + CPPUNIT_ASSERT(pXmlAppPropsDoc); + // TODO: extended properties are not written yet + assertXPathContent(pXmlAppPropsDoc, "//*/*[local-name()='Company']", "True Extended Property Value"); + + xmlDocPtr pXmlCorePropsDoc = parseExport("docProps/core.xml"); + CPPUNIT_ASSERT(pXmlCorePropsDoc); + // TODO: core properties are not written yet + assertXPathContent(pXmlCorePropsDoc, "//*/*[local-name()='creator']", "True Core Property Value"); +} + CPPUNIT_PLUGIN_IMPLEMENT(); /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |