[telepathy-qt4/master] client test: Added test for Client.Observer.ObserveChannels.

Andre Moreira Magalhaes (andrunko) andre.magalhaes at collabora.co.uk
Fri May 15 08:06:08 PDT 2009


---
 TelepathyQt4/client-registrar.cpp |   33 ++++++++++++++++++++
 tests/dbus/client.cpp             |   60 +++++++++++++++++++++++++++++++++++++
 2 files changed, 93 insertions(+), 0 deletions(-)

diff --git a/TelepathyQt4/client-registrar.cpp b/TelepathyQt4/client-registrar.cpp
index 02d2fae..013497d 100644
--- a/TelepathyQt4/client-registrar.cpp
+++ b/TelepathyQt4/client-registrar.cpp
@@ -111,6 +111,39 @@ void ClientObserverAdaptor::ObserveChannels(const QDBusObjectPath &accountPath,
         const QVariantMap &observerInfo,
         const QDBusMessage &message)
 {
+    debug() << "ObserveChannels: account:" << accountPath.path() <<
+        ", connection:" << connectionPath.path();
+
+    AccountPtr account = Account::create(mBus,
+            TELEPATHY_ACCOUNT_MANAGER_BUS_NAME,
+            accountPath.path());
+
+    QString connectionBusName = connectionPath.path().mid(1).replace('/', '.');
+    ConnectionPtr connection = Connection::create(mBus, connectionBusName,
+            connectionPath.path());
+
+    QList<ChannelPtr> channels;
+    ChannelPtr channel;
+    foreach (const ChannelDetails &channelDetails, channelDetailsList) {
+        channel = Channel::create(connection, channelDetails.channel.path(),
+                channelDetails.properties);
+        channels.append(channel);
+    }
+
+    QList<ChannelRequestPtr> channelRequests;
+    ChannelRequestPtr channelRequest;
+    foreach (const QDBusObjectPath &path, requestsSatisfied) {
+        channelRequest = ChannelRequest::create(mBus,
+                path.path(), QVariantMap());
+        channelRequests.append(channelRequest);
+    }
+
+    MethodInvocationContextPtr<> context =
+        MethodInvocationContextPtr<>(
+                new MethodInvocationContext<>(mBus, message));
+
+    mClient->observeChannels(context, account, connection, channels,
+            dispatchOperationPath.path(), channelRequests, observerInfo);
 }
 
 QHash<QPair<QString, QString>, QList<ClientHandlerAdaptor *> > ClientHandlerAdaptor::mAdaptorsForConnection;
diff --git a/tests/dbus/client.cpp b/tests/dbus/client.cpp
index 7ba4280..de1860b 100644
--- a/tests/dbus/client.cpp
+++ b/tests/dbus/client.cpp
@@ -10,10 +10,12 @@
 #include <TelepathyQt4/Account>
 #include <TelepathyQt4/AccountManager>
 #include <TelepathyQt4/AbstractClientHandler>
+#include <TelepathyQt4/AbstractClientObserver>
 #include <TelepathyQt4/Channel>
 #include <TelepathyQt4/ChannelRequest>
 #include <TelepathyQt4/ClientHandlerInterface>
 #include <TelepathyQt4/ClientInterfaceRequestsInterface>
+#include <TelepathyQt4/ClientObserverInterface>
 #include <TelepathyQt4/ClientRegistrar>
 #include <TelepathyQt4/Connection>
 #include <TelepathyQt4/Debug>
@@ -161,6 +163,15 @@ public:
             const QList<ChannelRequestPtr> &requestsSatisfied,
             const QVariantMap &observerInfo)
     {
+        mObserveChannelsAccount = account;
+        mObserveChannelsConnection = connection;
+        mObserveChannelsChannels = channels;
+        mObserveChannelsDispathOperationPath = dispatchOperationPath;
+        mObserveChannelsRequestsSatisfied = requestsSatisfied;
+        mObserveChannelsObserverInfo = observerInfo;
+
+        context->setFinished();
+        QTimer::singleShot(0, this, SIGNAL(observeChannelsFinished()));
     }
 
     bool bypassApproval() const
