File indexing completed on 2024-04-28 04:42:40

0001 /*
0002     SPDX-FileCopyrightText: 2022 Volker Krause <vkrause@kde.org>
0003     SPDX-License-Identifier: LGPL-2.0-or-later
0004 */
0005 
0006 #include "metnoparser_p.h"
0007 
0008 #include <QFile>
0009 #include <QJsonDocument>
0010 #include <QStandardPaths>
0011 #include <QTest>
0012 #include <QTimeZone>
0013 
0014 class MetNoParserTest : public QObject
0015 {
0016     Q_OBJECT
0017 private Q_SLOTS:
0018     void initTestCase()
0019     {
0020         QStandardPaths::setTestModeEnabled(true);
0021     }
0022 
0023     void testParseLocationForecast_data()
0024     {
0025         QTest::addColumn<QString>("inputFile");
0026         QTest::addColumn<QString>("timezone");
0027 
0028         QTest::newRow("berlin") << QFINDTESTDATA("met.no/berlin.json") << QStringLiteral("Europe/Berlin");
0029     }
0030 
0031     void testParseLocationForecast()
0032     {
0033         QFETCH(QString, inputFile);
0034         QFETCH(QString, timezone);
0035 
0036         QFile f(inputFile);
0037         QVERIFY(f.open(QFile::ReadOnly));
0038         KWeatherCore::MetNoParser p;
0039         p.forecast.setTimezone(timezone);
0040         p.parseLocationForecast(f.readAll());
0041         QVERIFY(p.hasData());
0042         p.applySunriseToForecast(QTimeZone(timezone.toUtf8()));
0043 
0044         auto forecastData = p.forecast.toJson();
0045         forecastData.remove(QLatin1String("createdTime")); // varies between runs
0046         forecastData.remove(QLatin1String("lat")); // not set
0047         forecastData.remove(QLatin1String("lon"));
0048 
0049         QFile ref(inputFile + QLatin1String(".ref"));
0050         QVERIFY(ref.open(QFile::ReadOnly));
0051         const auto refData = QJsonDocument::fromJson(ref.readAll()).object();
0052         if (refData != forecastData) {
0053             qDebug().noquote() << QJsonDocument(forecastData).toJson();
0054         }
0055         QCOMPARE(refData, forecastData);
0056     }
0057 };
0058 
0059 QTEST_GUILESS_MAIN(MetNoParserTest)
0060 
0061 #include "metnoparsertest.moc"