From fb210158113307d2fb17cd6377eee8e27a2cec05 Mon Sep 17 00:00:00 2001 From: Kevin Morris Date: Sun, 30 May 2021 18:12:46 -0700 Subject: [PATCH] add PackageKeyword SQLAlchemy ORM model Signed-off-by: Kevin Morris --- aurweb/models/package_keyword.py | 20 ++++++++++++ test/test_package_keyword.py | 54 ++++++++++++++++++++++++++++++++ 2 files changed, 74 insertions(+) create mode 100644 aurweb/models/package_keyword.py create mode 100644 test/test_package_keyword.py diff --git a/aurweb/models/package_keyword.py b/aurweb/models/package_keyword.py new file mode 100644 index 00000000..87d97558 --- /dev/null +++ b/aurweb/models/package_keyword.py @@ -0,0 +1,20 @@ +from sqlalchemy.orm import mapper + +from aurweb.db import make_relationship +from aurweb.models.package_base import PackageBase +from aurweb.schema import PackageKeywords + + +class PackageKeyword: + def __init__(self, + PackageBase: PackageBase = None, + Keyword: str = None): + self.PackageBase = PackageBase + self.Keyword = Keyword + + +mapper(PackageKeyword, PackageKeywords, properties={ + "PackageBase": make_relationship(PackageBase, + PackageKeywords.c.PackageBaseID, + "keywords") +}) diff --git a/test/test_package_keyword.py b/test/test_package_keyword.py new file mode 100644 index 00000000..6e2df344 --- /dev/null +++ b/test/test_package_keyword.py @@ -0,0 +1,54 @@ +import pytest + +from sqlalchemy.exc import IntegrityError + +from aurweb.db import create, query +from aurweb.models.account_type import AccountType +from aurweb.models.package_base import PackageBase +from aurweb.models.package_keyword import PackageKeyword +from aurweb.testing import setup_test_db +from aurweb.testing.models import make_user + +user, pkgbase = None, None + + +@pytest.fixture(autouse=True) +def setup(): + global user, pkgbase + + setup_test_db("Users", "PackageBases", "PackageKeywords") + + account_type = query(AccountType, + AccountType.AccountType == "User").first() + user = make_user(Username="test", Email="test@example.org", + RealName="Test User", Passwd="testPassword", + AccountType=account_type) + pkgbase = create(PackageBase, + Name="beautiful-package", + Maintainer=user) + + yield pkgbase + + from aurweb.db import session + session.delete(pkgbase) + session.commit() + + +def test_package_keyword(): + from aurweb.db import session + pkg_keyword = create(PackageKeyword, + PackageBase=pkgbase, + Keyword="test") + assert pkg_keyword in pkgbase.keywords + assert pkgbase == pkg_keyword.PackageBase + session.delete(pkg_keyword) + session.commit() + + +def test_package_keyword_null_pkgbase_raises_exception(): + from aurweb.db import session + + with pytest.raises(IntegrityError): + create(PackageKeyword, + Keyword="test") + session.rollback()