Example #1
0
def delete_person(id):
    session = models.get_session()
    person = session.query(models.Person).get(id)
    if not person:
        raise PersonNotFoundException('Invalid ID, person not found')
    session.delete(person)
    session.commit()
    return _serialize_person(person)
Example #2
0
def update_person(id, name):
    session = models.get_session()
    person = session.query(models.Person).get(id)
    if not person:
        raise PersonNotFoundException('Invalid ID, person not found')
    person.name = name
    session.commit()
    return _serialize_person(person)
Example #3
0
def same_people(init_db):
    result = []
    person = person_controller.add_person('Greg')
    session = models.get_session()
    result.append(session.query(models.Person).get(person['id']))
    person = person_controller.add_person('Greg')
    result.append(session.query(models.Person).get(person['id']))
    return result
Example #4
0
def test_delete_contact_success(contact):
    contact_person_id = contact.person.id
    deleted_contact = contact_controller.delete_contact(contact.id)
    assert deleted_contact
    with pytest.raises(contact_controller.ContactException):
        contact_controller.get_contact(deleted_contact['id'])
    assert len(contact_controller.get_contact(person_id=contact_person_id)) == 0
    session = models.get_session()
    assert not session.query(models.Contact).get(contact.id)
def delete_contact(id):
    session = models.get_session()
    contact = session.query(models.Contact).get(id)
    if not contact:
        raise ContactException('Invalid ID, contact not found')
    result = _serialize_contact(contact)
    session.delete(contact)
    session.commit()
    return result
Example #6
0
def test_delete_person_success(person):
    deleted_person = person_controller.delete_person(person.id)
    assert deleted_person
    assert deleted_person['id'] == person.id
    assert deleted_person['name'] == person.name
    with pytest.raises(person_controller.PersonException):
        person_controller.get_person(id=person.id)
    assert len(person_controller.get_person(name=person.name)) == 0
    session = models.get_session()
    assert not session.query(models.Person).get(person.id)
Example #7
0
def test_add_person_success():
    test_name = 'Greg'
    added_person = person_controller.add_person(test_name)
    assert added_person['id']
    assert added_person['name'] == test_name
    session = models.get_session()
    db_person = session.query(models.Person).get(added_person['id'])
    assert db_person
    assert db_person.id == added_person['id']
    assert db_person.name == added_person['name']
Example #8
0
def test_update_person_success(person):
    test_name = 'Todd'
    updated_person = person_controller.update_person(person.id, test_name)
    assert updated_person['id'] == person.id
    assert updated_person['name'] == test_name
    session = models.get_session()
    db_person = session.query(models.Person).get(updated_person['id'])
    assert db_person
    assert db_person.id == updated_person['id']
    assert db_person.name == updated_person['name']
Example #9
0
def test_update_contact_type_only_success(contact):
    test_type = 'whatsapp'
    updated_contact = contact_controller.update_contact(contact.id, contact_type=test_type)
    assert updated_contact['id'] == contact.id
    assert updated_contact['value'] == contact.value
    assert updated_contact['type'] == test_type
    session = models.get_session()
    db_contact = session.query(models.Contact).get(updated_contact['id'])
    assert db_contact
    assert db_contact.id == updated_contact['id']
    assert db_contact.value == updated_contact['value']
    assert db_contact.type.type_name == updated_contact['type']
Example #10
0
def add_contact(person_id, contact_value, contact_type):
    session = models.get_session()
    try:
        type = session.query(models.ContactType).filter(models.ContactType.type_name == contact_type).one()
    except:
        raise ContactException('Invalid contact type')
    if not session.query(models.Person).get(person_id):
        raise ContactException('Invalid Person ID, person not found')
    contact = models.Contact(person_id=person_id, type_id=type.id, value=contact_value)
    session.add(contact)
    session.commit()
    return _serialize_contact(contact)
Example #11
0
def crowd():
    p = person_controller.add_person('Greg')
    contact_controller.add_contact(p['id'], '*****@*****.**', 'email')
    p = person_controller.add_person('Gregory')
    contact_controller.add_contact(p['id'], '*****@*****.**', 'email')
    contact_controller.add_contact(p['id'], '5511999888777', 'whatsapp')
    p = person_controller.add_person('McGregor')
    contact_controller.add_contact(p['id'], '*****@*****.**', 'email')
    contact_controller.add_contact(p['id'], '5511999888777', 'whatsapp')
    contact_controller.add_contact(p['id'], '554133332222', 'phone')
    session = models.get_session()
    return session.query(models.Person)
Example #12
0
def test_add_single_contact_success(person):
    test_value = '*****@*****.**'
    test_type = 'email'
    added_contact = contact_controller.add_contact(person.id, test_value, test_type)
    assert added_contact['id']
    assert added_contact['value'] == test_value
    assert added_contact['type'] == test_type
    session = models.get_session()
    db_contact = session.query(models.Contact).get(added_contact['id'])
    assert db_contact
    assert db_contact.id == added_contact['id']
    assert db_contact.value == added_contact['value']
    assert db_contact.type.type_name == added_contact['type']
