File indexing completed on 2024-05-05 03:54:34

0001 /*
0002     SPDX-FileCopyrightText: 2022 Kai Uwe Broulik <kde@broulik.de>
0003 
0004     SPDX-License-Identifier: LGPL-2.1-or-later
0005 */
0006 
0007 #include "fb2extractortest.h"
0008 #include "extractors/fb2extractor.h"
0009 #include "indexerextractortestsconfig.h"
0010 #include "mimeutils.h"
0011 #include "simpleextractionresult.h"
0012 
0013 #include <QMimeDatabase>
0014 #include <QTest>
0015 #include <QTimeZone>
0016 
0017 using namespace KFileMetaData;
0018 
0019 QString Fb2ExtractorTest::testFilePath(const QString &fileName) const
0020 {
0021     return QLatin1String(INDEXER_TESTS_SAMPLE_FILES_PATH) + QLatin1Char('/') + fileName;
0022 }
0023 
0024 void Fb2ExtractorTest::testNoExtraction_data()
0025 {
0026     QTest::addColumn<QString>("fileName");
0027 
0028     QTest::addRow("uncompressed") << QStringLiteral("test.fb2");
0029     QTest::addRow("compressed") << QStringLiteral("test.fb2.zip");
0030 }
0031 
0032 void Fb2ExtractorTest::testNoExtraction()
0033 {
0034     QFETCH(QString, fileName);
0035 
0036     Fb2Extractor plugin{this};
0037 
0038     const QString path = testFilePath(fileName);
0039     QMimeDatabase mimeDb;
0040     QString mimeType = MimeUtils::strictMimeType(path, mimeDb).name();
0041     QVERIFY(plugin.mimetypes().contains(mimeType));
0042 
0043     SimpleExtractionResult result(path, mimeType, ExtractionResult::ExtractNothing);
0044     plugin.extract(&result);
0045 
0046     QCOMPARE(result.types().size(), 1);
0047     QCOMPARE(result.types().constFirst(), Type::Document);
0048     QCOMPARE(result.properties().size(), 0);
0049 }
0050 
0051 void Fb2ExtractorTest::test_data()
0052 {
0053     QTest::addColumn<QString>("fileName");
0054 
0055     QTest::addRow("uncompressed") << QStringLiteral("test.fb2");
0056     QTest::addRow("compressed") << QStringLiteral("test.fb2.zip");
0057 }
0058 
0059 void Fb2ExtractorTest::test()
0060 {
0061     QFETCH(QString, fileName);
0062 
0063     Fb2Extractor plugin{this};
0064 
0065     const QString path = testFilePath(fileName);
0066     QMimeDatabase mimeDb;
0067     QString mimeType = MimeUtils::strictMimeType(path, mimeDb).name();
0068     QVERIFY(plugin.mimetypes().contains(mimeType));
0069 
0070     SimpleExtractionResult result(path, mimeType);
0071     plugin.extract(&result);
0072 
0073     QCOMPARE(result.types().size(), 1);
0074     QCOMPARE(result.types().constFirst(), Type::Document);
0075 
0076     QCOMPARE(result.text(), QStringLiteral("This is a sample PDF file for KFileMetaData. "));
0077     QCOMPARE(result.properties().value(Property::Author), QVariant(QStringLiteral("Happy Man")));
0078     QCOMPARE(result.properties().value(Property::Publisher), QVariant(QStringLiteral("Happy Publisher")));
0079     QCOMPARE(result.properties().value(Property::Title), QVariant(QStringLiteral("The Big Brown Bear")));
0080     QCOMPARE(result.properties().value(Property::Description), QVariant(QStringLiteral("Honey")));
0081     QCOMPARE(result.properties().value(Property::Language), QVariant(QStringLiteral("en")));
0082     QCOMPARE(result.properties().value(Property::Genre), QVariant(QStringLiteral("antique")));
0083     QCOMPARE(result.properties().value(Property::Generator), QVariant(QStringLiteral("calibre 4.99.4")));
0084 
0085     QDateTime dt(QDate(2014, 1, 1), QTime(0, 0, 0), QTimeZone::UTC);
0086     QCOMPARE(result.properties().value(Property::CreationDate), QVariant(dt));
0087     QCOMPARE(result.properties().value(Property::ReleaseYear), QVariant(2014));
0088 
0089     QCOMPARE(result.properties().size(), 9);
0090 }
0091 
0092 void Fb2ExtractorTest::testMetaDataOnly_data()
0093 {
0094     QTest::addColumn<QString>("fileName");
0095     QTest::addColumn<QString>("mimeType");
0096 
0097     QTest::addRow("uncompressed") << QStringLiteral("test.fb2") << QStringLiteral("application/x-fictionbook+xml");
0098     QTest::addRow("compressed") << QStringLiteral("test.fb2.zip") << QStringLiteral("application/x-zip-compressed-fb2");
0099 }
0100 
0101 void Fb2ExtractorTest::testMetaDataOnly()
0102 {
0103     QFETCH(QString, fileName);
0104     QFETCH(QString, mimeType);
0105 
0106     Fb2Extractor plugin{this};
0107 
0108     SimpleExtractionResult result(testFilePath(fileName), mimeType, ExtractionResult::ExtractMetaData);
0109     plugin.extract(&result);
0110 
0111     QVERIFY(!result.types().isEmpty());
0112     QVERIFY(!result.properties().isEmpty());
0113     QVERIFY(result.text().isEmpty());
0114 }
0115 
0116 QTEST_GUILESS_MAIN(Fb2ExtractorTest)
0117 
0118 #include "moc_fb2extractortest.cpp"