From 3893b6d6629b06156b9b8056de50744566ace44a Mon Sep 17 00:00:00 2001 From: Mathias Scheider Date: Fri, 4 Sep 2026 16:16:10 +0200 Subject: [PATCH] some tests in `test_helper_db.py` --- tests/test_helper_db.py | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 tests/test_helper_db.py diff --git a/tests/test_helper_db.py b/tests/test_helper_db.py new file mode 100644 index 0000000..d8ca2f8 --- /dev/null +++ b/tests/test_helper_db.py @@ -0,0 +1,34 @@ +#!/bin/python + +from sqlalchemy import select +from sqlalchemy.orm import Session + +from src.helper_db import upsert_category +from src.models import Category +from src.models_db import CategoryDb + + +def test_upsert_category_returns_orm_object(db_session: Session): + result = upsert_category(db_session, Category.from_str("dummy_parent_1:dummy_parent_2:dummy"), do_commit=False) + assert result + assert isinstance(result, CategoryDb) + assert str(result.name) == "dummy" + assert str(result.parent.name) == "dummy_parent_2" + assert str(result.parent.parent.name) == "dummy_parent_1" + +def test_upsert_category_writes_new_to_db(db_session: Session): + upsert_category(db_session, Category.from_str("grand_father:father:new_category"), do_commit=True) + result = db_session.execute(select(CategoryDb).filter_by(name="new_category")).scalar_one() + assert result + assert str( result.name ) == "new_category" + assert str( result.parent.name ) == "father" + assert str( result.parent.parent.name ) == "grand_father" + +def test_upsert_category_skips_existing(db_session: Session): + for _ in range(3): + upsert_category(db_session, Category.from_str("grand_father:father:try_again_and_again"), do_commit=True) + result = db_session.execute(select(CategoryDb).filter_by(name="try_again_and_again")).all() + assert len(result) == 1 + + +