summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorJan Dalheimer <jan@dalheimer.de>2013-12-14 19:19:14 +0100
committerJan Dalheimer <jan@dalheimer.de>2013-12-14 19:19:14 +0100
commitf273334212274b1f1c7da376ef186314de8c4428 (patch)
tree9cbe24ec2aa65f776cf87d1ec37d5d7d48221ade /tests
parenta02e62f17f7b51c489e209ab6937ad717fbcfb07 (diff)
downloadMultiMC-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.json23
-rw-r--r--tests/data/garbageChannels.json22
-rw-r--r--tests/data/index.json9
-rw-r--r--tests/tst_UpdateChecker.cpp77
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)