mirror of
https://gitlab.archlinux.org/archlinux/aurweb.git
synced 2025-02-03 10:43:03 +01:00
use declarative_base for all ORM models
This rewrites the entire model base as declarative models. This allows us to more easily customize overlay fields in tables and is more common. This effort also brought some DB violations to light which this commit addresses. Signed-off-by: Kevin Morris <kevr@0cost.org>
This commit is contained in:
parent
7f7a975614
commit
888cf5118a
29 changed files with 398 additions and 292 deletions
|
@ -22,7 +22,7 @@ def setup():
|
|||
AccountType.AccountType == "User").first()
|
||||
user = create(User, Username="test", Email="test@example.org",
|
||||
RealName="Test User", Passwd="testPassword",
|
||||
account_type=account_type)
|
||||
AccountType=account_type)
|
||||
|
||||
term = create(Term, Description="Test term", URL="https://test.term")
|
||||
|
||||
|
@ -33,7 +33,7 @@ def test_accepted_term():
|
|||
# Make sure our AcceptedTerm relationships got initialized properly.
|
||||
assert accepted_term.User == user
|
||||
assert accepted_term in user.accepted_terms
|
||||
assert accepted_term in term.accepted
|
||||
assert accepted_term in term.accepted_terms
|
||||
|
||||
|
||||
def test_accepted_term_null_user_raises_exception():
|
||||
|
|
|
@ -43,6 +43,7 @@ def test_user_account_type_relationship():
|
|||
AccountType=account_type)
|
||||
|
||||
assert user.AccountType == account_type
|
||||
assert account_type.users.filter(User.ID == user.ID).first()
|
||||
|
||||
# This must be deleted here to avoid foreign key issues when
|
||||
# deleting the temporary AccountType in the fixture.
|
||||
delete(User, User.ID == user.ID)
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import pytest
|
||||
|
||||
from sqlalchemy import and_
|
||||
from sqlalchemy.exc import IntegrityError
|
||||
from sqlalchemy.exc import IntegrityError, OperationalError
|
||||
|
||||
import aurweb.config
|
||||
|
||||
|
@ -19,7 +19,7 @@ user = pkgbase = package = None
|
|||
def setup():
|
||||
global user, pkgbase, package
|
||||
|
||||
setup_test_db("Users", "PackageBases", "Packages")
|
||||
setup_test_db("Packages", "PackageBases", "Users")
|
||||
|
||||
account_type = query(AccountType,
|
||||
AccountType.AccountType == "User").first()
|
||||
|
@ -57,17 +57,17 @@ def test_package():
|
|||
assert record is not None
|
||||
|
||||
|
||||
def test_package_ci():
|
||||
def test_package_package_base_cant_change():
|
||||
""" Test case insensitivity of the database table. """
|
||||
if aurweb.config.get("database", "backend") == "sqlite":
|
||||
return None # SQLite doesn't seem handle this.
|
||||
|
||||
from aurweb.db import session
|
||||
|
||||
with pytest.raises(IntegrityError):
|
||||
with pytest.raises(OperationalError):
|
||||
create(Package,
|
||||
PackageBase=pkgbase,
|
||||
Name="Beautiful-Package")
|
||||
Name="invalidates-old-package-packagebase-relationship")
|
||||
session.rollback()
|
||||
|
||||
|
||||
|
|
|
@ -25,7 +25,7 @@ def setup():
|
|||
AccountType.AccountType == "User").first()
|
||||
user = create(User, Username="test", Email="test@example.org",
|
||||
RealName="Test User", Passwd="testPassword",
|
||||
account_type=account_type)
|
||||
AccountType=account_type)
|
||||
|
||||
group = create(Group, Name="Test Group")
|
||||
pkgbase = create(PackageBase, Name="test-package", Maintainer=user)
|
||||
|
|
|
@ -25,7 +25,7 @@ def setup():
|
|||
AccountType.AccountType == "User").first()
|
||||
user = create(User, Username="test", Email="test@example.org",
|
||||
RealName="Test User", Passwd="testPassword",
|
||||
account_type=account_type)
|
||||
AccountType=account_type)
|
||||
|
||||
license = create(License, Name="Test License")
|
||||
pkgbase = create(PackageBase, Name="test-package", Maintainer=user)
|
||||
|
|
|
@ -10,12 +10,12 @@ from aurweb.models.session import Session, generate_unique_sid
|
|||
from aurweb.models.user import User
|
||||
from aurweb.testing import setup_test_db
|
||||
|
||||
user = session = None
|
||||
account_type = user = session = None
|
||||
|
||||
|
||||
@pytest.fixture(autouse=True)
|
||||
def setup():
|
||||
global user, session
|
||||
global account_type, user, session
|
||||
|
||||
setup_test_db("Users", "Sessions")
|
||||
|
||||
|
@ -35,7 +35,10 @@ def test_session():
|
|||
|
||||
def test_session_cs():
|
||||
""" Test case sensitivity of the database table. """
|
||||
session_cs = create(Session, UsersID=user.ID,
|
||||
user2 = create(User, Username="test2", Email="test2@example.org",
|
||||
ResetKey="testReset2", Passwd="testPassword",
|
||||
AccountType=account_type)
|
||||
session_cs = create(Session, UsersID=user2.ID,
|
||||
SessionID="TESTSESSION",
|
||||
LastUpdateTS=datetime.utcnow().timestamp())
|
||||
assert session_cs.SessionID == "TESTSESSION"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue