File indexing completed on 2025-04-20 06:42:24
0001 /* 0002 SPDX-FileCopyrightText: 2014 Vishesh Handa <me@vhanda.in> 0003 0004 SPDX-License-Identifier: LGPL-2.1-or-later 0005 */ 0006 0007 #include "simpleextractionresult.h" 0008 #include "indexerextractortestsconfig.h" 0009 #include "extractors/office2007extractor.h" 0010 #include "mimeutils.h" 0011 0012 #include <QMimeDatabase> 0013 #include <QObject> 0014 #include <QTest> 0015 #include <QTimeZone> 0016 0017 using namespace KFileMetaData; 0018 0019 class Office2007ExtractorTest : public QObject 0020 { 0021 Q_OBJECT 0022 private: 0023 QString testFilePath(const QString& fileName) const; 0024 0025 private Q_SLOTS: 0026 void testNoExtraction(); 0027 void testNoExtraction_pptx(); 0028 void testNoExtraction_xlsx(); 0029 void test(); 0030 void test_pptx(); 0031 void test_xlsx(); 0032 void testMetaDataOnly(); 0033 }; 0034 0035 QString Office2007ExtractorTest::testFilePath(const QString& fileName) const 0036 { 0037 return QLatin1String(INDEXER_TESTS_SAMPLE_FILES_PATH) + QLatin1Char('/') + fileName; 0038 } 0039 0040 void Office2007ExtractorTest::testNoExtraction() 0041 { 0042 Office2007Extractor plugin{this}; 0043 0044 QString fileName = testFilePath(QStringLiteral("test_libreoffice.docx")); 0045 QMimeDatabase mimeDb; 0046 QString mimeType = MimeUtils::strictMimeType(fileName, mimeDb).name(); 0047 QVERIFY(plugin.mimetypes().contains(mimeType)); 0048 0049 SimpleExtractionResult result(fileName, mimeType, ExtractionResult::ExtractNothing); 0050 plugin.extract(&result); 0051 0052 QCOMPARE(result.types().size(), 1); 0053 QCOMPARE(result.types().at(0), Type::Document); 0054 QCOMPARE(result.properties().size(), 0); 0055 } 0056 0057 void Office2007ExtractorTest::testNoExtraction_pptx() 0058 { 0059 Office2007Extractor plugin{this}; 0060 0061 QString fileName = testFilePath(QStringLiteral("test_libreoffice.pptx")); 0062 QMimeDatabase mimeDb; 0063 QString mimeType = MimeUtils::strictMimeType(fileName, mimeDb).name(); 0064 QVERIFY(plugin.mimetypes().contains(mimeType)); 0065 0066 SimpleExtractionResult result(fileName, mimeType, ExtractionResult::ExtractNothing); 0067 plugin.extract(&result); 0068 0069 QCOMPARE(result.types().size(), 2); 0070 QVERIFY(result.types().contains(Type::Document)); 0071 QVERIFY(result.types().contains(Type::Presentation)); 0072 QCOMPARE(result.properties().size(), 0); 0073 } 0074 0075 void Office2007ExtractorTest::testNoExtraction_xlsx() 0076 { 0077 Office2007Extractor plugin{this}; 0078 0079 QString fileName = testFilePath(QStringLiteral("test_libreoffice.xlsx")); 0080 QMimeDatabase mimeDb; 0081 QString mimeType = MimeUtils::strictMimeType(fileName, mimeDb).name(); 0082 QVERIFY(plugin.mimetypes().contains(mimeType)); 0083 0084 SimpleExtractionResult result(fileName, mimeType, ExtractionResult::ExtractNothing); 0085 plugin.extract(&result); 0086 0087 QCOMPARE(result.types().size(), 2); 0088 QVERIFY(result.types().contains(Type::Document)); 0089 QVERIFY(result.types().contains(Type::Spreadsheet)); 0090 QCOMPARE(result.properties().size(), 0); 0091 } 0092 0093 void Office2007ExtractorTest::test() 0094 { 0095 Office2007Extractor plugin{this}; 0096 0097 QString fileName = testFilePath(QStringLiteral("test_libreoffice.docx")); 0098 QMimeDatabase mimeDb; 0099 QString mimeType = MimeUtils::strictMimeType(fileName, mimeDb).name(); 0100 QVERIFY(plugin.mimetypes().contains(mimeType)); 0101 0102 SimpleExtractionResult result(fileName, mimeType); 0103 plugin.extract(&result); 0104 0105 QCOMPARE(result.types().size(), 1); 0106 QCOMPARE(result.types().at(0), Type::Document); 0107 0108 QCOMPARE(result.properties().value(Property::Title), QVariant(QStringLiteral("KFileMetaData Title"))); 0109 QCOMPARE(result.properties().value(Property::Subject), QVariant(QStringLiteral("KFileMetaData Subject"))); 0110 QCOMPARE(result.properties().value(Property::Keywords), QVariant(QStringLiteral("KFileMetaData keyword"))); 0111 QCOMPARE(result.properties().value(Property::Description), QVariant(QStringLiteral("KFileMetaData comment"))); 0112 QCOMPARE(result.properties().value(Property::Language), QVariant(QStringLiteral("en-US"))); 0113 QVERIFY(result.properties().value(Property::Generator).toString().contains(QStringLiteral("LibreOffice"))); 0114 QCOMPARE(result.properties().value(Property::PageCount), QVariant(1)); 0115 QCOMPARE(result.properties().value(Property::WordCount), QVariant(4)); 0116 QCOMPARE(result.properties().value(Property::LineCount), QVariant(1)); 0117 0118 QDateTime dt(QDate(2014, 07, 01), QTime(17, 37, 40), QTimeZone::UTC); 0119 QCOMPARE(result.properties().value(Property::CreationDate), QVariant(dt)); 0120 0121 QCOMPARE(result.properties().size(), 10); 0122 QCOMPARE(result.text(), QStringLiteral("Test file for KFileMetaData. ")); 0123 } 0124 0125 void Office2007ExtractorTest::test_pptx() 0126 { 0127 Office2007Extractor plugin{this}; 0128 0129 QString fileName = testFilePath(QStringLiteral("test_libreoffice.pptx")); 0130 QMimeDatabase mimeDb; 0131 QString mimeType = MimeUtils::strictMimeType(fileName, mimeDb).name(); 0132 QVERIFY(plugin.mimetypes().contains(mimeType)); 0133 0134 SimpleExtractionResult result(fileName, mimeType); 0135 plugin.extract(&result); 0136 0137 QCOMPARE(result.types().size(), 2); 0138 QVERIFY(result.types().contains(Type::Document)); 0139 QVERIFY(result.types().contains(Type::Presentation)); 0140 0141 QCOMPARE(result.properties().value(Property::Title), QVariant(QStringLiteral("KFileMetaData Title"))); 0142 QCOMPARE(result.properties().value(Property::Subject), QVariant(QStringLiteral("KFileMetaData Subject"))); 0143 QCOMPARE(result.properties().value(Property::Keywords), QVariant(QStringLiteral("KFileMetaData keyword"))); 0144 QCOMPARE(result.properties().value(Property::Description), QVariant(QStringLiteral("KFileMetaData comment"))); 0145 QCOMPARE(result.properties().value(Property::Language), QVariant(QStringLiteral("de-DE"))); 0146 QVERIFY(result.properties().value(Property::Generator).toString().contains(QStringLiteral("LibreOffice"))); 0147 0148 QDateTime dt(QDate(2014, 07, 02), QTime(10, 59, 23), QTimeZone::UTC); 0149 QCOMPARE(result.properties().value(Property::CreationDate), QVariant(dt)); 0150 0151 QCOMPARE(result.properties().size(), 7); 0152 QCOMPARE(result.text(), QStringLiteral("KFileMetaData Pres Slide 2 Title Left list 1 1a 1b Right list 1 Right list 2 ")); 0153 } 0154 0155 void Office2007ExtractorTest::test_xlsx() 0156 { 0157 Office2007Extractor plugin{this}; 0158 0159 QString fileName = testFilePath(QStringLiteral("test_libreoffice.xlsx")); 0160 QMimeDatabase mimeDb; 0161 QString mimeType = MimeUtils::strictMimeType(fileName, mimeDb).name(); 0162 QVERIFY(plugin.mimetypes().contains(mimeType)); 0163 0164 SimpleExtractionResult result(fileName, mimeType); 0165 plugin.extract(&result); 0166 0167 QCOMPARE(result.types().size(), 2); 0168 QVERIFY(result.types().contains(Type::Document)); 0169 QVERIFY(result.types().contains(Type::Spreadsheet)); 0170 0171 QCOMPARE(result.properties().value(Property::Title), QVariant(QStringLiteral("KFileMetaData Title"))); 0172 QCOMPARE(result.properties().value(Property::Subject), QVariant(QStringLiteral("KFileMetaData Subject"))); 0173 QCOMPARE(result.properties().value(Property::Keywords), QVariant(QStringLiteral("KFileMetaData keyword"))); 0174 QCOMPARE(result.properties().value(Property::Description), QVariant(QStringLiteral("KFileMetaData comment"))); 0175 QCOMPARE(result.properties().value(Property::Language), QVariant(QStringLiteral("de-DE"))); 0176 QVERIFY(result.properties().value(Property::Generator).toString().contains(QStringLiteral("LibreOffice"))); 0177 0178 QDateTime dt(QDate(2023, 11, 12), QTime(05, 59, 53), QTimeZone::UTC); 0179 QCOMPARE(result.properties().value(Property::CreationDate), QVariant(dt)); 0180 0181 QCOMPARE(result.properties().size(), 7); 0182 QCOMPARE(result.text(), QStringLiteral("First cell Second cell Second row ")); 0183 } 0184 0185 void Office2007ExtractorTest::testMetaDataOnly() 0186 { 0187 Office2007Extractor plugin{this}; 0188 0189 SimpleExtractionResult result(testFilePath(QStringLiteral("test_libreoffice.docx")), 0190 QStringLiteral("application/vnd.openxmlformats-officedocument.wordprocessingml.document"), 0191 ExtractionResult::ExtractMetaData); 0192 0193 plugin.extract(&result); 0194 0195 QVERIFY(!result.types().isEmpty()); 0196 QVERIFY(!result.properties().isEmpty()); 0197 QVERIFY(result.text().isEmpty()); 0198 } 0199 0200 QTEST_GUILESS_MAIN(Office2007ExtractorTest) 0201 0202 #include "office2007extractortest.moc"