File indexing completed on 2024-05-12 05:13:44

0001 /*
0002     SPDX-FileCopyrightText: 2019 Volker Krause <vkrause@kde.org>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include "testhelper.h"
0008 #include "documentmanager.h"
0009 
0010 #include <KItinerary/CreativeWork>
0011 
0012 #include <QtTest/qtest.h>
0013 #include <QSignalSpy>
0014 #include <QStandardPaths>
0015 #include <QTemporaryFile>
0016 
0017 using namespace KItinerary;
0018 
0019 class DocumentManagerTest : public QObject
0020 
0021 {
0022     Q_OBJECT
0023 private Q_SLOTS:
0024     void initTestCase()
0025     {
0026         qputenv("TZ", "UTC");
0027         QStandardPaths::setTestModeEnabled(true);
0028     }
0029 
0030     void testAddRemove()
0031     {
0032         DocumentManager mgr;
0033         Test::clearAll(&mgr);
0034         QSignalSpy addSpy(&mgr, &DocumentManager::documentAdded);
0035         QSignalSpy rmSpy(&mgr, &DocumentManager::documentRemoved);
0036         QCOMPARE(mgr.documents().size(), 0);
0037 
0038         DigitalDocument docInfo;
0039         docInfo.setName(QStringLiteral("../boarding*pass.pdf"));
0040         docInfo.setDescription(QStringLiteral("Boarding Pass"));
0041         docInfo.setEncodingFormat(QStringLiteral("application/pdf"));
0042         mgr.addDocument(QStringLiteral("docId1"), docInfo, QByteArray("%PDF123456"));
0043         QCOMPARE(addSpy.size(), 1);
0044         QCOMPARE(addSpy.at(0).at(0).toString(), QLatin1StringView("docId1"));
0045         QCOMPARE(rmSpy.size(), 0);
0046         QCOMPARE(mgr.documents().size(), 1);
0047         QVERIFY(mgr.documents().contains(QLatin1StringView("docId1")));
0048 
0049         docInfo = mgr.documentInfo(QStringLiteral("docId1")).value<DigitalDocument>();
0050         QCOMPARE(docInfo.name(), QLatin1StringView("boarding_pass.pdf"));
0051         QCOMPARE(docInfo.encodingFormat(), QLatin1StringView("application/pdf"));
0052         QCOMPARE(docInfo.description(), QLatin1StringView("Boarding Pass"));
0053 
0054         const auto docFilePath = mgr.documentFilePath(QStringLiteral("docId1"));
0055         QVERIFY(docFilePath.endsWith(QLatin1StringView("/docId1/boarding_pass.pdf")));
0056         QVERIFY(QFile::exists(docFilePath));
0057         QCOMPARE(Test::readFile(docFilePath), QByteArray("%PDF123456"));
0058 
0059         mgr.addDocument(QStringLiteral("docId2"), docInfo, docFilePath);
0060         QCOMPARE(addSpy.size(), 2);
0061         QCOMPARE(rmSpy.size(), 0);
0062         const auto docFilePath2 = mgr.documentFilePath(QStringLiteral("docId2"));
0063         QVERIFY(docFilePath2.endsWith(QLatin1StringView("/docId2/boarding_pass.pdf")));
0064         QVERIFY(docFilePath != docFilePath2);
0065         QVERIFY(QFile::exists(docFilePath2));
0066         QCOMPARE(Test::readFile(docFilePath2), QByteArray("%PDF123456"));
0067         QCOMPARE(mgr.documents().size(), 2);
0068         QVERIFY(mgr.documents().contains(QLatin1StringView("docId2")));
0069 
0070         QVERIFY(mgr.hasDocument(QStringLiteral("docId2")));
0071         QVERIFY(!mgr.hasDocument(QStringLiteral("docId3")));
0072 
0073         mgr.removeDocument(QLatin1StringView("docId1"));
0074         QCOMPARE(addSpy.size(), 2);
0075         QCOMPARE(rmSpy.size(), 1);
0076         QCOMPARE(rmSpy.at(0).at(0).toString(), QLatin1StringView("docId1"));
0077         QVERIFY(!QFile::exists(docFilePath));
0078         QCOMPARE(mgr.documents().size(), 1);
0079         QVERIFY(mgr.documents().contains(QLatin1StringView("docId2")));
0080 
0081         mgr.removeDocument(QLatin1StringView("docId2"));
0082         QCOMPARE(addSpy.size(), 2);
0083         QCOMPARE(rmSpy.size(), 2);
0084         QCOMPARE(rmSpy.at(1).at(0).toString(), QLatin1StringView("docId2"));
0085         QVERIFY(!QFile::exists(docFilePath2));
0086         QCOMPARE(mgr.documents().size(), 0);
0087     }
0088 };
0089 
0090 QTEST_GUILESS_MAIN(DocumentManagerTest)
0091 
0092 #include "documentmanagertest.moc"