def test_api_get(contacts_provider, contact_sync, db, api_client): contacts_provider.supply_contact('Contact One', '*****@*****.**') contacts_provider.supply_contact('Contact Two', '*****@*****.**') contact_sync.provider_instance = contacts_provider contact_sync.poll() acct = db.session.query(Account).filter_by(id=ACCOUNT_ID).one() ns_id = acct.namespace.public_id contact_list = api_client.get_data('/contacts', ns_id) contact_ids = [contact['id'] for contact in contact_list] c1found = False c2found = False for c_id in contact_ids: contact = api_client.get_data('/contacts/' + c_id, ns_id) if contact['name'] == 'Contact One': c1found = True if contact['name'] == 'Contact Two': c2found = True assert c1found assert c2found
def test_uses_local_updates(contacts_provider, contact_sync, db): """Test that non-conflicting local and remote updates to the same contact both get stored.""" contacts_provider.supply_contact('Old Name', '*****@*****.**') contact_sync.provider_instance = contacts_provider contact_sync.poll() results = db.session.query(Contact).filter_by(source='local').all() # Fake a local contact update. results[-1].name = 'New Name' db.session.commit() contacts_provider.__init__() contacts_provider.supply_contact('Old Name', '*****@*****.**') contact_sync.provider_instance = contacts_provider contact_sync.poll() remote_results = db.session.query(Contact).filter_by(source='remote').all() names = [r.name for r in remote_results] assert 'New Name' in names email_addresses = [r.email_address for r in remote_results] assert '*****@*****.**' in email_addresses local_results = db.session.query(Contact).filter_by(source='local').all() names = [r.name for r in local_results] assert 'New Name' in names email_addresses = [r.email_address for r in local_results] assert '*****@*****.**' in email_addresses
def test_deletes(contacts_provider, contact_sync, db): num_original_contacts = db.session.query(Contact).count() contacts_provider.supply_contact('Name', '*****@*****.**') contact_sync.provider_instance = contacts_provider contact_sync.poll() num_current_contacts = db.session.query(Contact).count() assert num_current_contacts - num_original_contacts == 2 contacts_provider.__init__() contacts_provider.supply_contact(None, None, deleted=True) contact_sync.poll() num_current_contacts = db.session.query(Contact).count() assert num_current_contacts == num_original_contacts
def test_add_contacts(contacts_provider, contact_sync, db): """Test that added contacts get stored.""" num_original_local_contacts = db.session.query(Contact). \ filter_by(account_id=ACCOUNT_ID).filter_by(source='local').count() num_original_remote_contacts = db.session.query(Contact). \ filter_by(account_id=ACCOUNT_ID).filter_by(source='remote').count() contacts_provider.supply_contact('Contact One', '*****@*****.**') contacts_provider.supply_contact('Contact Two', '*****@*****.**') contact_sync.provider_instance = contacts_provider contact_sync.poll() num_current_local_contacts = db.session.query(Contact). \ filter_by(account_id=ACCOUNT_ID).filter_by(source='local').count() num_current_remote_contacts = db.session.query(Contact). \ filter_by(account_id=ACCOUNT_ID).filter_by(source='remote').count() assert num_current_local_contacts - num_original_local_contacts == 2 assert num_current_remote_contacts - num_original_remote_contacts == 2
def test_api_list(contacts_provider, contact_sync, db, api_client): contacts_provider.supply_contact('Contact One', '*****@*****.**') contacts_provider.supply_contact('Contact Two', '*****@*****.**') contact_sync.provider_instance = contacts_provider contact_sync.poll() acct = db.session.query(Account).filter_by(id=ACCOUNT_ID).one() ns_id = acct.namespace.public_id contact_list = api_client.get_data('/contacts', ns_id) contact_names = [contact['name'] for contact in contact_list] assert 'Contact One' in contact_names assert 'Contact Two' in contact_names contact_emails = [contact['email'] for contact in contact_list] assert '*****@*****.**' in contact_emails assert '*****@*****.**' in contact_emails
def test_update_contact(contacts_provider, contact_sync, db): """Test that subsequent contact updates get stored.""" contacts_provider.supply_contact('Old Name', '*****@*****.**') contact_sync.provider_instance = contacts_provider contact_sync.poll() results = db.session.query(Contact).filter_by(source='remote').all() email_addresses = [r.email_address for r in results] assert '*****@*****.**' in email_addresses contacts_provider.__init__() contacts_provider.supply_contact('New Name', '*****@*****.**') contact_sync.poll() db.session.commit() results = db.session.query(Contact).filter_by(source='remote').all() names = [r.name for r in results] assert 'New Name' in names email_addresses = [r.email_address for r in results] assert '*****@*****.**' in email_addresses
def test_multiple_remotes(contacts_provider, alternate_contacts_provider, contact_sync, db): contacts_provider.supply_contact('Name', '*****@*****.**') alternate_contacts_provider.supply_contact('Alternate Name', '*****@*****.**') contact_sync.provider_instance = contacts_provider contact_sync.poll() contact_sync.provider_instance = alternate_contacts_provider contact_sync.poll() result = db.session.query(Contact). \ filter_by(source='local', provider_name='test_provider').one() alternate_result = db.session.query(Contact). \ filter_by(source='local', provider_name='alternate_provider').one() # Check that both contacts were persisted, even though they have the same # uid. assert result.name == 'Name' assert alternate_result.name == 'Alternate Name'