From c1e478774f7a3ed94c28b57a4669736b3180a6bc Mon Sep 17 00:00:00 2001 From: HanzZ <hanzz.k@gmail.com> Date: Sun, 16 Sep 2012 15:13:11 +0200 Subject: [PATCH] Test for chatstates --- src/tests/conversationmanager.cpp | 33 +++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/src/tests/conversationmanager.cpp b/src/tests/conversationmanager.cpp index 47d421f0..4319177b 100644 --- a/src/tests/conversationmanager.cpp +++ b/src/tests/conversationmanager.cpp @@ -25,6 +25,7 @@ class ConversationManagerTest : public CPPUNIT_NS :: TestFixture, public BasicTe CPPUNIT_TEST_SUITE(ConversationManagerTest); CPPUNIT_TEST(handleNormalMessages); CPPUNIT_TEST(handleGroupchatMessages); + CPPUNIT_TEST(handleChatstateMessages); CPPUNIT_TEST(handleParticipantChanged); CPPUNIT_TEST(handlePMFromXMPP); CPPUNIT_TEST_SUITE_END(); @@ -55,6 +56,38 @@ class ConversationManagerTest : public CPPUNIT_NS :: TestFixture, public BasicTe m_msg = _msg; } + void handleChatstateMessages() { + User *user = userManager->getUser("user@localhost"); + + TestingConversation *conv = new TestingConversation(user->getConversationManager(), "buddy1"); + user->getConversationManager()->addConversation(conv); + conv->onMessageToSend.connect(boost::bind(&ConversationManagerTest::handleMessageReceived, this, _1, _2)); + + boost::shared_ptr<Swift::Message> msg(new Swift::Message()); + msg->addPayload(boost::make_shared<Swift::ChatState>(Swift::ChatState::Composing)); + + // Forward it + conv->handleMessage(msg); + loop->processEvents(); + + CPPUNIT_ASSERT_EQUAL(1, (int) received.size()); + CPPUNIT_ASSERT(dynamic_cast<Swift::Message *>(getStanza(received[0]))); + CPPUNIT_ASSERT(dynamic_cast<Swift::Message *>(getStanza(received[0]))->getPayload<Swift::ChatState>()); + received.clear(); + + // send response + msg->setFrom("user@localhost/resource"); + msg->setTo("buddy1@localhost/bot"); + injectMessage(msg); + loop->processEvents(); + + CPPUNIT_ASSERT_EQUAL(0, (int) received.size()); + CPPUNIT_ASSERT(m_msg); + CPPUNIT_ASSERT(m_msg->getPayload<Swift::ChatState>()); + + received.clear(); + } + void handleNormalMessages() { User *user = userManager->getUser("user@localhost");