93 lines
3.3 KiB
Python
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)]
|