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)
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):