File indexing completed on 2024-05-12 05:13:46
0001 /* 0002 SPDX-FileCopyrightText: 2023 Volker Krause <vkrause@kde.org> 0003 SPDX-License-Identifier: LGPL-2.0-or-later 0004 */ 0005 0006 #include "testhelper.h" 0007 #include "mocknetworkaccessmanager.h" 0008 0009 #include "onlineticketretrievaljob.h" 0010 0011 #include <QUrl> 0012 #include <QtTest/qtest.h> 0013 #include <QSignalSpy> 0014 #include <QStandardPaths> 0015 0016 class OnlineTicketRetrievalTest : public QObject 0017 { 0018 Q_OBJECT 0019 private Q_SLOTS: 0020 void initTestCase() 0021 { 0022 QStandardPaths::setTestModeEnabled(true); 0023 } 0024 0025 void testTicketRetrieval_data() 0026 { 0027 QTest::addColumn<QString>("sourceId"); 0028 QTest::addColumn<QVariantMap>("arguments"); 0029 QTest::addColumn<QByteArray>("postData"); 0030 0031 QTest::newRow("db") << QStringLiteral("db") << QVariantMap({ {QStringLiteral("name"), QStringLiteral("KONQUI")}, {QStringLiteral("reference"), QStringLiteral("XYZ007")}}) 0032 << QByteArray(R"(<rqorderdetails version="1.0"><rqheader v="23040000" os="KCI" app="KCI-Webservice"/><rqorder on="XYZ007"/><authname tln="KONQUI"/></rqorderdetails>)"); 0033 QTest::newRow("sncf") << QStringLiteral("sncf") << QVariantMap({ {QStringLiteral("name"), QStringLiteral("KONQUI")}, {QStringLiteral("reference"), QStringLiteral("XYZ007")}}) 0034 << QByteArray(R"({"reference":"XYZ007","name":"KONQUI"})"); 0035 } 0036 0037 void testTicketRetrieval() 0038 { 0039 QFETCH(QString, sourceId); 0040 QFETCH(QVariantMap, arguments); 0041 QFETCH(QByteArray, postData); 0042 0043 m_nam.requests.clear(); 0044 OnlineTicketRetrievalJob job(sourceId, arguments, &m_nam); 0045 QSignalSpy finishedSpy(&job, &OnlineTicketRetrievalJob::finished); 0046 QVERIFY(finishedSpy.wait()); 0047 0048 QCOMPARE(m_nam.requests.size(), 1); 0049 QCOMPARE(m_nam.requests[0].op, QNetworkAccessManager::PostOperation); 0050 QCOMPARE(m_nam.requests[0].data, postData); 0051 } 0052 0053 void testDbNext() 0054 { 0055 m_nam.requests.clear(); 0056 // moc chokes on using a raw string literal here... 0057 m_nam.replies.push({ QNetworkReply::NoError, 200, "<?xml version=\"1.0\" encoding=\"UTF-8\"?><rporderheadlist version=\"1.0\"><rpheader tnr=\"\" ts=\"2023-10-29T11:36:32\"/><orderheadlist><orderhead kwid=\"12345678-90ab-cdef-1234-567890abcdef\" ldt=\"2023-10-27T11:04:18\" on=\"123456789123\"/></orderheadlist></rporderheadlist>" }); 0058 QVariantMap args({ {QStringLiteral("name"), QStringLiteral("Konqui")}, {QStringLiteral("reference"), QStringLiteral("123456789123")}}); 0059 0060 OnlineTicketRetrievalJob job(QStringLiteral("db"), args, &m_nam); 0061 QSignalSpy finishedSpy(&job, &OnlineTicketRetrievalJob::finished); 0062 QVERIFY(finishedSpy.wait()); 0063 0064 QCOMPARE(m_nam.requests.size(), 2); 0065 QCOMPARE(m_nam.requests[0].op, QNetworkAccessManager::PostOperation); 0066 QCOMPARE(m_nam.requests[0].data, R"(<rqfindorder version="1.0"><rqheader v="23080000" os="KCI" app="NAVIGATOR"/><rqorder on="123456789123"/><authname tln="Konqui"/></rqfindorder>)"); 0067 QCOMPARE(m_nam.requests[1].op, QNetworkAccessManager::PostOperation); 0068 QCOMPARE(m_nam.requests[1].data, R"(<rqorderdetails version="1.0"><rqheader v="23040000" os="KCI" app="KCI-Webservice"/><rqorder on="123456789123" kwid="12345678-90ab-cdef-1234-567890abcdef"/><authname tln="Konqui"/></rqorderdetails>)"); 0069 } 0070 0071 private: 0072 MockNetworkAccessManager m_nam; 0073 }; 0074 0075 QTEST_GUILESS_MAIN(OnlineTicketRetrievalTest) 0076 0077 #include "onlineticketretrievaltest.moc"