Files
worblehat/tests/queries/test_bookcase_shelf.py
T

93 lines
3.3 KiB
Python

from sqlalchemy.orm import Session
from worblehat.models import Bookcase, BookcaseShelf
from worblehat.queries.bookcase_shelf import (
find_bookcase_shelf,
list_bookcase_shelf_positions,
list_bookcase_shelfs_ordered,
)
def test_find_bookcase_shelf_returns_match(sql_session: Session) -> None:
bookcase = Bookcase(name="Bookcase A")
shelf = BookcaseShelf(row=0, column=0, bookcase=bookcase)
sql_session.add_all([bookcase, shelf])
sql_session.flush()
result = find_bookcase_shelf(sql_session, bookcase, column=0, row=0)
assert result is shelf
def test_find_bookcase_shelf_returns_none_for_wrong_position(sql_session: Session) -> None:
bookcase = Bookcase(name="Bookcase A")
shelf = BookcaseShelf(row=0, column=0, bookcase=bookcase)
sql_session.add_all([bookcase, shelf])
sql_session.flush()
assert find_bookcase_shelf(sql_session, bookcase, column=1, row=0) is None
assert find_bookcase_shelf(sql_session, bookcase, column=0, row=1) is None
def test_find_bookcase_shelf_scopes_to_bookcase(sql_session: Session) -> None:
bookcase_a = Bookcase(name="Bookcase A")
bookcase_b = Bookcase(name="Bookcase B")
shelf_a = BookcaseShelf(row=0, column=0, bookcase=bookcase_a)
sql_session.add_all([bookcase_a, bookcase_b, shelf_a])
sql_session.flush()
assert find_bookcase_shelf(sql_session, bookcase_b, column=0, row=0) is None
def test_list_bookcase_shelfs_ordered(sql_session: Session) -> None:
bookcase_b = Bookcase(name="Bookcase B")
bookcase_a = Bookcase(name="Bookcase A")
sql_session.add_all([bookcase_b, bookcase_a])
sql_session.flush()
shelf_b1 = BookcaseShelf(row=1, column=0, bookcase=bookcase_b)
shelf_a2 = BookcaseShelf(row=0, column=2, bookcase=bookcase_a)
shelf_a1 = BookcaseShelf(row=0, column=1, bookcase=bookcase_a)
sql_session.add_all([shelf_b1, shelf_a2, shelf_a1])
sql_session.flush()
result = list_bookcase_shelfs_ordered(sql_session)
assert result == [shelf_a1, shelf_a2, shelf_b1]
def test_list_bookcase_shelf_positions_returns_all_by_default(sql_session: Session) -> None:
bookcase = Bookcase(name="Bookcase A")
shelf_1 = BookcaseShelf(row=0, column=0, bookcase=bookcase)
shelf_2 = BookcaseShelf(row=1, column=1, bookcase=bookcase)
sql_session.add_all([bookcase, shelf_1, shelf_2])
sql_session.flush()
result = list_bookcase_shelf_positions(sql_session, bookcase)
assert set(result) == {(0, 0), (1, 1)}
def test_list_bookcase_shelf_positions_filters_by_column(sql_session: Session) -> None:
bookcase = Bookcase(name="Bookcase A")
shelf_1 = BookcaseShelf(row=0, column=0, bookcase=bookcase)
shelf_2 = BookcaseShelf(row=1, column=1, bookcase=bookcase)
sql_session.add_all([bookcase, shelf_1, shelf_2])
sql_session.flush()
result = list_bookcase_shelf_positions(sql_session, bookcase, column=1)
assert result == [(1, 1)]
def test_list_bookcase_shelf_positions_filters_by_row(sql_session: Session) -> None:
bookcase = Bookcase(name="Bookcase A")
shelf_1 = BookcaseShelf(row=0, column=0, bookcase=bookcase)
shelf_2 = BookcaseShelf(row=1, column=1, bookcase=bookcase)
sql_session.add_all([bookcase, shelf_1, shelf_2])
sql_session.flush()
result = list_bookcase_shelf_positions(sql_session, bookcase, row=1)
assert result == [(1, 1)]