Changeset - cb2dbb39379f
[Not reviewed]
0 2 0
HanzZ - 12 years ago 2013-01-12 13:31:28
hanzz.k@gmail.com
Send unavailable presences only from buddies which were available when disconnecting
2 files changed with 18 insertions and 1 deletions:
0 comments (0 inline, 0 general)
src/rostermanager.cpp
Show inline comments
 
@@ -609,7 +609,7 @@ void RosterManager::sendUnavailablePresences(const Swift::JID &to) {
 
			continue;
 
		}
 
		Swift::Presence::ref presence = buddy->generatePresenceStanza(255);
 
		if (presence) {
 
		if (presence && presence->getType() == Swift::Presence::Available) {
 
			presence->setTo(to);
 
			presence->setType(Swift::Presence::Unavailable);
 
			m_component->getStanzaChannel()->sendPresence(presence);
src/tests/rostermanager.cpp
Show inline comments
 
@@ -24,6 +24,7 @@ class RosterManagerTest : public CPPUNIT_NS :: TestFixture, public BasicTest {
 
	CPPUNIT_TEST_SUITE(RosterManagerTest);
 
	CPPUNIT_TEST(setBuddy);
 
	CPPUNIT_TEST(sendCurrentPresences);
 
	CPPUNIT_TEST(sendUnavailablePresences);
 
	CPPUNIT_TEST(sendCurrentPresence);
 
	CPPUNIT_TEST(sendBuddySubscribePresence);
 
	CPPUNIT_TEST(removeBuddy);
 
@@ -120,6 +121,22 @@ class RosterManagerTest : public CPPUNIT_NS :: TestFixture, public BasicTest {
 
		}
 
	}
 

	
 
	void sendUnavailablePresences() {
 
		setBuddy();
 
		received.clear();
 

	
 
		User *user = userManager->getUser("user@localhost");
 
		user->getRosterManager()->sendUnavailablePresences("user@localhost/resource");
 

	
 
		CPPUNIT_ASSERT_EQUAL(3, (int) received.size());
 

	
 
		for (int i = 0; i < 3; i++) {
 
			CPPUNIT_ASSERT(dynamic_cast<Swift::Presence *>(getStanza(received[i])));
 
			CPPUNIT_ASSERT_EQUAL(Swift::Presence::Unavailable, dynamic_cast<Swift::Presence *>(getStanza(received[i]))->getType());
 
			CPPUNIT_ASSERT_EQUAL(std::string("user@localhost/resource"), dynamic_cast<Swift::Presence *>(getStanza(received[i]))->getTo().toString());
 
		}
 
	}
 

	
 
	void sendCurrentPresence() {
 
		setBuddy();
 
		received.clear();
0 comments (0 inline, 0 general)