More tests for Remote class
[irwi] / ut / ut_remote / ut_remote.cpp
index d221de0..2915f77 100644 (file)
@@ -1,12 +1,13 @@
 #include <QSettings>
 #include "ut_remote.h"
-
-#include <fstream>
+#include "rating.h"
+#include <QNetworkReply>
+#include "qnetworkaccessmanager.h"
 
 #include <QtTest>
 #include <QDebug>
+#include <QMutex>
 
-#include "qnetworkaccessmanager.h"
 
 #define private public
 #include "remote.h"
@@ -16,6 +17,8 @@ void reset()
 {
     QNetworkAccessManager::urls.clear();
     QSettings::values.clear();
+    QNetworkReply::data.close();
+    QNetworkReply::data.setData("");
 }
 
 void Ut_Remote::initTestCase()
@@ -44,14 +47,33 @@ void Ut_Remote::cleanup()
 
 void Ut_Remote::testSaveToFile_normal()
 {
+    connect(subject, SIGNAL(saveFinished()),
+            this, SLOT(wakeTest()));
     subject->m_name = "testname";
+    QSettings settings;
+    settings.setValue("lircConf", "/tmp/irwiTestLircConf");
+    QNetworkReply::data.close();
+    QNetworkReply::data.setData("testdata");
+    QNetworkReply::data.open(QIODevice::ReadOnly);
+
     subject->saveToFile();
+
+    //wait for signal
+    QMutex mutex;
+    mutex.lock();
+    cond.wait(&mutex, 1000);
+    mutex.unlock();
+
     QCOMPARE(QNetworkAccessManager::urls.count(), 1);
     QCOMPARE(QNetworkAccessManager::urls[0], 
             QString("http://mercury.wipsl.com/irwi/uploaded/testname"));
-    QSettings settings;
     QCOMPARE(settings.value("remoteName", "fail").toString(), 
             QString("testname"));
+    QFile f("/tmp/irwiTestLircConf");
+    f.open(QIODevice::ReadOnly);
+    QByteArray testData = f.readAll();
+    f.close();
+    QCOMPARE(testData, QNetworkReply::data.data());
 }
 
 void Ut_Remote::testSaveToFile_emptyname()
@@ -64,14 +86,61 @@ void Ut_Remote::testSaveToFile_emptyname()
             QString("testname"));
 }
 
-void Ut_Remote::testUpdateInfo()
+void Ut_Remote::testUpdateInfo_normal()
 {
+    connect(subject, SIGNAL(infoUpdated()),
+            this, SLOT(wakeTest()));
+    subject->m_name = "testname";
+    QNetworkReply::data.close();
+    QNetworkReply::data.setData("1\n2\ntestmfg\n");
+    QNetworkReply::data.open(QIODevice::ReadOnly);
+    subject->updateInfo();
+
+    //wait for signal
+    QMutex mutex;
+    mutex.lock();
+    cond.wait(&mutex, 1000);
+    mutex.unlock();
+
+    QCOMPARE(QNetworkAccessManager::urls.count(), 1);
+    QCOMPARE(QNetworkAccessManager::urls[0], 
+            QString("http://mercury.wipsl.com/irwi/vote/get?name=testname"));
+    QCOMPARE(subject->rating(), 1);
+    QCOMPARE(subject->voteCount(), 2);
+    QCOMPARE(subject->mfg(), QString("testmfg"));
 }
 
-void Ut_Remote::testSendRating()
+void Ut_Remote::testUpdateInfo_emptyname()
 {
+    subject->m_name = "";
+    subject->updateInfo();
+    QCOMPARE(QNetworkAccessManager::urls.count(), 0);
 }
 
+void Ut_Remote::testSendRating_up()
+{
+    subject->m_name = "testname";
+    subject->sendRating(Rating::Up);
+    QCOMPARE(QNetworkAccessManager::urls.count(), 1);
+    QCOMPARE(QNetworkAccessManager::urls[0], 
+            QString("http://mercury.wipsl.com/irwi/vote/up?name=testname"));
+}
+
+void Ut_Remote::testSendRating_down()
+{
+    subject->m_name = "testname";
+    subject->sendRating(Rating::Down);
+    QCOMPARE(QNetworkAccessManager::urls.count(), 1);
+    QCOMPARE(QNetworkAccessManager::urls[0], 
+            QString("http://mercury.wipsl.com/irwi/vote/down?name=testname"));
+}
+
+void Ut_Remote::wakeTest()
+{
+    cond.wakeAll();
+}
+
+
 QTEST_MAIN(Ut_Remote)