From 2da81a4b9d0d5ed474173bbe6bcffee76eed6775 Mon Sep 17 00:00:00 2001 From: Andrew Flegg Date: Sat, 3 Jul 2010 09:21:23 +0100 Subject: [PATCH] Handle Twitter multiple matches; fixes MB#10667 --- .../src/org/maemo/hermes/engine/twitter/service.py | 3 ++- package/test/unit/test_twitter.py | 20 ++++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/package/src/org/maemo/hermes/engine/twitter/service.py b/package/src/org/maemo/hermes/engine/twitter/service.py index 102acd9..58d76a0 100644 --- a/package/src/org/maemo/hermes/engine/twitter/service.py +++ b/package/src/org/maemo/hermes/engine/twitter/service.py @@ -117,5 +117,6 @@ class Service(org.maemo.hermes.engine.service.Service): def _register_match(self, contact, friend): friend.set_contact(contact) self._friends_by_contact[contact] = friend - self._friends.remove(friend) + if friend in self._friends: + self._friends.remove(friend) diff --git a/package/test/unit/test_twitter.py b/package/test/unit/test_twitter.py index bd38307..fdd6b25 100644 --- a/package/test/unit/test_twitter.py +++ b/package/test/unit/test_twitter.py @@ -104,6 +104,26 @@ class TestTwitterService(unittest.TestCase): assert screen_name == matchers[contact].get_nickname() assert contact == matchers[contact]['contact'] assert contact == self.testee._get_friend_by_contact(contact)['contact'] + + + def test_duplicate_match_avoids_exception(self): + twitter_name = "Twitter Name" + screen_name = "tweeter" + tweeter = FakeTweeter(twitter_name, screen_name) + self._fake_server([tweeter]) + first_contact = FakeContact("One name", ["http://twitter.com/" + screen_name]) + second_contact = FakeContact("Other name", ["http://twitter.com/" + screen_name]) + + self._exercise_service([first_contact, second_contact]) + + assert len(self.testee.get_unmatched_friends()) == 0 + matchers = self.testee.get_contacts_with_match() + assert first_contact in matchers + assert second_contact in matchers + assert second_contact == matchers[first_contact]['contact'] + assert second_contact == matchers[second_contact]['contact'] + assert second_contact == self.testee._get_friend_by_contact(first_contact)['contact'] + assert second_contact == self.testee._get_friend_by_contact(second_contact)['contact'] def _exercise_service(self, contacts): -- 1.7.9.5