diff options
author | Jan Dalheimer <jan@dalheimer.de> | 2013-12-14 19:19:14 +0100 |
---|---|---|
committer | Jan Dalheimer <jan@dalheimer.de> | 2013-12-14 19:19:14 +0100 |
commit | f273334212274b1f1c7da376ef186314de8c4428 (patch) | |
tree | 9cbe24ec2aa65f776cf87d1ec37d5d7d48221ade /tests | |
parent | a02e62f17f7b51c489e209ab6937ad717fbcfb07 (diff) | |
download | MultiMC-f273334212274b1f1c7da376ef186314de8c4428.tar MultiMC-f273334212274b1f1c7da376ef186314de8c4428.tar.gz MultiMC-f273334212274b1f1c7da376ef186314de8c4428.tar.lz MultiMC-f273334212274b1f1c7da376ef186314de8c4428.tar.xz MultiMC-f273334212274b1f1c7da376ef186314de8c4428.zip |
More tests for the UpdateChecker class. It should be done for now.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/data/errorChannels.json | 23 | ||||
-rw-r--r-- | tests/data/garbageChannels.json | 22 | ||||
-rw-r--r-- | tests/data/index.json | 9 | ||||
-rw-r--r-- | tests/tst_UpdateChecker.cpp | 77 |
4 files changed, 127 insertions, 4 deletions
diff --git a/tests/data/errorChannels.json b/tests/data/errorChannels.json new file mode 100644 index 00000000..333cd445 --- /dev/null +++ b/tests/data/errorChannels.json @@ -0,0 +1,23 @@ +{ + "format_version": 0, + "channels": [ + { + "id": "", + "name": "Develop", + "description": "The channel called \"develop\"", + "url": "http://example.org/stuff" + }, + { + "id": "stable", + "name": "", + "description": "It's stable at least", + "url": "ftp://username@host/path/to/stuff" + }, + { + "id": "42", + "name": "The Channel", + "description": "This is the channel that is going to answer all of your questions", + "url": "" + } + ] +} diff --git a/tests/data/garbageChannels.json b/tests/data/garbageChannels.json new file mode 100644 index 00000000..1450fb9c --- /dev/null +++ b/tests/data/garbageChannels.json @@ -0,0 +1,22 @@ +{ + "format_version": 0, + "channels": [ + { + "id": "develop", + "name": "Develop", + "description": "The channel called \"develop\"", +aa "url": "http://example.org/stuff" + }, +a "id": "stable", + "name": "Stable", + "description": "It's stable at least", + "url": "ftp://username@host/path/to/stuff" + }, + { + "id": "42"f + "name": "The Channel", + "description": "This is the channel that is going to answer all of your questions", + "url": "https://dent.me/tea" + } + ] +} diff --git a/tests/data/index.json b/tests/data/index.json new file mode 100644 index 00000000..20ceb9f4 --- /dev/null +++ b/tests/data/index.json @@ -0,0 +1,9 @@ +{ + "ApiVersion": 0, + "Versions": [ + { "Id": 0, "Name": "1.0.0" }, + { "Id": 1, "Name": "1.0.1" }, + { "Id": 2, "Name": "1.0.2" }, + { "Id": 3, "Name": "1.0.3" } + ] +} diff --git a/tests/tst_UpdateChecker.cpp b/tests/tst_UpdateChecker.cpp index a73dc1fd..302473f7 100644 --- a/tests/tst_UpdateChecker.cpp +++ b/tests/tst_UpdateChecker.cpp @@ -37,22 +37,38 @@ slots: QTest::addColumn<QString>("channel"); QTest::addColumn<QString>("channelUrl"); QTest::addColumn<bool>("hasChannels"); + QTest::addColumn<bool>("valid"); QTest::addColumn<QList<UpdateChecker::ChannelListEntry> >("result"); + QTest::newRow("garbage") + << QString() + << findTestDataUrl("tests/data/garbageChannels.json") + << false + << false + << QList<UpdateChecker::ChannelListEntry>(); + QTest::newRow("errors") + << QString() + << findTestDataUrl("tests/data/errorChannels.json") + << false + << true + << QList<UpdateChecker::ChannelListEntry>(); QTest::newRow("no channels") << QString() << findTestDataUrl("tests/data/noChannels.json") << false + << true << QList<UpdateChecker::ChannelListEntry>(); QTest::newRow("one channel") << QString("develop") << findTestDataUrl("tests/data/oneChannel.json") << true + << true << (QList<UpdateChecker::ChannelListEntry>() << UpdateChecker::ChannelListEntry{"develop", "Develop", "The channel called \"develop\"", "http://example.org/stuff"}); QTest::newRow("several channels") << QString("develop") << findTestDataUrl("tests/data/channels.json") << true + << true << (QList<UpdateChecker::ChannelListEntry>() << UpdateChecker::ChannelListEntry{"develop", "Develop", "The channel called \"develop\"", "http://example.org/stuff"} << UpdateChecker::ChannelListEntry{"stable", "Stable", "It's stable at least", "ftp://username@host/path/to/stuff"} @@ -63,25 +79,78 @@ slots: QFETCH(QString, channel); QFETCH(QString, channelUrl); QFETCH(bool, hasChannels); + QFETCH(bool, valid); QFETCH(QList<UpdateChecker::ChannelListEntry>, result); UpdateChecker checker; - QSignalSpy spy(&checker, SIGNAL(channelListLoaded())); - QVERIFY(spy.isValid()); + QSignalSpy channelListLoadedSpy(&checker, SIGNAL(channelListLoaded())); + QVERIFY(channelListLoadedSpy.isValid()); checker.setCurrentChannel(channel); checker.setChannelListUrl(channelUrl); checker.updateChanList(); - QVERIFY(spy.wait()); + if (valid) + { + QVERIFY(channelListLoadedSpy.wait()); + QCOMPARE(channelListLoadedSpy.size(), 1); + } + else + { + channelListLoadedSpy.wait(); + QCOMPARE(channelListLoadedSpy.size(), 0); + } - QCOMPARE(spy.size(), 1); QCOMPARE(checker.hasChannels(), hasChannels); QCOMPARE(checker.getChannelList(), result); } + + void tst_UpdateChecking_data() + { + QTest::addColumn<QString>("channel"); + QTest::addColumn<QString>("channelUrl"); + QTest::addColumn<int>("currentBuild"); + QTest::addColumn<QList<QVariant> >("result"); + + QTest::newRow("valid channel") + << "develop" << findTestDataUrl("tests/data/channels.json") + << 2 + << (QList<QVariant>() << QString() << "1.0.3" << 3); + } + + void tst_UpdateChecking() + { + QFETCH(QString, channel); + QFETCH(QString, channelUrl); + QFETCH(int, currentBuild); + QFETCH(QList<QVariant>, result); + + MMC->m_version.build = currentBuild; + + UpdateChecker checker; + checker.setCurrentChannel(channel); + checker.setChannelListUrl(channelUrl); + + QSignalSpy updateAvailableSpy(&checker, SIGNAL(updateAvailable(QString,QString,int))); + QVERIFY(updateAvailableSpy.isValid()); + QSignalSpy channelListLoadedSpy(&checker, SIGNAL(channelListLoaded())); + QVERIFY(channelListLoadedSpy.isValid()); + + checker.updateChanList(); + QVERIFY(channelListLoadedSpy.wait()); + + checker.m_channels[0].url = QUrl::fromLocalFile(QDir::current().absoluteFilePath("tests/data/")).toString(); + + checker.checkForUpdate(); + + QVERIFY(updateAvailableSpy.wait()); + QList<QVariant> res = result; + res[0] = checker.m_channels[0].url; + QCOMPARE(updateAvailableSpy.first(), res); + } }; QTEST_GUILESS_MAIN_MULTIMC(UpdateCheckerTest) |