File indexing completed on 2025-02-16 13:03:35
0001 /* 0002 SPDX-FileCopyrightText: 2014 Vishesh Handa <me@vhanda.in> 0003 0004 SPDX-License-Identifier: LGPL-2.1-or-later 0005 */ 0006 0007 #include "epubextractortest.h" 0008 #include "simpleextractionresult.h" 0009 #include "indexerextractortestsconfig.h" 0010 #include "extractors/epubextractor.h" 0011 #include "mimeutils.h" 0012 0013 #include <QTest> 0014 #include <QMimeDatabase> 0015 0016 using namespace KFileMetaData; 0017 0018 QString EPubExtractorTest::testFilePath(const QString& fileName) const 0019 { 0020 return QLatin1String(INDEXER_TESTS_SAMPLE_FILES_PATH) + QLatin1Char('/') + fileName; 0021 } 0022 0023 void EPubExtractorTest::testNoExtraction() 0024 { 0025 EPubExtractor plugin{this}; 0026 0027 QString fileName = testFilePath(QStringLiteral("test.epub")); 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().constFirst(), Type::Document); 0037 QCOMPARE(result.properties().size(), 0); 0038 } 0039 0040 void EPubExtractorTest::test() 0041 { 0042 EPubExtractor plugin{this}; 0043 0044 QString fileName = testFilePath(QStringLiteral("test.epub")); 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().constFirst(), Type::Document); 0054 0055 // We're doing a contains instead of an exact check cause the epub file contains 0056 // a ton of css and other garbage. 0057 QVERIFY(result.text().contains(QStringLiteral("This is a sample PDF file for KFileMetaData."))); 0058 QCOMPARE(result.properties().value(Property::Author), QVariant(QStringLiteral("Happy Man"))); 0059 QCOMPARE(result.properties().value(Property::Publisher), QVariant(QStringLiteral("Happy Publisher"))); 0060 QCOMPARE(result.properties().value(Property::Title), QVariant(QStringLiteral("The Big Brown Bear"))); 0061 QCOMPARE(result.properties().value(Property::Subject), QVariant(QStringLiteral("Baloo KFileMetaData"))); 0062 QCOMPARE(result.properties().value(Property::Description), QVariant(QStringLiteral("Honey"))); 0063 0064 QDateTime dt(QDate(2014, 1, 1), QTime(1, 1, 1)); 0065 dt.setTimeSpec(Qt::UTC); 0066 QCOMPARE(result.properties().value(Property::CreationDate), QVariant(dt)); 0067 QCOMPARE(result.properties().value(Property::ReleaseYear), QVariant(2014)); 0068 0069 QCOMPARE(result.properties().size(), 7); 0070 } 0071 0072 void EPubExtractorTest::testRepeated() 0073 { 0074 EPubExtractor plugin{this}; 0075 0076 QString fileName = testFilePath(QStringLiteral("test_repeated.epub")); 0077 QMimeDatabase mimeDb; 0078 QString mimeType = MimeUtils::strictMimeType(fileName, mimeDb).name(); 0079 QVERIFY(plugin.mimetypes().contains(mimeType)); 0080 0081 SimpleExtractionResult result(fileName, mimeType); 0082 plugin.extract(&result); 0083 0084 QCOMPARE(result.types().size(), 1); 0085 QCOMPARE(result.types().constFirst(), Type::Document); 0086 0087 QCOMPARE(result.properties().value(Property::Author), QVariant(QStringLiteral("Happy Man"))); 0088 QCOMPARE(result.properties().value(Property::Publisher), QVariant(QStringLiteral("Happy Publisher"))); 0089 QCOMPARE(result.properties().value(Property::Title), QVariant(QStringLiteral("The Big Brown Bear"))); 0090 QCOMPARE(result.properties(KFileMetaData::MultiMap).values(Property::Subject), 0091 QVariantList({QStringLiteral("Test with repeated keys"), QStringLiteral("Baloo KFileMetaData")}) 0092 ); 0093 QCOMPARE(result.properties().value(Property::Description), QVariant(QStringLiteral("Honey"))); 0094 0095 QDateTime dt(QDate(2012, 1, 1), QTime(0, 0, 0)); 0096 dt.setTimeSpec(Qt::UTC); 0097 QCOMPARE(result.properties().value(Property::CreationDate), QVariant(dt)); 0098 QCOMPARE(result.properties().value(Property::ReleaseYear), QVariant(2012)); 0099 0100 QCOMPARE(result.properties().size(), 9); 0101 } 0102 0103 void EPubExtractorTest::testMetaDataOnly() 0104 { 0105 EPubExtractor plugin{this}; 0106 0107 SimpleExtractionResult result(testFilePath("test.epub"), "application/epub+zip", ExtractionResult::ExtractMetaData); 0108 plugin.extract(&result); 0109 0110 QVERIFY(!result.types().isEmpty()); 0111 QVERIFY(!result.properties().isEmpty()); 0112 QVERIFY(result.text().isEmpty()); 0113 } 0114 0115 0116 QTEST_GUILESS_MAIN(EPubExtractorTest) 0117 0118 #include "moc_epubextractortest.cpp"