File indexing completed on 2024-04-28 15:22:15

0001 /*
0002     SPDX-FileCopyrightText: 2014 Vishesh Handa <me@vhanda.in>
0003 
0004     SPDX-License-Identifier: LGPL-2.1-or-later
0005 */
0006 
0007 #include "office2007extractortest.h"
0008 #include "simpleextractionresult.h"
0009 #include "indexerextractortestsconfig.h"
0010 #include "extractors/office2007extractor.h"
0011 #include "mimeutils.h"
0012 
0013 #include <QTest>
0014 #include <QMimeDatabase>
0015 
0016 using namespace KFileMetaData;
0017 
0018 QString Office2007ExtractorTest::testFilePath(const QString& fileName) const
0019 {
0020     return QLatin1String(INDEXER_TESTS_SAMPLE_FILES_PATH) + QLatin1Char('/') + fileName;
0021 }
0022 
0023 void Office2007ExtractorTest::testNoExtraction()
0024 {
0025     Office2007Extractor plugin{this};
0026 
0027     QString fileName = testFilePath(QStringLiteral("test_libreoffice.docx"));
0028     QMimeDatabase mimeDb;
0029     QString mimeType = MimeUtils::strictMimeType(fileName, mimeDb).name();
0030     QVERIFY(plugin.mimetypes().contains(mimeType));
0031 
0032     SimpleExtractionResult result(fileName, mimeType, ExtractionResult::ExtractNothing);
0033     plugin.extract(&result);
0034 
0035     QCOMPARE(result.types().size(), 1);
0036     QCOMPARE(result.types().at(0), Type::Document);
0037     QCOMPARE(result.properties().size(), 0);
0038 }
0039 
0040 void Office2007ExtractorTest::test()
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);
0050     plugin.extract(&result);
0051 
0052     QCOMPARE(result.types().size(), 1);
0053     QCOMPARE(result.types().at(0), Type::Document);
0054 
0055     QCOMPARE(result.properties().value(Property::Title), QVariant(QStringLiteral("KFileMetaData Title")));
0056     QCOMPARE(result.properties().value(Property::Subject), QVariant(QStringLiteral("KFileMetaData Subject")));
0057     QCOMPARE(result.properties().value(Property::Keywords), QVariant(QStringLiteral("KFileMetaData keyword")));
0058     QCOMPARE(result.properties().value(Property::Description), QVariant(QStringLiteral("KFileMetaData comment")));
0059     QCOMPARE(result.properties().value(Property::Language), QVariant(QStringLiteral("en-US")));
0060     QVERIFY(result.properties().value(Property::Generator).toString().contains(QStringLiteral("LibreOffice")));
0061     QCOMPARE(result.properties().value(Property::PageCount), QVariant(1));
0062     QCOMPARE(result.properties().value(Property::WordCount), QVariant(4));
0063     QCOMPARE(result.properties().value(Property::LineCount), QVariant(1));
0064 
0065     QDateTime dt(QDate(2014, 07, 01), QTime(17, 37, 40));
0066     dt.setTimeSpec(Qt::UTC);
0067     QCOMPARE(result.properties().value(Property::CreationDate), QVariant(dt));
0068 
0069     QCOMPARE(result.properties().size(), 10);
0070     QCOMPARE(result.text(), QStringLiteral("Test file for KFileMetaData. "));
0071 }
0072 
0073 void Office2007ExtractorTest::testMetaDataOnly()
0074 {
0075     Office2007Extractor plugin{this};
0076 
0077     SimpleExtractionResult result(testFilePath(QStringLiteral("test_libreoffice.docx")),
0078                         QStringLiteral("application/vnd.openxmlformats-officedocument.wordprocessingml.document"),
0079                         ExtractionResult::ExtractMetaData);
0080 
0081     plugin.extract(&result);
0082 
0083     QVERIFY(!result.types().isEmpty());
0084     QVERIFY(!result.properties().isEmpty());
0085     QVERIFY(result.text().isEmpty());
0086 }
0087 
0088 QTEST_GUILESS_MAIN(Office2007ExtractorTest)
0089 
0090 #include "moc_office2007extractortest.cpp"