More tests for Remote class
[irwi] / ut / ut_remote / ut_remote.cpp
1 #include <QSettings>
2 #include "ut_remote.h"
3 #include "rating.h"
4 #include <QNetworkReply>
5 #include "qnetworkaccessmanager.h"
6
7 #include <QtTest>
8 #include <QDebug>
9 #include <QMutex>
10
11
12 #define private public
13 #include "remote.h"
14 #undef private
15
16 void reset()
17 {
18     QNetworkAccessManager::urls.clear();
19     QSettings::values.clear();
20     QNetworkReply::data.close();
21     QNetworkReply::data.setData("");
22 }
23
24 void Ut_Remote::initTestCase()
25 {
26     subject = NULL;
27 }
28
29 void Ut_Remote::cleanupTestCase()
30 {
31 }
32
33 void Ut_Remote::init()
34 {
35     subject = new Remote();
36     reset();
37 }
38
39 void Ut_Remote::cleanup()
40 {
41     if (subject != NULL) {
42         delete subject;
43         subject = NULL;
44     }
45     reset();
46 }
47
48 void Ut_Remote::testSaveToFile_normal()
49 {
50     connect(subject, SIGNAL(saveFinished()),
51             this, SLOT(wakeTest()));
52     subject->m_name = "testname";
53     QSettings settings;
54     settings.setValue("lircConf", "/tmp/irwiTestLircConf");
55     QNetworkReply::data.close();
56     QNetworkReply::data.setData("testdata");
57     QNetworkReply::data.open(QIODevice::ReadOnly);
58
59     subject->saveToFile();
60
61     //wait for signal
62     QMutex mutex;
63     mutex.lock();
64     cond.wait(&mutex, 1000);
65     mutex.unlock();
66
67     QCOMPARE(QNetworkAccessManager::urls.count(), 1);
68     QCOMPARE(QNetworkAccessManager::urls[0], 
69             QString("http://mercury.wipsl.com/irwi/uploaded/testname"));
70     QCOMPARE(settings.value("remoteName", "fail").toString(), 
71             QString("testname"));
72     QFile f("/tmp/irwiTestLircConf");
73     f.open(QIODevice::ReadOnly);
74     QByteArray testData = f.readAll();
75     f.close();
76     QCOMPARE(testData, QNetworkReply::data.data());
77 }
78
79 void Ut_Remote::testSaveToFile_emptyname()
80 {
81     subject->m_name = "";
82     subject->saveToFile();
83     QCOMPARE(QNetworkAccessManager::urls.count(), 0);
84     QSettings settings;
85     QCOMPARE(settings.value("remoteName", "testname").toString(), 
86             QString("testname"));
87 }
88
89 void Ut_Remote::testUpdateInfo_normal()
90 {
91     connect(subject, SIGNAL(infoUpdated()),
92             this, SLOT(wakeTest()));
93     subject->m_name = "testname";
94     QNetworkReply::data.close();
95     QNetworkReply::data.setData("1\n2\ntestmfg\n");
96     QNetworkReply::data.open(QIODevice::ReadOnly);
97     subject->updateInfo();
98
99     //wait for signal
100     QMutex mutex;
101     mutex.lock();
102     cond.wait(&mutex, 1000);
103     mutex.unlock();
104
105     QCOMPARE(QNetworkAccessManager::urls.count(), 1);
106     QCOMPARE(QNetworkAccessManager::urls[0], 
107             QString("http://mercury.wipsl.com/irwi/vote/get?name=testname"));
108     QCOMPARE(subject->rating(), 1);
109     QCOMPARE(subject->voteCount(), 2);
110     QCOMPARE(subject->mfg(), QString("testmfg"));
111 }
112
113 void Ut_Remote::testUpdateInfo_emptyname()
114 {
115     subject->m_name = "";
116     subject->updateInfo();
117     QCOMPARE(QNetworkAccessManager::urls.count(), 0);
118 }
119
120 void Ut_Remote::testSendRating_up()
121 {
122     subject->m_name = "testname";
123     subject->sendRating(Rating::Up);
124     QCOMPARE(QNetworkAccessManager::urls.count(), 1);
125     QCOMPARE(QNetworkAccessManager::urls[0], 
126             QString("http://mercury.wipsl.com/irwi/vote/up?name=testname"));
127 }
128
129 void Ut_Remote::testSendRating_down()
130 {
131     subject->m_name = "testname";
132     subject->sendRating(Rating::Down);
133     QCOMPARE(QNetworkAccessManager::urls.count(), 1);
134     QCOMPARE(QNetworkAccessManager::urls[0], 
135             QString("http://mercury.wipsl.com/irwi/vote/down?name=testname"));
136 }
137
138 void Ut_Remote::wakeTest()
139 {
140     cond.wakeAll();
141 }
142
143
144 QTEST_MAIN(Ut_Remote)
145
146