sigproxy: Actually rename SyncableObjects when requested
[quassel.git] / tests / common / signalproxytest.cpp
index c79f0a2..a6b91fa 100644 (file)
@@ -65,20 +65,32 @@ public:
     using Data = std::pair<int, QString>;
     using Spy = ValueSpy<Data>;
 
-    ProxyObject(Spy* spy)
+    ProxyObject(Spy* spy, Peer* expectedPeer)
         : _spy{spy}
+        , _expectedPeer{expectedPeer}
     {}
 
 signals:
     void sendData(int, const QString&);
     void sendMoreData(int, const QString&);
+    void sendToFunctor(int, const QString&);
 
 public slots:
-    void receiveData(int i, const QString& s) { _spy->notify(std::make_pair(i, s)); }
-    void receiveExtraData(int i, const QString& s) { _spy->notify(std::make_pair(-i, s.toUpper())); }
+    void receiveData(int i, const QString& s)
+    {
+        EXPECT_EQ(_expectedPeer, SignalProxy::current()->sourcePeer());
+        _spy->notify(std::make_pair(i, s));
+    }
+
+    void receiveExtraData(int i, const QString& s)
+    {
+        EXPECT_EQ(_expectedPeer, SignalProxy::current()->sourcePeer());
+        _spy->notify(std::make_pair(-i, s.toUpper()));
+    }
 
 private:
     Spy* _spy;
+    Peer* _expectedPeer;
 };
 
 TEST_F(SignalProxyTest, attachSignal)
@@ -91,8 +103,8 @@ TEST_F(SignalProxyTest, attachSignal)
     }
 
     ProxyObject::Spy clientSpy, serverSpy;
-    ProxyObject clientObject{&clientSpy};
-    ProxyObject serverObject{&serverSpy};
+    ProxyObject clientObject{&clientSpy, _clientPeer};
+    ProxyObject serverObject{&serverSpy, _serverPeer};
 
     // Deliberately not normalize some of the macro invocations
     _clientProxy.attachSignal(&clientObject, SIGNAL(sendData(int, const QString&)));
@@ -129,7 +141,6 @@ class SyncObj : public SyncableObject
     Q_PROPERTY(double doubleProperty READ doubleProperty WRITE setDoubleProperty)
 
 public:
-
     int intProperty() const
     {
         return _intProperty;
@@ -259,6 +270,10 @@ TEST_F(SignalProxyTest, syncableObject)
                                                              {"intProperty", 17},
                                                              {"doubleProperty", 2.3}
                                                          }))));
+
+        // Rename object
+        EXPECT_CALL(*_serverPeer, Dispatches(RpcCall(Eq("__objectRenamed__"), ElementsAre("SyncObj", "Bar", "Foo"))));
+        EXPECT_CALL(*_serverPeer, Dispatches(SyncMessage(Eq("SyncObj"), Eq("Bar"), Eq("setStringProperty"), ElementsAre("Hi Universe"))));
     }
 
     SignalSpy spy;
@@ -334,6 +349,14 @@ TEST_F(SignalProxyTest, syncableObject)
     EXPECT_EQ(17, clientObject.intProperty());
     EXPECT_EQ("Quassel", clientObject.stringProperty());
     EXPECT_EQ(2.3, clientObject.doubleProperty());
+
+    // -- Rename object
+    spy.connect(&clientObject, &SyncObj::stringPropertyChanged);
+    serverObject.setObjectName("Bar");
+    serverObject.setStringProperty("Hi Universe");
+    ASSERT_TRUE(spy.wait());
+    EXPECT_EQ("Bar", clientObject.objectName());
+    EXPECT_EQ("Hi Universe", clientObject.stringProperty());
 }
 
 #include "signalproxytest.moc"