def test_crud():
    company = Company()
    session.add(company)

    assert [] == crud.object_list(session, company, MyModel)

    obj = crud.create(session, company, MyModel, name='xxx')
    assert obj.name == 'xxx'
    session.commit()

    read_obj = crud.read(session, company, MyModel, obj.id)
    assert read_obj == obj
    assert 1 == crud.object_count(session, company, MyModel)
    assert [read_obj] == crud.object_list(session, company, MyModel)

    crud.update(session, company, MyModel, obj.id, name='aaa')
    session.commit()

    update_obj = crud.read(session, company, MyModel, obj.id)
    assert update_obj.name == 'aaa'

    crud.delete(session, company, MyModel, obj.id)
    delete_obj = crud.read(session, company, MyModel, obj.id)
    assert delete_obj is None

    assert 0 == crud.object_count(session, company, MyModel)
def test_multi_param_query():
    company = Company()
    session.add(company)

    obj1 = crud.create(session, company, MyModel, name='obj1')
    obj2 = crud.create(session, company, MyModel, name='obj2')

    eq_({obj1, obj2},
        set(crud.object_list(session, company, MyModel, name=['obj1', 'obj2'])))