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()