diff options
| author | Richard Maudsley <richard.maudsley@isode.com> | 2014-06-23 10:52:31 (GMT) | 
|---|---|---|
| committer | Richard Maudsley <richard.maudsley@isode.com> | 2014-06-24 14:32:55 (GMT) | 
| commit | c779e07f6d1d23cc157ab3823a00edd95f70ab3b (patch) | |
| tree | 5de546a38677ce19be1b34932144460f11197f96 /Swiften/Avatars/UnitTest/VCardUpdateAvatarManagerTest.cpp | |
| parent | bd7f30aec53fc776be678577dbe4f9afec5898a6 (diff) | |
| download | swift-contrib-c779e07f6d1d23cc157ab3823a00edd95f70ab3b.zip swift-contrib-c779e07f6d1d23cc157ab3823a00edd95f70ab3b.tar.bz2 | |
Fix old avatar being displayed in QtRosterHeader when cleared.
Test-Information:
Added unit tests for AvatarManagerImpl and CombinedAvatarProvider. Updated test cases to distinguish between error case and empty avatar. Tested changing between blank and non-blank avatars while watching MUC and 1-to-1 chats.
Change-Id: I0bea89c7a22ae9c44a0b126e672a7af94b6f5049
Diffstat (limited to 'Swiften/Avatars/UnitTest/VCardUpdateAvatarManagerTest.cpp')
| -rw-r--r-- | Swiften/Avatars/UnitTest/VCardUpdateAvatarManagerTest.cpp | 20 | 
1 files changed, 15 insertions, 5 deletions
| diff --git a/Swiften/Avatars/UnitTest/VCardUpdateAvatarManagerTest.cpp b/Swiften/Avatars/UnitTest/VCardUpdateAvatarManagerTest.cpp index 01b10a2..c29a763 100644 --- a/Swiften/Avatars/UnitTest/VCardUpdateAvatarManagerTest.cpp +++ b/Swiften/Avatars/UnitTest/VCardUpdateAvatarManagerTest.cpp @@ -72,19 +72,21 @@ class VCardUpdateAvatarManagerTest : public CppUnit::TestFixture {  		}  		void testUpdate_NewHashStoresAvatarAndEmitsNotificationOnVCardReceive() {  			boost::shared_ptr<VCardUpdateAvatarManager> testling = createManager();  			stanzaChannel->onPresenceReceived(createPresenceWithPhotoHash(user1, avatar1Hash));  			stanzaChannel->onIQReceived(createVCardResult(avatar1));  			CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(changes.size()));  			CPPUNIT_ASSERT_EQUAL(user1.toBare(), changes[0]); -			CPPUNIT_ASSERT_EQUAL(avatar1Hash, testling->getAvatarHash(user1.toBare())); +			boost::optional<std::string> hash = testling->getAvatarHash(user1.toBare()); +			CPPUNIT_ASSERT(hash); +			CPPUNIT_ASSERT_EQUAL(avatar1Hash, *hash);  			CPPUNIT_ASSERT(avatarStorage->hasAvatar(avatar1Hash));  			CPPUNIT_ASSERT_EQUAL(avatar1, avatarStorage->getAvatar(avatar1Hash));  		}  		void testUpdate_KnownHash() {  			boost::shared_ptr<VCardUpdateAvatarManager> testling = createManager();  			stanzaChannel->onPresenceReceived(createPresenceWithPhotoHash(user1, avatar1Hash));  			stanzaChannel->onIQReceived(createVCardResult(avatar1));  			changes.clear(); @@ -102,59 +104,67 @@ class VCardUpdateAvatarManagerTest : public CppUnit::TestFixture {  			stanzaChannel->onIQReceived(createVCardResult(avatar1));  			changes.clear();  			stanzaChannel->sentStanzas.clear();  			stanzaChannel->onPresenceReceived(createPresenceWithPhotoHash(user2, avatar1Hash));  			CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(stanzaChannel->sentStanzas.size()));  			CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(changes.size()));  			CPPUNIT_ASSERT_EQUAL(user2.toBare(), changes[0]); -			CPPUNIT_ASSERT_EQUAL(avatar1Hash, testling->getAvatarHash(user2.toBare())); +			boost::optional<std::string> hash = testling->getAvatarHash(user2.toBare()); +			CPPUNIT_ASSERT(hash); +			CPPUNIT_ASSERT_EQUAL(avatar1Hash, *hash);  		}  		void testVCardWithEmptyPhoto() {  			boost::shared_ptr<VCardUpdateAvatarManager> testling = createManager();  			vcardManager->requestVCard(JID("foo@bar.com"));  			stanzaChannel->onIQReceived(createVCardResult(ByteArray()));  			CPPUNIT_ASSERT(!avatarStorage->hasAvatar(Hexify::hexify(crypto->getSHA1Hash(ByteArray())))); -			CPPUNIT_ASSERT_EQUAL(std::string(), testling->getAvatarHash(JID("foo@bar.com"))); +			boost::optional<std::string> hash = testling->getAvatarHash(JID("foo@bar.com")); +			CPPUNIT_ASSERT(hash); +			CPPUNIT_ASSERT_EQUAL(std::string(), *hash);  		}  		void testStanzaChannelReset_ClearsHash() {  			boost::shared_ptr<VCardUpdateAvatarManager> testling = createManager();  			stanzaChannel->onPresenceReceived(createPresenceWithPhotoHash(user1, avatar1Hash));  			stanzaChannel->onIQReceived(createVCardResult(avatar1));  			changes.clear();  			stanzaChannel->sentStanzas.clear();  			stanzaChannel->setAvailable(false);  			stanzaChannel->setAvailable(true);  			CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(changes.size()));  			CPPUNIT_ASSERT_EQUAL(user1.toBare(), changes[0]); -			CPPUNIT_ASSERT_EQUAL(std::string(""), testling->getAvatarHash(user1.toBare())); +			boost::optional<std::string> hash = testling->getAvatarHash(user1.toBare()); +			CPPUNIT_ASSERT(!hash); +			//CPPUNIT_ASSERT_EQUAL(std::string(""), *hash);  		}  		void testStanzaChannelReset_ReceiveHashAfterResetUpdatesHash() {  			boost::shared_ptr<VCardUpdateAvatarManager> testling = createManager();  			stanzaChannel->onPresenceReceived(createPresenceWithPhotoHash(user1, avatar1Hash));  			stanzaChannel->onIQReceived(createVCardResult(avatar1));  			changes.clear();  			stanzaChannel->sentStanzas.clear();  			stanzaChannel->setAvailable(false);  			stanzaChannel->setAvailable(true);  			stanzaChannel->onPresenceReceived(createPresenceWithPhotoHash(user1, avatar1Hash));  			CPPUNIT_ASSERT_EQUAL(2, static_cast<int>(changes.size()));  			CPPUNIT_ASSERT_EQUAL(user1.toBare(), changes[1]); -			CPPUNIT_ASSERT_EQUAL(avatar1Hash, testling->getAvatarHash(user1.toBare())); +			boost::optional<std::string> hash = testling->getAvatarHash(user1.toBare()); +			CPPUNIT_ASSERT(hash); +			CPPUNIT_ASSERT_EQUAL(avatar1Hash, *hash);  		}  	private:  		boost::shared_ptr<VCardUpdateAvatarManager> createManager() {  			boost::shared_ptr<VCardUpdateAvatarManager> result(new VCardUpdateAvatarManager(vcardManager, stanzaChannel, avatarStorage, crypto.get(), mucRegistry));  			result->onAvatarChanged.connect(boost::bind(&VCardUpdateAvatarManagerTest::handleAvatarChanged, this, _1));  			return result;  		} | 
 Swift
 Swift