def test_can_get_people(db, testapp): PersonFactory.create_batch(10) db.session.commit() res = testapp.get('/people') assert res.status_code == HTTPStatus.OK assert len(res.json) == 10 for person in res.json: for field in EXPECTED_FIELDS: assert field in person
def test_mutual_friends(db): instance = PersonFactory() target = PersonFactory() # some decoy connections (not mutual) ConnectionFactory.create_batch(5, to_person=instance) ConnectionFactory.create_batch(5, to_person=target) mutual_friends = PersonFactory.create_batch(3) for f in mutual_friends: ConnectionFactory(from_person=instance, to_person=f, connection_type='friend') ConnectionFactory(from_person=target, to_person=f, connection_type='friend') # mutual connections, but not friends decoy = PersonFactory() ConnectionFactory(from_person=instance, to_person=decoy, connection_type='coworker') ConnectionFactory(from_person=target, to_person=decoy, connection_type='coworker') db.session.commit() expected_mutual_friend_ids = [f.id for f in mutual_friends] results = instance.mutual_friends(target) assert len(results) == 3 for f in results: assert f.id in expected_mutual_friend_ids
def test_get_mutual_friends(db, testapp): instance = PersonFactory() target = PersonFactory() # some decoy connections (not mutual) ConnectionFactory.create_batch(5, to_person=instance) ConnectionFactory.create_batch(5, to_person=target) mutual_friends = PersonFactory.create_batch(3) for f in mutual_friends: ConnectionFactory(from_person=instance, to_person=f, connection_type='friend') ConnectionFactory(from_person=target, to_person=f, connection_type='friend') # mutual connections, but not friends decoy = PersonFactory() ConnectionFactory(from_person=instance, to_person=decoy, connection_type='coworker') ConnectionFactory(from_person=target, to_person=decoy, connection_type='coworker') db.session.commit() expected_mutual_friend_ids = [f.id for f in mutual_friends] # Trigger webservice call to get mutual friends res = testapp.get('/people/' + str(instance.id) + '/mutual_friends?target_id=' + str(target.id)) assert res.status_code == HTTPStatus.OK assert len(res.json) == 3 for mutual_friend in res.json: assert mutual_friend.id in expected_mutual_friend_ids # Switch target/instance ids and make sure the resulting friends are the same res2 = testapp.get('/people/' + str(target.id) + '/mutual_friends?target_id=' + str(instance.id)) assert res2.status_code == HTTPStatus.OK assert len(res2.json) == 3 for mutual_friend in res2.json: assert mutual_friend.id in expected_mutual_friend_ids
def test_can_get_mutual_friends(db, testapp): instance = PersonFactory() target = PersonFactory() ConnectionFactory.create_batch(5, to_person=instance) ConnectionFactory.create_batch(5, to_person=target) mutual_friends = PersonFactory.create_batch(3) for f in mutual_friends: ConnectionFactory(from_person=instance, to_person=f, connection_type='friend') ConnectionFactory(from_person=target, to_person=f, connection_type='friend') decoy = PersonFactory() ConnectionFactory(from_person=instance, to_person=decoy, connection_type='coworker') ConnectionFactory(from_person=target, to_person=decoy, connection_type='coworker') db.session.commit() expected_mutual_friend_ids = [f.id for f in mutual_friends] res = (testapp.get('/people/{}/mutual_friends?target_id={}'.format( instance.id, target.id))) res_reverse = (testapp.get('/people/{}/mutual_friends?target_id={}'.format( target.id, instance.id))) assert res.status_code == HTTPStatus.OK assert res_reverse.status_code == HTTPStatus.OK assert len(res.json) == 3 for f in res.json: assert f['id'] in expected_mutual_friend_ids assert res.json == res_reverse.json for person in res.json: for field in EXPECTED_FIELDS: assert field in person
def test_can_get_mutual_friends(db, testapp): instance = PersonFactory() target = PersonFactory() # some decoy connections (not mutual) ConnectionFactory.create_batch(5, to_person=instance) ConnectionFactory.create_batch(5, to_person=target) mutual_friends = PersonFactory.create_batch(3) for f in mutual_friends: ConnectionFactory(from_person=instance, to_person=f, connection_type='friend') ConnectionFactory(from_person=target, to_person=f, connection_type='friend') # mutual connections, but not friends decoy = PersonFactory() ConnectionFactory(from_person=instance, to_person=decoy, connection_type='coworker') ConnectionFactory(from_person=target, to_person=decoy, connection_type='coworker') db.session.commit() res = testapp.get( f'/people/{instance.id}/mutual_friends?target_id={target.id}') assert res.status_code == HTTPStatus.OK for person in res.json: for field in EXPECTED_FIELDS: assert field in person assert len(res.json) == 3 # This might make sense as a separate test, probably ideally in the unit tests, not here switched_res = testapp.get( f'/people/{target.id}/mutual_friends?target_id={instance.id}') assert set([p['id'] for p in res.json ]) == set([p['id'] for p in switched_res.json])
def test_get_mutual_friends_correct_data(db, testapp): instance = PersonFactory() target = PersonFactory() # some decoy connections (not mutual) ConnectionFactory.create_batch(5, to_person=instance) ConnectionFactory.create_batch(5, to_person=target) mutual_friends = PersonFactory.create_batch(3) for f in mutual_friends: ConnectionFactory(from_person=instance, to_person=f, connection_type='friend') ConnectionFactory(from_person=target, to_person=f, connection_type='friend') # mutual connections, but not friends decoy = PersonFactory() ConnectionFactory(from_person=instance, to_person=decoy, connection_type='coworker') ConnectionFactory(from_person=target, to_person=decoy, connection_type='coworker') db.session.commit() # call mutual_friends endpoints res_a = testapp.get('/people/' + str(instance.id) + '/mutual_friends?target_id=' + str(target.id)) res_b = testapp.get('/people/' + str(target.id) + '/mutual_friends?target_id=' + str(instance.id)) assert res_a.status_code == HTTPStatus.OK assert res_b.status_code == HTTPStatus.OK # confirm that both calls return the same values instance_f_ids = [f['id'] for f in res_a.json] target_f_ids = [f['id'] for f in res_b.json] assert set(instance_f_ids) == set(target_f_ids)
def test_get_mutual_friends(db, testapp): instance = PersonFactory() target = PersonFactory() # some decoy connections (not mutual) ConnectionFactory.create_batch(5, to_person=instance) ConnectionFactory.create_batch(5, to_person=target) mutual_friends = PersonFactory.create_batch(3) for f in mutual_friends: ConnectionFactory(from_person=instance, to_person=f, connection_type='friend') ConnectionFactory(from_person=target, to_person=f, connection_type='friend') # mutual connections, but not friends decoy = PersonFactory() ConnectionFactory(from_person=instance, to_person=decoy, connection_type='coworker') ConnectionFactory(from_person=target, to_person=decoy, connection_type='coworker') db.session.commit() res = testapp.get('/people/' + str(instance.id) + '/mutual_friends?target_id=' + str(target.id)) assert res.status_code == HTTPStatus.OK for person in res.json: for field in EXPECTED_FIELDS: assert field in person