def test_query_results_with_index():
    session = session_from_new_db()
    s1 = Student(username="******", full_name="Jeff Younker")
    s2 = Student(username="******", full_name="Doug McBride")
    session.save(s1)
    session.save(s2)
    f = session.query(Student)[0]
    assert s1 == f
def test_query_slice():
    session = session_from_new_db()
    s1 = Student(username="******", full_name="Jeff Younker")
    s2 = Student(username="******", full_name="Doug McBride")
    s3 = Student(username="******", full_name="Amy Woodward")
    for s in [s1, s2, s3]:
        session.save(s)
    sliced = session.query(Student)[1:3]
    assert [s2, s3] == list(sliced)
    assert [s2, s3] != sliced
def test_chained_filters():
    session = session_from_new_db()
    s1 = Student(username="******", full_name="Jeff Younker")
    s2 = Student(username="******", full_name="Jeff Smith")
    session.save(s1)
    session.save(s2)
    f = session.query(Student).\
    filter(Student.full_name.like('Jeff%')).\
    filter_by(username="******").one()
    assert f == s2
def test_set_and_modify_database():
    session = session_from_new_db()
    s1 = Student(username="******", full_name="Jeff Younker")
    session.save(s1)
    #
    f = session.query(Student).filter_by(full_name=\
    "Jeff M. Younker").first()
    assert f is None
    #
    s1.full_name = "Jeff M. Younker"  # flush happens before query
    f = session.query(Student).filter_by(full_name=\
    "Jeff M. Younker").first()
    assert f is s1
def test_retrieve_from_database():
    session = session_from_new_db()
    s1 = Student(username="******", full_name="Jeff Younker")
    session.save(s1)
    f = session.query(Student).filter_by(username="******").first()
    assert f is s1
    assert s1.id is not None
def test_create_and_save_and_flush_student():
    session = session_from_new_db()
    s1 = Student(username="******", full_name="Jeff Younker")
    session.save(s1)
    assert s1.id is None
    session.flush()
    assert s1.id is not None
def test_email_adding_via_many_to_one_side():
    session = session_from_new_db()
    s1 = Student(username="******", full_name="Jeff Younker")
    e1 = Email(address="*****@*****.**")
    session.save(s1)
    e1.student = s1
    assert s1.emails == [e1]
    assert e1.student == s1
def test_create_and_save_student():
    engine = create_engine('sqlite:///:memory:')
    schema.create_all(engine)
    Session = sessionmaker(bind=engine, autoflush=True, \
    transactional=True)
    session = Session()
    s1 = Student(username="******", full_name="Jeff Younker")
    session.save(s1)
    assert s1.id is None
    session.flush()
    assert s1.id is not None
def test_delete_cascade():
    session = session_from_new_db()
    s1 = Student(username="******", full_name="Jeff Younker")
    e1 = Email(address="*****@*****.**")
    session.save(s1)
    s1.emails.append(e1)
    session.flush()
    session.delete(s1)
    session.flush()
    email = session.query(Email).all()
    assert email == []
def test_commit_changes():
    session = session_from_new_db()
    s1 = Student(username="******", full_name="Jeff Younker")
    session.save(s1)
    session.commit()
def test_create_unsaved_student():
    s1 = Student(username="******", full_name="Jeff Younker")
    assert s1.username == "jeff"
    assert s1.full_name == "Jeff Younker"
    assert s1.id is None
def prepare_two_students(session):
    s1 = Student(username="******", full_name="Jeff Younker")
    s2 = Student(username="******", full_name="Doug McBride")
    session.save(s1)
    session.save(s2)
    return (s1, s2)