Warning, file /utilities/telly-skout/autotests/xmltvfetchertest.cpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001 // SPDX-FileCopyrightText: 2023 Plata Hill <plata.hill@kdemail.net> 0002 // SPDX-License-Identifier: LGPL-2.1-or-later 0003 0004 #include "../src/xmltvfetcher.h" 0005 0006 #include "../src/TellySkoutSettings.h" 0007 0008 #include <QSignalSpy> 0009 #include <QStandardPaths> 0010 #include <QString> 0011 #include <QTest> 0012 0013 class XmltvFetcherTest : public QObject 0014 { 0015 Q_OBJECT 0016 0017 private: 0018 const QString m_dataPath = QFINDTESTDATA("data/xmltvfetcher/test.xml"); 0019 0020 private Q_SLOTS: 0021 void initTestCase() 0022 { 0023 // xmltv: : Europe/Berlin (UTC+1), DB: UTC 0024 // check that start/stop times are displayed correctly in Europe/Athens (UTC+2 = EET-2) 0025 qputenv("TZ", "EET-2"); 0026 QStandardPaths::setTestModeEnabled(true); 0027 0028 TellySkoutSettings::setXmltvFile(m_dataPath); 0029 } 0030 0031 void testFetchGroups() 0032 { 0033 XmltvFetcher fetcher; 0034 QVector<GroupData> data; 0035 bool callbackCalled = false; 0036 bool errorCallbackCalled = false; 0037 fetcher.fetchGroups( 0038 [&data, &callbackCalled](const QVector<GroupData> &groups) { 0039 data = groups; 0040 callbackCalled = true; 0041 }, 0042 [&errorCallbackCalled](Error) { 0043 errorCallbackCalled = true; 0044 }); 0045 QCOMPARE(callbackCalled, true); 0046 QCOMPARE(errorCallbackCalled, false); 0047 QCOMPARE(data.size(), 1); 0048 const GroupData &group = data.at(0); 0049 QCOMPARE(group.m_id.value(), "xmltv"); 0050 QCOMPARE(group.m_name, "XMLTV"); 0051 QCOMPARE(group.m_url, m_dataPath); 0052 } 0053 0054 void testFetchGroup() 0055 { 0056 XmltvFetcher fetcher; 0057 const GroupData group{GroupId("xmltv"), "XMLTV", m_dataPath}; 0058 QList<ChannelData> data; 0059 bool callbackCalled = false; 0060 bool errorCallbackCalled = false; 0061 fetcher.fetchGroup( 0062 group.m_url, 0063 group.m_id, 0064 [&data, &callbackCalled](const QList<ChannelData> &channels) { 0065 data = channels; 0066 callbackCalled = true; 0067 }, 0068 [&errorCallbackCalled](Error) { 0069 errorCallbackCalled = true; 0070 }); 0071 QCOMPARE(callbackCalled, true); 0072 QCOMPARE(errorCallbackCalled, false); 0073 QCOMPARE(data.size(), 2); 0074 } 0075 0076 void testFetchProgram() 0077 { 0078 const ChannelId channelId("channel1"); 0079 0080 XmltvFetcher fetcher; 0081 QVector<ProgramData> data; 0082 bool callbackCalled = false; 0083 bool errorCallbackCalled = false; 0084 fetcher.fetchProgram( 0085 channelId, 0086 [&data, &callbackCalled](const QVector<ProgramData> &programs) { 0087 data = programs; 0088 callbackCalled = true; 0089 }, 0090 [&errorCallbackCalled](Error) { 0091 errorCallbackCalled = true; 0092 }); 0093 QCOMPARE(callbackCalled, true); 0094 QCOMPARE(errorCallbackCalled, false); 0095 QCOMPARE(data.size(), 2); 0096 0097 QCOMPARE(data.at(0).m_id, ProgramId("channel1_1672182000")); 0098 QCOMPARE(data.at(0).m_url, ""); 0099 QCOMPARE(data.at(0).m_channelId, channelId); 0100 QCOMPARE(data.at(0).m_startTime, QDateTime::fromString("2022-12-28T01:00:00", Qt::ISODate)); 0101 QCOMPARE(data.at(0).m_stopTime, QDateTime::fromString("2022-12-28T07:00:00", Qt::ISODate)); 0102 QCOMPARE(data.at(0).m_title, "Title 1"); 0103 QCOMPARE(data.at(0).m_subtitle, "Subtitle 1"); 0104 QCOMPARE(data.at(0).m_description, "Description 1"); 0105 QCOMPARE(data.at(0).m_descriptionFetched, true); 0106 QCOMPARE(data.at(0).m_categories.at(0), "Category 1"); 0107 0108 QCOMPARE(data.at(1).m_id, ProgramId("channel1_1672203600")); 0109 QCOMPARE(data.at(1).m_url, ""); 0110 QCOMPARE(data.at(1).m_channelId, channelId); 0111 QCOMPARE(data.at(1).m_startTime, QDateTime::fromString("2022-12-28T07:00:00", Qt::ISODate)); 0112 QCOMPARE(data.at(1).m_stopTime, QDateTime::fromString("2022-12-28T10:00:00", Qt::ISODate)); 0113 QCOMPARE(data.at(1).m_title, "Title 2"); 0114 QCOMPARE(data.at(1).m_subtitle, "Subtitle 2"); 0115 QCOMPARE(data.at(1).m_description, "Description 2"); 0116 QCOMPARE(data.at(1).m_descriptionFetched, true); 0117 QCOMPARE(data.at(1).m_categories.at(0), "Category 2"); 0118 } 0119 0120 void testFetchProgramDescription() 0121 { 0122 const ChannelId channelId("channel1"); 0123 ProgramId programId; 0124 0125 XmltvFetcher fetcher; 0126 QString data; 0127 bool callbackCalled = false; 0128 bool errorCallbackCalled = false; 0129 fetcher.fetchProgramDescription( 0130 channelId, 0131 ProgramId("channel1_1672182000"), 0132 "", 0133 [&data, &callbackCalled](const QString &description) { 0134 data = description; 0135 callbackCalled = true; 0136 }, 0137 [&errorCallbackCalled](Error) { 0138 errorCallbackCalled = true; 0139 }); 0140 // nothing done, description already known after fetchProgram() 0141 QCOMPARE(callbackCalled, false); 0142 QCOMPARE(errorCallbackCalled, false); 0143 QCOMPARE(data, ""); 0144 } 0145 }; 0146 0147 QTEST_GUILESS_MAIN(XmltvFetcherTest) 0148 0149 #include "xmltvfetchertest.moc"