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"