File indexing completed on 2024-04-21 04:41:09

0001 /*
0002     SPDX-FileCopyrightText: 2018 Volker Krause <vkrause@kde.org>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include <KPublicTransport/Attribution>
0008 #include <KPublicTransport/Manager>
0009 #include <KPublicTransport/JourneyRequest>
0010 #include <KPublicTransport/JourneyReply>
0011 #include <KPublicTransport/LocationRequest>
0012 #include <KPublicTransport/LocationReply>
0013 #include <KPublicTransport/Location>
0014 #include <KPublicTransport/StopoverReply>
0015 #include <KPublicTransport/StopoverRequest>
0016 #include <KPublicTransport/VehicleLayoutRequest>
0017 #include <KPublicTransport/VehicleLayoutReply>
0018 
0019 #include <QSignalSpy>
0020 #include <QTest>
0021 
0022 using namespace KPublicTransport;
0023 
0024 class PublicTransportManagerTest : public QObject
0025 {
0026     Q_OBJECT
0027 private Q_SLOTS:
0028     void initTestCase()
0029     {
0030         qputenv("TZ", "UTC");
0031     }
0032 
0033     void testQueryLocation()
0034     {
0035         Manager mgr;
0036         auto reply = mgr.queryLocation({});
0037         QVERIFY(reply);
0038         QSignalSpy spy(reply, &Reply::finished);
0039         QVERIFY(spy.wait(100));
0040         QCOMPARE(spy.size(), 1);
0041         QCOMPARE(reply->error(), Reply::InvalidRequest);
0042         delete reply;
0043     }
0044 
0045     void testInvalidQueryJourney_data()
0046     {
0047         QTest::addColumn<JourneyRequest>("request");
0048         QTest::newRow("empty") << JourneyRequest();
0049 
0050         Location loc;
0051         loc.setCoordinate(52.0, 13.0);
0052         JourneyRequest req;
0053         req.setFrom(loc);
0054         QTest::newRow("only from") << req;
0055 
0056         req.setFrom({});
0057         req.setTo(loc);
0058         QTest::newRow("only to") << req;
0059     }
0060 
0061     void testInvalidQueryJourney()
0062     {
0063         QFETCH(JourneyRequest, request);
0064         Manager mgr;
0065         auto reply = mgr.queryJourney(request);
0066         QVERIFY(reply);
0067         QSignalSpy spy(reply, &Reply::finished);
0068         QVERIFY(spy.wait(100));
0069         QCOMPARE(spy.size(), 1);
0070         QCOMPARE(reply->error(), Reply::InvalidRequest);
0071         delete reply;
0072     }
0073 
0074     void testQueryDepartures()
0075     {
0076         Manager mgr;
0077         auto reply = mgr.queryStopover({});
0078         QVERIFY(reply);
0079         QSignalSpy spy(reply, &Reply::finished);
0080         QVERIFY(spy.wait(100));
0081         QCOMPARE(spy.size(), 1);
0082         QCOMPARE(reply->error(), Reply::InvalidRequest);
0083         delete reply;
0084     }
0085 
0086     void testAttributions()
0087     {
0088         Manager mgr;
0089         QVERIFY(mgr.attributions().size() > 0);
0090     }
0091 
0092     void testInvalidVehicleLayoutQuery()
0093     {
0094         Manager mgr;
0095         auto reply = mgr.queryVehicleLayout(VehicleLayoutRequest());
0096         QVERIFY(reply);
0097         QSignalSpy spy(reply, &Reply::finished);
0098         QVERIFY(spy.wait(100));
0099         QCOMPARE(spy.size(), 1);
0100         QCOMPARE(reply->error(), Reply::InvalidRequest);
0101         delete reply;
0102     }
0103 };
0104 
0105 QTEST_GUILESS_MAIN(PublicTransportManagerTest)
0106 
0107 #include "publictransportmanagertest.moc"