import pytest @pytest.fixture() def example_orders(): from datetime import datetime from ordr3.models import OrderItem, OrderCategory, OrderStatus return [ OrderItem( 1, "Ethanol", "1-23", "VWR", OrderCategory.SOLVENT, "5 l", 20.0, 2, "EUR", "DFG", "urgent", datetime(2020, 2, 3, 15, 14, 13), "me", OrderStatus.OPEN, ), OrderItem( 2, "Gloves", "12-3", "Carl Roth", OrderCategory.DISPOSABLE, "100 St.", 40.0, 5, "USD", "BMBF", "no comment", datetime(2020, 2, 4, 15, 14, 13), "you", OrderStatus.APPROVAL, ), ] @pytest.fixture() def example_users(): from ordr3.models import User, UserRole return [ User(1, "You", "Jim", "Smith", "jim.smith", "abcd", UserRole.ADMIN,), User(2, "Me", "Jane", "Doe", "jane.doe", "1234", UserRole.USER), ] def test_sql_repo_add_order(session, example_orders): from ordr3.repo import SqlAlchemyRepository from ordr3.models import OrderItem repo = SqlAlchemyRepository(session) repo.add_order(example_orders[0]) session.flush() order = session.query(OrderItem).first() assert order == example_orders[0] def test_sql_repo_get_order(session, example_orders): from ordr3.repo import SqlAlchemyRepository repo = SqlAlchemyRepository(session) repo.add_order(example_orders[0]) repo.add_order(example_orders[1]) session.flush() assert example_orders[1] == repo.get_order(2) def test_sql_repo_list_orders(session, example_orders): from ordr3.repo import SqlAlchemyRepository earlier, later = example_orders repo = SqlAlchemyRepository(session) repo.add_order(earlier) repo.add_order(later) session.flush() assert repo.list_orders() == [later, earlier] def test_sql_repo_add_user(session, example_users): from ordr3.repo import SqlAlchemyRepository from ordr3.models import User repo = SqlAlchemyRepository(session) repo.add_user(example_users[0]) session.flush() user = session.query(User).first() assert user == example_users[0] def test_sql_repo_get_user(session, example_users): from ordr3.repo import SqlAlchemyRepository repo = SqlAlchemyRepository(session) repo.add_user(example_users[0]) repo.add_user(example_users[1]) session.flush() assert example_users[1] == repo.get_user(2) def test_sql_repo_get_user_by_username(session, example_users): from ordr3.repo import SqlAlchemyRepository repo = SqlAlchemyRepository(session) repo.add_user(example_users[0]) repo.add_user(example_users[1]) session.flush() assert example_users[1] == repo.get_user_by_username("Me") def test_sql_repo_get_user_by_email(session, example_users): from ordr3.repo import SqlAlchemyRepository repo = SqlAlchemyRepository(session) repo.add_user(example_users[0]) repo.add_user(example_users[1]) session.flush() assert example_users[1] == repo.get_user_by_email("jane.doe") def test_sql_repo_list_users(session, example_users): from ordr3.repo import SqlAlchemyRepository later, earlier = example_users repo = SqlAlchemyRepository(session) repo.add_user(later) repo.add_user(earlier) session.flush() assert repo.list_users() == [earlier, later]