@@ -209,6 +220,13 @@ public:
         emit requestRemoved(request, errorName, errorMessage);
     }
 
+    AccountPtr mObserveChannelsAccount;
+    ConnectionPtr mObserveChannelsConnection;
+    QList<ChannelPtr> mObserveChannelsChannels;
+    QString mObserveChannelsDispathOperationPath;
+    QList<ChannelRequestPtr> mObserveChannelsRequestsSatisfied;
+    QVariantMap mObserveChannelsObserverInfo;
+
     bool mBypassApproval;
     AccountPtr mHandleChannelsAccount;
     ConnectionPtr mHandleChannelsConnection;
@@ -226,6 +244,7 @@ Q_SIGNALS:
     void requestRemoved(const Tp::ChannelRequestPtr &request,
             const QString &errorName, const QString &errorMessage);
     void handleChannelsFinished();
+    void observeChannelsFinished();
     void channelClosed();
 };
 
@@ -240,6 +259,9 @@ public:
           mText1ChanService(0)
     { }
 
+    void testObserveChannelsCommon(const AbstractClientPtr &clientObject,
+            const QString &clientBusName, const QString &clientObjectPath);
+
 protected Q_SLOTS:
     void expectSignalEmission();
 
@@ -248,6 +270,7 @@ private Q_SLOTS:
     void init();
 
     void testRegister();
+    void testObserveChannels();
     void testRequests();
     void testHandleChannels();
 
@@ -484,6 +507,43 @@ void TestClient::testRequests()
              QString("Not available"));
 }
 
+void TestClient::testObserveChannelsCommon(const AbstractClientPtr &clientObject,
+        const QString &clientBusName, const QString &clientObjectPath)
+{
+    QDBusConnection bus = mClientRegistrar->dbusConnection();
+
+    ClientObserverInterface *observeIface = new ClientObserverInterface(bus,
+            clientBusName, clientObjectPath, this);
+    MyClient *client = dynamic_cast<MyClient*>(clientObject.data());
+    connect(client,
+            SIGNAL(observeChannelsFinished()),
+            SLOT(expectSignalEmission()));
+    ChannelDetailsList channelDetailsList;
+    ChannelDetails channelDetails = { QDBusObjectPath(mText1ChanPath), QVariantMap() };
+    channelDetailsList.append(channelDetails);
+    observeIface->ObserveChannels(QDBusObjectPath(mAccount->objectPath()),
+            QDBusObjectPath(mConn->objectPath()),
+            channelDetailsList,
+            QDBusObjectPath("/"),
+            ObjectPathList() << QDBusObjectPath(mChannelRequestPath),
+            QVariantMap());
+    QCOMPARE(mLoop->exec(), 0);
+
+    QCOMPARE(client->mObserveChannelsAccount->objectPath(), mAccount->objectPath());
+    QCOMPARE(client->mObserveChannelsConnection->objectPath(), mConn->objectPath());
+    QCOMPARE(client->mObserveChannelsChannels.first()->objectPath(), mText1ChanPath);
+    QCOMPARE(client->mObserveChannelsDispathOperationPath, QString("/"));
+    QCOMPARE(client->mObserveChannelsRequestsSatisfied.first()->objectPath(), mChannelRequestPath);
+}
+
+void TestClient::testObserveChannels()
+{
+    testObserveChannelsCommon(mClientObject1,
+            mClientObject1BusName, mClientObject1Path);
+    testObserveChannelsCommon(mClientObject2,
+            mClientObject2BusName, mClientObject2Path);
+}
+
 void TestClient::testHandleChannels()
 {
     QDBusConnection bus = mClientRegistrar->dbusConnection();
-- 
1.5.6.5




More information about the telepathy-commits mailing list