Added user class and related unit-tests, implemented user data fetching, re-factored...
[situare] / tests / situareservice / testlocationupdate / testlocationupdate.cpp
1  /*
2     Situare - A location system for Facebook
3     Copyright (C) 2010  Ixonos Plc. Authors:
4
5         Henri Lampela - henri.lampela@ixonos.com
6
7     Situare is free software; you can redistribute it and/or
8     modify it under the terms of the GNU General Public License
9     version 2 as published by the Free Software Foundation.
10
11     Situare is distributed in the hope that it will be useful,
12     but WITHOUT ANY WARRANTY; without even the implied warranty of
13     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14     GNU General Public License for more details.
15
16     You should have received a copy of the GNU General Public License
17     along with Situare; if not, write to the Free Software
18     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301,
19     USA.
20  */
21
22 #include <QtTest/QtTest>
23 #include <QtCore>
24 #include <QPointF>
25 #include <QNetworkAccessManager>
26
27
28 #include "../../../src/situareservice/situareservice.h"
29 #include "../../../src/situareservice/situarecommon.h"
30 #include "../networkaccessmanagermock.h"
31 #include "../networkreplymock.h"
32
33
34 class testLocationUpdate : public QObject
35 {
36     Q_OBJECT
37 public:
38     ~testLocationUpdate();
39 private:
40     SituareService *situare;
41     NetworkAccessManagerMock *managerMock;
42     QList<QNetworkReply *> currentRequests;
43     FacebookAuthentication fbAuthentication;
44     FacebookCredentials credentials;
45
46 private slots:
47
48     //void testIncorrectUrl();
49     //void testCorrectUrl();
50     void testLocationUpdateCase();
51 };
52
53 testLocationUpdate::~testLocationUpdate()
54 {
55     delete situare;
56     delete managerMock;
57 }
58
59
60 //void testLocationUpdate::testIncorrectUrl()
61 //{
62 //    QNetworkAccessManager *manager = new QNetworkAccessManager();
63 //    managerMock = new NetworkAccessManagerMock(manager, this);
64 //    situare = new SituareService(this, manager);
65 //
66 //    managerMock->setMode(NetworkAccessManagerMock::INCORRECT);
67 //
68 //    QSignalSpy receivedErrorSpy(situare, SIGNAL(error(QString)));
69 //
70 //    QVERIFY(receivedErrorSpy.isValid());
71 //
72 //    // incorrect url
73 //
74 //    situare->sendRequest(QUrl("http://client.situare.nett"), COOKIE, QString(""));
75 //    QTest::qWait(1000);
76 //    QCOMPARE(receivedErrorSpy.count(), 1);
77 //
78 //    delete manager;
79 //}
80
81 //void testLocationUpdate::testCorrectUrl()
82 //{
83 //    QNetworkAccessManager *manager = new QNetworkAccessManager();
84 //    managerMock = new NetworkAccessManagerMock(manager, this);
85 //    situare = new SituareService(this, manager);
86 //
87 //    managerMock->setMode(NetworkAccessManagerMock::CORRECT);
88 //
89 //    QSignalSpy receivedErrorSpy(situare, SIGNAL(error(QString)));
90 //
91 //    QVERIFY(receivedErrorSpy.isValid());
92 //
93 //    QUrl url = QUrl("http://client.situare.net");
94 //
95 //    situare->sendRequest(url, COOKIE, QString(""));
96 //    QTest::qWait(1000);
97 //
98 //    QCOMPARE(receivedErrorSpy.count(), 0);
99 //
100 //    delete manager;
101 //}
102
103 void testLocationUpdate::testLocationUpdateCase()
104 {
105     QNetworkAccessManager *manager = new QNetworkAccessManager();
106     managerMock = new NetworkAccessManagerMock(manager, this);
107     situare = new SituareService(this, manager);
108
109     managerMock->setMode(NetworkAccessManagerMock::CORRECT);
110
111     QSignalSpy receivedErrorSpy(situare, SIGNAL(error(QString)));
112
113     QPointF coordinates(65.3, 25.5);
114     bool publish = true;
115     QString status = "unit-test";
116
117     situare->updateLocation(coordinates, status, publish);
118     QTest::qWait(1000);
119
120     QCOMPARE(receivedErrorSpy.count(), 0);
121
122     delete manager;
123 }
124
125
126 QTEST_MAIN(testLocationUpdate)
127 #include "testlocationupdate.moc"