aurweb/test/test_pm_voteinfo.py
moson e6d88a2225
housekeep: TU rename - test suite
Rename tests: Function names, variables, etc.

Signed-off-by: moson <moson@archlinux.org>
2023-09-10 09:36:23 +02:00

177 lines
4.4 KiB
Python

import pytest
from sqlalchemy.exc import IntegrityError
from aurweb import db, time
from aurweb.db import create, rollback
from aurweb.models.account_type import PACKAGE_MAINTAINER_ID
from aurweb.models.tu_voteinfo import TUVoteInfo
from aurweb.models.user import User
@pytest.fixture(autouse=True)
def setup(db_test):
return
@pytest.fixture
def user() -> User:
with db.begin():
user = create(
User,
Username="test",
Email="test@example.org",
RealName="Test User",
Passwd="testPassword",
AccountTypeID=PACKAGE_MAINTAINER_ID,
)
yield user
def test_pm_voteinfo_creation(user: User):
ts = time.utcnow()
with db.begin():
pm_voteinfo = create(
TUVoteInfo,
Agenda="Blah blah.",
User=user.Username,
Submitted=ts,
End=ts + 5,
Quorum=0.5,
Submitter=user,
)
assert bool(pm_voteinfo.ID)
assert pm_voteinfo.Agenda == "Blah blah."
assert pm_voteinfo.User == user.Username
assert pm_voteinfo.Submitted == ts
assert pm_voteinfo.End == ts + 5
assert pm_voteinfo.Quorum == 0.5
assert pm_voteinfo.Submitter == user
assert pm_voteinfo.Yes == 0
assert pm_voteinfo.No == 0
assert pm_voteinfo.Abstain == 0
assert pm_voteinfo.ActiveTUs == 0
assert pm_voteinfo in user.tu_voteinfo_set
def test_pm_voteinfo_is_running(user: User):
ts = time.utcnow()
with db.begin():
pm_voteinfo = create(
TUVoteInfo,
Agenda="Blah blah.",
User=user.Username,
Submitted=ts,
End=ts + 1000,
Quorum=0.5,
Submitter=user,
)
assert pm_voteinfo.is_running() is True
with db.begin():
pm_voteinfo.End = ts - 5
assert pm_voteinfo.is_running() is False
def test_pm_voteinfo_total_votes(user: User):
ts = time.utcnow()
with db.begin():
pm_voteinfo = create(
TUVoteInfo,
Agenda="Blah blah.",
User=user.Username,
Submitted=ts,
End=ts + 1000,
Quorum=0.5,
Submitter=user,
)
pm_voteinfo.Yes = 1
pm_voteinfo.No = 3
pm_voteinfo.Abstain = 5
# total_votes() should be the sum of Yes, No and Abstain: 1 + 3 + 5 = 9.
assert pm_voteinfo.total_votes() == 9
def test_pm_voteinfo_null_submitter_raises(user: User):
with pytest.raises(IntegrityError):
with db.begin():
create(
TUVoteInfo,
Agenda="Blah blah.",
User=user.Username,
Submitted=0,
End=0,
Quorum=0.50,
)
rollback()
def test_pm_voteinfo_null_agenda_raises(user: User):
with pytest.raises(IntegrityError):
with db.begin():
create(
TUVoteInfo,
User=user.Username,
Submitted=0,
End=0,
Quorum=0.50,
Submitter=user,
)
rollback()
def test_pm_voteinfo_null_user_raises(user: User):
with pytest.raises(IntegrityError):
with db.begin():
create(
TUVoteInfo,
Agenda="Blah blah.",
Submitted=0,
End=0,
Quorum=0.50,
Submitter=user,
)
rollback()
def test_pm_voteinfo_null_submitted_raises(user: User):
with pytest.raises(IntegrityError):
with db.begin():
create(
TUVoteInfo,
Agenda="Blah blah.",
User=user.Username,
End=0,
Quorum=0.50,
Submitter=user,
)
rollback()
def test_pm_voteinfo_null_end_raises(user: User):
with pytest.raises(IntegrityError):
with db.begin():
create(
TUVoteInfo,
Agenda="Blah blah.",
User=user.Username,
Submitted=0,
Quorum=0.50,
Submitter=user,
)
rollback()
def test_pm_voteinfo_null_quorum_default(user: User):
with db.begin():
vi = create(
TUVoteInfo,
Agenda="Blah blah.",
User=user.Username,
Submitted=0,
End=0,
Submitter=user,
)
assert vi.Quorum == 0