File indexing completed on 2025-04-20 03:39:08
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 #include <QTimeZone> 0016 0017 using namespace KFileMetaData; 0018 0019 QString EPubExtractorTest::testFilePath(const QString& fileName) const 0020 { 0021 return QLatin1String(INDEXER_TESTS_SAMPLE_FILES_PATH) + QLatin1Char('/') + fileName; 0022 } 0023 0024 void EPubExtractorTest::testNoExtraction() 0025 { 0026 EPubExtractor plugin{this}; 0027 0028 QString fileName = testFilePath(QStringLiteral("test.epub")); 0029 QMimeDatabase mimeDb; 0030 QString mimeType = MimeUtils::strictMimeType(fileName, mimeDb).name(); 0031 QVERIFY(plugin.mimetypes().contains(mimeType)); 0032 0033 SimpleExtractionResult result(fileName, mimeType, ExtractionResult::ExtractNothing); 0034 plugin.extract(&result); 0035 0036 QCOMPARE(result.types().size(), 1); 0037 QCOMPARE(result.types().constFirst(), Type::Document); 0038 QCOMPARE(result.properties().size(), 0); 0039 } 0040 0041 void EPubExtractorTest::test() 0042 { 0043 EPubExtractor plugin{this}; 0044 0045 QString fileName = testFilePath(QStringLiteral("test.epub")); 0046 QMimeDatabase mimeDb; 0047 QString mimeType = MimeUtils::strictMimeType(fileName, mimeDb).name(); 0048 QVERIFY(plugin.mimetypes().contains(mimeType)); 0049 0050 SimpleExtractionResult result(fileName, mimeType); 0051 plugin.extract(&result); 0052 0053 QCOMPARE(result.types().size(), 1); 0054 QCOMPARE(result.types().constFirst(), Type::Document); 0055 0056 // We're doing a contains instead of an exact check cause the epub file contains 0057 // a ton of css and other garbage. 0058 QVERIFY(result.text().contains(QStringLiteral("This is a sample PDF file for KFileMetaData."))); 0059 QCOMPARE(result.properties().value(Property::Author), QVariant(QStringLiteral("Happy Man"))); 0060 QCOMPARE(result.properties().value(Property::Publisher), QVariant(QStringLiteral("Happy Publisher"))); 0061 QCOMPARE(result.properties().value(Property::Title), QVariant(QStringLiteral("The Big Brown Bear"))); 0062 QCOMPARE(result.properties().value(Property::Subject), QVariant(QStringLiteral("Baloo KFileMetaData"))); 0063 QCOMPARE(result.properties().value(Property::Description), QVariant(QStringLiteral("Honey"))); 0064 0065 QDateTime dt(QDate(2014, 1, 1), QTime(1, 1, 1), QTimeZone::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().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), QTimeZone::UTC); 0096 QCOMPARE(result.properties().value(Property::CreationDate), QVariant(dt)); 0097 QCOMPARE(result.properties().value(Property::ReleaseYear), QVariant(2012)); 0098 0099 QCOMPARE(result.properties().size(), 9); 0100 } 0101 0102 void EPubExtractorTest::testMetaDataOnly() 0103 { 0104 EPubExtractor plugin{this}; 0105 0106 SimpleExtractionResult result(testFilePath("test.epub"), "application/epub+zip", ExtractionResult::ExtractMetaData); 0107 plugin.extract(&result); 0108 0109 QVERIFY(!result.types().isEmpty()); 0110 QVERIFY(!result.properties().isEmpty()); 0111 QVERIFY(result.text().isEmpty()); 0112 } 0113 0114 0115 QTEST_GUILESS_MAIN(EPubExtractorTest) 0116 0117 #include "moc_epubextractortest.cpp"