From: Fredrik Wendt Date: Wed, 9 Jun 2010 17:19:03 +0000 (+0100) Subject: fixed get_friends_to_create_contacts_for for Facebook X-Git-Tag: 0.8.0~21 X-Git-Url: http://vcs.maemo.org/git/?p=hermes;a=commitdiff_plain;h=29bc0615637d64ff615ae209885cb28dbaa4159e fixed get_friends_to_create_contacts_for for Facebook Signed-off-by: Fredrik Wendt --- diff --git a/package/src/org/maemo/hermes/engine/facebook/service.py b/package/src/org/maemo/hermes/engine/facebook/service.py index b227277..077c37e 100644 --- a/package/src/org/maemo/hermes/engine/facebook/service.py +++ b/package/src/org/maemo/hermes/engine/facebook/service.py @@ -17,6 +17,7 @@ class Service(org.maemo.hermes.engine.service.Service): def __init__(self, service_id, facebook, create_birthday_only = False): self.fb = facebook self._service_id = service_id + self._create_birthday_only = create_birthday_only self._friends_by_name = {} self._friends_by_url = {} @@ -27,10 +28,21 @@ class Service(org.maemo.hermes.engine.service.Service): # ----------------------------------------------------------------------- + def get_friends_to_create_contacts_for(self): + friends = [] + if self._create_birthday_only: + for friend in self._friends_without_contact: + if friend.has_birthday_date(): + friends.append(friend) + + return friends + + + # ----------------------------------------------------------------------- def get_friends(self): """Returns all friends on Facebook""" - return self._contacts_by_friend.keys() + return self._friends_by_url.values() # ----------------------------------------------------------------------- @@ -80,9 +92,8 @@ class Service(org.maemo.hermes.engine.service.Service): if_defined(data, 'pic_big', friend.set_photo_url) - if friend.has_birthday_date(): # FIXME: remove this, either you want to add your contacts or not? - self._friends_without_contact.add(friend) url = data['profile_url'] + self._friends_without_contact.add(friend) self._friends_by_url[url] = friend if url not in self._known_urls: diff --git a/package/test/unit/test_facebook.py b/package/test/unit/test_facebook.py index c1725b9..b766d2f 100644 --- a/package/test/unit/test_facebook.py +++ b/package/test/unit/test_facebook.py @@ -24,6 +24,41 @@ class TestFacebookService(unittest.TestCase): def setUp(self): self.testee = Service("facebook", None) + + def test_that_get_friends_to_create_contacts_for_works(self): + def run_test(expected_length): + self._fake_server_response([{'uid':'123456','name':'Facebook Junkie', 'birthday_date':'now'}]) + self._run_service([]) + friends = self.testee.get_friends_to_create_contacts_for() + assert len(friends) == expected_length + + # default is to NOT create contacts + self.testee = Service("facebook", None) + run_test(0) + + # passing False explicitly + self.testee = Service("facebook", None, False) + run_test(0) + + # passing True to constructor + self.testee = Service("facebook", None, True) + run_test(1) + + + def test_that_gftccf_returns_friends_with_birth_date(self): + self.testee = Service("facebook", None, True) + bday = '1980-10-15' + props_with_bday = {'uid':'123456','name':'Facebook Junkie', 'birthday_date':bday} + props_without = {'uid':'123457','name':'Johnny Secret'} + self._fake_server_response([props_with_bday, props_without]) + self._run_service([]) + + assert len(self.testee.get_friends()) == 2 + friends = self.testee.get_friends_to_create_contacts_for() + assert len(friends) == 1 + assert friends[0].has_birthday_date() + assert friends[0].get_birthday_date() == bday + def test_that_process_contact_returns_friend_object_for_known_contact(self): known_url = 'http://www.facebook.com/profile.php?id=123456'