summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'Swift/Controllers/Roster/UnitTest/RosterControllerTest.cpp')
-rw-r--r--Swift/Controllers/Roster/UnitTest/RosterControllerTest.cpp34
1 files changed, 28 insertions, 6 deletions
diff --git a/Swift/Controllers/Roster/UnitTest/RosterControllerTest.cpp b/Swift/Controllers/Roster/UnitTest/RosterControllerTest.cpp
index c396e48..9320af1 100644
--- a/Swift/Controllers/Roster/UnitTest/RosterControllerTest.cpp
+++ b/Swift/Controllers/Roster/UnitTest/RosterControllerTest.cpp
@@ -1,8 +1,7 @@
1
2/* 1/*
3 * Copyright (c) 2010 Isode Limited. 2 * Copyright (c) 2010-2015 Isode Limited.
4 * All rights reserved. 3 * All rights reserved.
5 * See the COPYING file for more information. 4 * See the COPYING file for more information.
6 */ 5 */
7 6
8#include <cppunit/extensions/HelperMacros.h> 7#include <cppunit/extensions/HelperMacros.h>
@@ -26,15 +25,14 @@
26#include <Swiften/Presence/PresenceOracle.h> 25#include <Swiften/Presence/PresenceOracle.h>
27#include <Swiften/Presence/SubscriptionManager.h> 26#include <Swiften/Presence/SubscriptionManager.h>
28#include <Swiften/Queries/DummyIQChannel.h> 27#include <Swiften/Queries/DummyIQChannel.h>
29#include <Swiften/Queries/IQRouter.h> 28#include <Swiften/Queries/IQRouter.h>
30#include <Swiften/Roster/XMPPRosterImpl.h> 29#include <Swiften/Roster/XMPPRosterImpl.h>
30#include <Swiften/VCards/VCardManager.h>
31#include <Swiften/VCards/VCardMemoryStorage.h> 31#include <Swiften/VCards/VCardMemoryStorage.h>
32// #include <Swiften/Elements/Payload.h>
33// #include <Swiften/Elements/RosterItemPayload.h>
34// #include <Swiften/Elements/RosterPayload.h>
35 32
33#include <Swift/Controllers/FileTransfer/FileTransferOverview.h>
36#include <Swift/Controllers/Roster/ContactRosterItem.h> 34#include <Swift/Controllers/Roster/ContactRosterItem.h>
37#include <Swift/Controllers/Roster/GroupRosterItem.h> 35#include <Swift/Controllers/Roster/GroupRosterItem.h>
38#include <Swift/Controllers/Roster/Roster.h> 36#include <Swift/Controllers/Roster/Roster.h>
39#include <Swift/Controllers/Roster/RosterController.h> 37#include <Swift/Controllers/Roster/RosterController.h>
40#include <Swift/Controllers/Settings/DummySettingsProvider.h> 38#include <Swift/Controllers/Settings/DummySettingsProvider.h>
@@ -60,10 +58,11 @@ class RosterControllerTest : public CppUnit::TestFixture {
60 CPPUNIT_TEST(testSendRename); 58 CPPUNIT_TEST(testSendRename);
61 CPPUNIT_TEST(testPresence); 59 CPPUNIT_TEST(testPresence);
62 CPPUNIT_TEST(testHighestPresence); 60 CPPUNIT_TEST(testHighestPresence);
63 CPPUNIT_TEST(testNotHighestPresence); 61 CPPUNIT_TEST(testNotHighestPresence);
64 CPPUNIT_TEST(testUnavailablePresence); 62 CPPUNIT_TEST(testUnavailablePresence);
63 CPPUNIT_TEST(testRemoveResultsInUnavailablePresence);
65 CPPUNIT_TEST_SUITE_END(); 64 CPPUNIT_TEST_SUITE_END();
66 65
67 public: 66 public:
68 void setUp() { 67 void setUp() {
69 jid_ = JID("testjid@swift.im/swift"); 68 jid_ = JID("testjid@swift.im/swift");
@@ -73,11 +72,11 @@ class RosterControllerTest : public CppUnit::TestFixture {
73 mucRegistry_ = new MUCRegistry(); 72 mucRegistry_ = new MUCRegistry();
74 nickResolver_ = new NickResolver(jid_.toBare(), xmppRoster_, NULL, mucRegistry_); 73 nickResolver_ = new NickResolver(jid_.toBare(), xmppRoster_, NULL, mucRegistry_);
75 channel_ = new DummyIQChannel(); 74 channel_ = new DummyIQChannel();
76 router_ = new IQRouter(channel_); 75 router_ = new IQRouter(channel_);
77 stanzaChannel_ = new DummyStanzaChannel(); 76 stanzaChannel_ = new DummyStanzaChannel();
78 presenceOracle_ = new PresenceOracle(stanzaChannel_); 77 presenceOracle_ = new PresenceOracle(stanzaChannel_, xmppRoster_);
79 subscriptionManager_ = new SubscriptionManager(stanzaChannel_); 78 subscriptionManager_ = new SubscriptionManager(stanzaChannel_);
80 eventController_ = new EventController(); 79 eventController_ = new EventController();
81 uiEventStream_ = new UIEventStream(); 80 uiEventStream_ = new UIEventStream();
82 settings_ = new DummySettingsProvider(); 81 settings_ = new DummySettingsProvider();
83 nickManager_ = new DummyNickManager(); 82 nickManager_ = new DummyNickManager();
@@ -317,10 +316,33 @@ class RosterControllerTest : public CppUnit::TestFixture {
317 316
318 CPPUNIT_ASSERT_EQUAL(groups.size(), item.getGroups().size()); 317 CPPUNIT_ASSERT_EQUAL(groups.size(), item.getGroups().size());
319 assertVectorsEqual(groups, item.getGroups(), __LINE__); 318 assertVectorsEqual(groups, item.getGroups(), __LINE__);
320 } 319 }
321 320
321 void testRemoveResultsInUnavailablePresence() {
322 std::vector<std::string> groups;
323 groups.push_back("testGroup1");
324 JID from("test@testdomain.com");
325 xmppRoster_->addContact(from, "name", groups, RosterItemPayload::Both);
326 Presence::ref lowPresence(new Presence());
327 lowPresence->setFrom(withResource(from, "bob"));
328 lowPresence->setPriority(2);
329 lowPresence->setStatus("Not here");
330 Presence::ref highPresence(new Presence());
331 highPresence->setFrom(withResource(from, "bert"));
332 highPresence->setPriority(10);
333 highPresence->setStatus("So totally here");
334 stanzaChannel_->onPresenceReceived(highPresence);
335 stanzaChannel_->onPresenceReceived(lowPresence);
336
337 CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(2), presenceOracle_->getAllPresence("test@testdomain.com").size());
338
339 xmppRoster_->onJIDRemoved(JID("test@testdomain.com"));
340 CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), presenceOracle_->getAllPresence("test@testdomain.com").size());
341 CPPUNIT_ASSERT_EQUAL(Presence::Unavailable, presenceOracle_->getAllPresence("test@testdomain.com")[0]->getType());
342 }
343
322 void assertVectorsEqual(const std::vector<std::string>& v1, const std::vector<std::string>& v2, int line) { 344 void assertVectorsEqual(const std::vector<std::string>& v1, const std::vector<std::string>& v2, int line) {
323 foreach (const std::string& entry, v1) { 345 foreach (const std::string& entry, v1) {
324 if (std::find(v2.begin(), v2.end(), entry) == v2.end()) { 346 if (std::find(v2.begin(), v2.end(), entry) == v2.end()) {
325 std::stringstream stream; 347 std::stringstream stream;
326 stream << "Couldn't find " << entry << " in v2 (line " << line << ")"; 348 stream << "Couldn't find " << entry << " in v2 (line " << line << ")";