test_package.py 2.69 KB
Newer Older
1
2
3
4
5
import pytest

from sqlalchemy import and_
from sqlalchemy.exc import IntegrityError

6
7
import aurweb.config

8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
from aurweb.db import create, query
from aurweb.models.account_type import AccountType
from aurweb.models.package import Package
from aurweb.models.package_base import PackageBase
from aurweb.models.user import User
from aurweb.testing import setup_test_db

user = pkgbase = package = None


@pytest.fixture(autouse=True)
def setup():
    global user, pkgbase, package

    setup_test_db("Users", "PackageBases", "Packages")

    account_type = query(AccountType,
                         AccountType.AccountType == "User").first()
    user = create(User, Username="test", Email="test@example.org",
                  RealName="Test User", Passwd="testPassword",
                  AccountType=account_type)

    pkgbase = create(PackageBase,
                     Name="beautiful-package",
                     Maintainer=user)
    package = create(Package,
                     PackageBase=pkgbase,
                     Name=pkgbase.Name,
                     Description="Test description.",
                     URL="https://test.package")


def test_package():
    from aurweb.db import session

    assert pkgbase == package.PackageBase
    assert package.Name == "beautiful-package"
    assert package.Description == "Test description."
    assert package.Version == str()  # Default version.
    assert package.URL == "https://test.package"

    # Update package Version.
    package.Version = "1.2.3"
    session.commit()

    # Make sure it got updated in the database.
    record = query(Package,
                   and_(Package.ID == package.ID,
                        Package.Version == "1.2.3")).first()
    assert record is not None


60
61
62
63
64
65
66
67
68
69
70
71
72
73
def test_package_ci():
    """ 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):
        create(Package,
               PackageBase=pkgbase,
               Name="Beautiful-Package")
    session.rollback()


74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
def test_package_null_pkgbase_raises_exception():
    from aurweb.db import session

    with pytest.raises(IntegrityError):
        create(Package,
               Name="some-package",
               Description="Some description.",
               URL="https://some.package")
    session.rollback()


def test_package_null_name_raises_exception():
    from aurweb.db import session

    with pytest.raises(IntegrityError):
        create(Package,
               PackageBase=pkgbase,
               Description="Some description.",
               URL="https://some.package")
    session.rollback()