Example #13
0
def test_update_contact_by_id_both_fields_success(contact):
    test_value = '5511999888777'
    test_type = 'whatsapp'
    updated_contact = contact_controller.update_contact(contact.id, test_value, test_type)
    assert updated_contact['id'] == contact.id
    assert updated_contact['value'] == test_value
    assert updated_contact['type'] == test_type
    session = models.get_session()
    db_contact = session.query(models.Contact).get(updated_contact['id'])
    assert db_contact
    assert db_contact.id == updated_contact['id']
    assert db_contact.value == updated_contact['value']
    assert db_contact.type.type_name == updated_contact['type']
Example #14
0
def test_update_contact_value_only_success(contact):
    contact_type_type_name = contact.type.type_name
    test_value = '5511999888777'
    updated_contact = contact_controller.update_contact(contact.id, test_value)
    assert updated_contact['id'] == contact.id
    assert updated_contact['value'] == test_value
    assert updated_contact['type'] == contact_type_type_name
    session = models.get_session()
    db_contact = session.query(models.Contact).get(updated_contact['id'])
    assert db_contact
    assert db_contact.id == updated_contact['id']
    assert db_contact.value == updated_contact['value']
    assert db_contact.type.type_name == updated_contact['type']
Example #15
0
def test_add_multiple_contact_success(contact):
    test_value = '5511999888777'
    test_type = 'whatsapp'
    added_contact = contact_controller.add_contact(contact.person.id, test_value, test_type)
    assert added_contact['id']
    assert added_contact['value'] == test_value
    assert added_contact['type'] == test_type
    session = models.get_session()
    db_person = session.query(models.Person).get(contact.person.id)
    assert db_person
    assert db_person.contacts
    assert len(db_person.contacts) == 2
    assert test_type in [c.type.type_name  for c in db_person.contacts]
    assert test_value in [c.value for c in db_person.contacts]
Example #16
0
def update_contact(contact_id, contact_value=None, contact_type=None):
    session = models.get_session()
    contact = session.query(models.Contact).get(contact_id)
    if not contact:
        raise ContactException('Invalid ID, contact not found')
    if not contact_type and not contact_value:
        raise ContactException('At least one updatable parameter must be specified')
    if contact_value:
        contact.value = contact_value
    if contact_type:
        try:
            type = session.query(models.ContactType).filter(models.ContactType.type_name == contact_type).one()
        except:
            raise ContactException('Invalid contact type')
        contact.type_id = type.id
    session.commit()
    return _serialize_contact(contact)
Example #17
0
def get_person(name=None, id=None):
    session = models.get_session()
    if name and id:
        raise PersonBadParameterException('Only one parameter must be defined')
    elif id:
        person = session.query(models.Person).get(id)
        if not person:
            raise PersonNotFoundException('Invalid ID, person not found')
        result = _serialize_person(person)
    elif name:
        people = session.query(models.Person).filter(
            models.Person.name.like('%{}%'.format(name)))
        result = [_serialize_person(person) for person in people]
    else:
        people = session.query(models.Person)
        result = [_serialize_person(person) for person in people]
    return result
Example #18
0
def get_contact(contact_id=None, person_id=None, person_name=None, contact_type=None):
    session = models.get_session()
    if (contact_id and (person_id or person_name) or (person_id and person_name)):
        raise ContactException('Too many parameters, specify either contact_id, person_id or person_name')
    if not contact_id and not person_id and not person_name:
        contacts = session.query(models.Contact)
        result = [_serialize_contact(contact) for contact in contacts]
    if contact_id:
        contact = session.query(models.Contact).get(contact_id)
        if not contact:
            raise ContactException('Invalid ID, contact not found')
        result = _serialize_contact(contact)
    elif person_id or person_name:
        contacts = session.query(models.Contact)
        if contact_type:
            contacts = contacts.join(models.ContactType).filter(models.ContactType.type_name==contact_type)
        if person_id:
            contacts = contacts.filter(models.Contact.person_id == person_id)
        elif person_name:
            contacts = contacts.join(models.Person).filter(models.Person.name.like('%{}%'.format(person_name)))
        result = [_serialize_contact(contact) for contact in contacts]
    return result
Example #19
0
def person_with_contacts(person):
    contact_controller.add_contact(person.id, '*****@*****.**', 'email')
    contact_controller.add_contact(person.id, '5511999888777', 'whatsapp')
    contact_controller.add_contact(person.id, '554133332222', 'phone')
    session = models.get_session()
    return session.query(models.Person).get(person.id)
Example #20
0
def contact(person):
    contact = contact_controller.add_contact(person.id, '*****@*****.**',
                                             'email')
    session = models.get_session()
    return session.query(models.Contact).get(contact['id'])
Example #21
0
def person(init_db):
    person = person_controller.add_person('Greg')
    session = models.get_session()
    return session.query(models.Person).get(person['id'])
Example #22
0
def add_person(name):
    session = models.get_session()
    person = models.Person(name=name)
    session.add(person)
    session.commit()
    return _serialize_person(person)