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 = {}
# -----------------------------------------------------------------------
+ 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()
# -----------------------------------------------------------------------
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:
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'