diff options
Diffstat (limited to 'Swift/Controllers/Roster/UnitTest')
| -rw-r--r-- | Swift/Controllers/Roster/UnitTest/RosterControllerTest.cpp | 37 |
1 files changed, 25 insertions, 12 deletions
diff --git a/Swift/Controllers/Roster/UnitTest/RosterControllerTest.cpp b/Swift/Controllers/Roster/UnitTest/RosterControllerTest.cpp index 9320af1..d774e6d 100644 --- a/Swift/Controllers/Roster/UnitTest/RosterControllerTest.cpp +++ b/Swift/Controllers/Roster/UnitTest/RosterControllerTest.cpp | |||
| @@ -192,43 +192,56 @@ class RosterControllerTest : public CppUnit::TestFixture { | |||
| 192 | void testUnavailablePresence() { | 192 | void testUnavailablePresence() { |
| 193 | std::vector<std::string> groups; | 193 | std::vector<std::string> groups; |
| 194 | groups.push_back("testGroup1"); | 194 | groups.push_back("testGroup1"); |
| 195 | JID from("test@testdomain.com"); | 195 | JID from("test@testdomain.com"); |
| 196 | xmppRoster_->addContact(from, "name", groups, RosterItemPayload::Both); | 196 | xmppRoster_->addContact(from, "name", groups, RosterItemPayload::Both); |
| 197 | |||
| 197 | Presence::ref lowPresence(new Presence()); | 198 | Presence::ref lowPresence(new Presence()); |
| 198 | lowPresence->setFrom(withResource(from, "bob")); | 199 | lowPresence->setFrom(withResource(from, "bob")); |
| 199 | lowPresence->setPriority(2); | 200 | lowPresence->setPriority(2); |
| 201 | lowPresence->setShow(StatusShow::Away); | ||
| 200 | lowPresence->setStatus("Not here"); | 202 | lowPresence->setStatus("Not here"); |
| 203 | Presence::ref lowPresenceOffline(new Presence()); | ||
| 204 | lowPresenceOffline->setFrom(withResource(from, "bob")); | ||
| 205 | lowPresenceOffline->setStatus("Signing out"); | ||
| 206 | lowPresenceOffline->setType(Presence::Unavailable); | ||
| 207 | |||
| 201 | Presence::ref highPresence(new Presence()); | 208 | Presence::ref highPresence(new Presence()); |
| 202 | highPresence->setFrom(withResource(from, "bert")); | 209 | highPresence->setFrom(withResource(from, "bert")); |
| 203 | highPresence->setPriority(10); | 210 | highPresence->setPriority(10); |
| 204 | highPresence->setStatus("So totally here"); | 211 | highPresence->setStatus("So totally here"); |
| 205 | Presence::ref highPresenceOffline(new Presence()); | 212 | Presence::ref highPresenceOffline(new Presence()); |
| 206 | highPresenceOffline->setFrom(withResource(from, "bert")); | 213 | highPresenceOffline->setFrom(withResource(from, "bert")); |
| 207 | highPresenceOffline->setType(Presence::Unavailable); | 214 | highPresenceOffline->setType(Presence::Unavailable); |
| 208 | Presence::ref lowPresenceOffline(new Presence()); | 215 | |
| 209 | lowPresenceOffline->setFrom(withResource(from, "bob")); | ||
| 210 | lowPresenceOffline->setStatus("Signing out"); | ||
| 211 | lowPresenceOffline->setType(Presence::Unavailable); | ||
| 212 | stanzaChannel_->onPresenceReceived(lowPresence); | 216 | stanzaChannel_->onPresenceReceived(lowPresence); |
| 217 | Presence::ref accountPresence = presenceOracle_->getAccountPresence(from); | ||
| 218 | CPPUNIT_ASSERT_EQUAL(StatusShow::Away, accountPresence->getShow()); | ||
| 219 | |||
| 213 | stanzaChannel_->onPresenceReceived(highPresence); | 220 | stanzaChannel_->onPresenceReceived(highPresence); |
| 221 | accountPresence = presenceOracle_->getAccountPresence(from); | ||
| 222 | CPPUNIT_ASSERT_EQUAL(StatusShow::Online, accountPresence->getShow()); | ||
| 223 | |||
| 214 | stanzaChannel_->onPresenceReceived(highPresenceOffline); | 224 | stanzaChannel_->onPresenceReceived(highPresenceOffline); |
| 225 | |||
| 226 | // After this, the roster should show the low presence. | ||
| 215 | ContactRosterItem* item = dynamic_cast<ContactRosterItem*>(dynamic_cast<GroupRosterItem*>(CHILDREN[0])->getChildren()[0]); | 227 | ContactRosterItem* item = dynamic_cast<ContactRosterItem*>(dynamic_cast<GroupRosterItem*>(CHILDREN[0])->getChildren()[0]); |
| 216 | CPPUNIT_ASSERT(item); | 228 | CPPUNIT_ASSERT(item); |
| 217 | /* A verification that if the test fails, it's the RosterController, not the PresenceOracle. */ | 229 | |
| 218 | Presence::ref high = presenceOracle_->getHighestPriorityPresence(from); | 230 | Presence::ref low = presenceOracle_->getAccountPresence(from); |
| 219 | CPPUNIT_ASSERT_EQUAL(Presence::Available, high->getType()); | 231 | |
| 220 | CPPUNIT_ASSERT_EQUAL(lowPresence->getStatus(), high->getStatus()); | 232 | CPPUNIT_ASSERT_EQUAL(Presence::Available, low->getType()); |
| 221 | CPPUNIT_ASSERT_EQUAL(StatusShow::Online, item->getStatusShow()); | 233 | CPPUNIT_ASSERT_EQUAL(lowPresence->getStatus(), low->getStatus()); |
| 234 | CPPUNIT_ASSERT_EQUAL(lowPresence->getShow(), item->getStatusShow()); | ||
| 222 | CPPUNIT_ASSERT_EQUAL(lowPresence->getStatus(), item->getStatusText()); | 235 | CPPUNIT_ASSERT_EQUAL(lowPresence->getStatus(), item->getStatusText()); |
| 223 | stanzaChannel_->onPresenceReceived(lowPresenceOffline); | 236 | stanzaChannel_->onPresenceReceived(lowPresenceOffline); |
| 224 | item = dynamic_cast<ContactRosterItem*>(dynamic_cast<GroupRosterItem*>(CHILDREN[0])->getChildren()[0]); | 237 | item = dynamic_cast<ContactRosterItem*>(dynamic_cast<GroupRosterItem*>(CHILDREN[0])->getChildren()[0]); |
| 225 | CPPUNIT_ASSERT(item); | 238 | CPPUNIT_ASSERT(item); |
| 226 | /* A verification that if the test fails, it's the RosterController, not the PresenceOracle. */ | 239 | /* A verification that if the test fails, it's the RosterController, not the PresenceOracle. */ |
| 227 | high = presenceOracle_->getHighestPriorityPresence(from); | 240 | low = presenceOracle_->getHighestPriorityPresence(from); |
| 228 | CPPUNIT_ASSERT_EQUAL(Presence::Unavailable, high->getType()); | 241 | CPPUNIT_ASSERT_EQUAL(Presence::Unavailable, low->getType()); |
| 229 | CPPUNIT_ASSERT_EQUAL(lowPresenceOffline->getStatus(), high->getStatus()); | 242 | CPPUNIT_ASSERT_EQUAL(lowPresenceOffline->getStatus(), low->getStatus()); |
| 230 | CPPUNIT_ASSERT_EQUAL(StatusShow::None, item->getStatusShow()); | 243 | CPPUNIT_ASSERT_EQUAL(StatusShow::None, item->getStatusShow()); |
| 231 | CPPUNIT_ASSERT_EQUAL(lowPresenceOffline->getStatus(), item->getStatusText()); | 244 | CPPUNIT_ASSERT_EQUAL(lowPresenceOffline->getStatus(), item->getStatusText()); |
| 232 | } | 245 | } |
| 233 | 246 | ||
| 234 | void testAdd() { | 247 | void testAdd() { |
Swift