def get_unmatched_friends(self):
"""Returns a list of all friends that didn't match a contact."""
- return self._friends_by_name.values()
+ return self._friends_without_contact
# -----------------------------------------------------------------------
friends_data = self._get_friends_data()
for data in friends_data:
- key = canonical(data['name']) # FIXME: deal with name collision
friend = Friend(data['name'])
if 'profile_url' not in data:
if_defined(data, 'pic_big', friend.set_photo_url)
url = data['profile_url']
- self._friends_without_contact.add(friend)
- self._friends_by_url[url] = friend
-
- if url not in self._known_urls:
- self._friends_by_name[key] = friend
+ friend.add_url(url)
+ self._register_friend(friend)
# -----------------------------------------------------------------------
# -----------------------------------------------------------------------
+ def _register_friend(self, friend):
+ self._friends_without_contact.add(friend)
+
+ for url in friend.get_urls():
+ self._friends_by_url[url] = friend
+
+ if self._allow_friend_to_match_by_name(friend):
+ key = canonical(friend.get_name())
+ self._friends_by_name[key] = friend
+
+
+ # -----------------------------------------------------------------------
+ def _allow_friend_to_match_by_name(self, friend):
+ for url in friend.get_urls():
+ if url in self._known_urls:
+ return False
+ return True
+
+
+ # -----------------------------------------------------------------------
def _register_match(self, contact, friend):
friend.set_contact(contact)
self._friends_without_contact.discard(friend)
# -----------------------------------------------------------------------
def __init__(self, service_id, linkedInApi):
- """Initialize the LinkedIn service, finding LinkedIn API keys in gconf and
- having a gui_callback available."""
-
org.maemo.hermes.engine.facebook.service.Service.__init__(self, service_id, None)
self.linkedInApi = linkedInApi
def process_friends(self):
friends = self.linkedInApi.get_friends()
for friend in friends:
- for url in friend.get_urls():
- self._friends_by_url[url] = friend
- if self._allow_friend_to_match_by_name(friend):
- key = canonical(friend.get_name())
- self._friends_by_name[key] = friend
-
-
- # -----------------------------------------------------------------------
- def _allow_friend_to_match_by_name(self, friend):
- for url in friend.get_urls():
- if url in self._known_urls:
- return False
- return True
-
-
-
+ self._register_friend(friend)
def setUp(self):
self.linkedInApi = FakeLinkedInApi()
self.testee = Service('linkedin', self.linkedInApi)
+
+
+ def test_that_get_unmatched_friends_works(self):
+ self._fake_server_response([Friend("1"), Friend("2")])
+
+ self._run_service([])
+
+ friends = self.testee.get_unmatched_friends()
+ assert len(friends) == 2
+ names = "1.2".split(".")
+ for f in friends: names.remove(f.get_name())
+ assert len(names) == 0
def test_that_process_contact_returns_None_for_unknown_contact(self):