Esempio n. 1
0
def test_refunds_without_jobs(mysql_connection):
    """We should be able to calculate quotas correctly for a user with a refund
    but no jobs."""
    # a user with no jobs at all but a refund today
    assert_quota(mysql_connection, 'ckuehl', 0, 0)

    add_refund(mysql_connection, TEST_REFUND._replace(user='******', pages=10))
    assert_quota(mysql_connection, 'ckuehl', 10, 10)

    # a user with no jobs today and a refund earlier in the semester
    add_job(mysql_connection,
            TEST_JOB._replace(user='******', pages=5, time=YESTERDAY))
    assert_quota(mysql_connection, 'mattmcal', 0, -5)

    add_refund(mysql_connection,
               TEST_REFUND._replace(user='******', pages=10, time=YESTERDAY))
    assert_quota(mysql_connection, 'mattmcal', 0, 5)

    # a user with no jobs today and a refund today
    add_job(mysql_connection,
            TEST_JOB._replace(user='******', pages=5, time=YESTERDAY))
    assert_quota(mysql_connection, 'jvperrin', 0, -5)

    add_refund(mysql_connection, TEST_REFUND._replace(user='******',
                                                      pages=10))
    assert_quota(mysql_connection, 'jvperrin', 10, 5)

    # a user with just one job (today) but a refund earlier in the semester
    add_job(mysql_connection, TEST_JOB._replace(user='******', pages=5))
    assert_quota(mysql_connection, 'kpengboy', -5, -5)

    add_refund(mysql_connection,
               TEST_REFUND._replace(user='******', pages=10, time=YESTERDAY))
    assert_quota(mysql_connection, 'kpengboy', -5, 5)
Esempio n. 2
0
def test_jobs_and_refunds_today(mysql_connection):
    """Refunds should add back pages correctly."""
    assert_quota(mysql_connection, 'mattmcal', 0, 0)

    add_job(mysql_connection, TEST_JOB._replace(pages=3))
    assert_quota(mysql_connection, 'mattmcal', -3, -3)

    add_job(mysql_connection, TEST_JOB._replace(pages=5))
    assert_quota(mysql_connection, 'mattmcal', -8, -8)

    add_refund(mysql_connection, TEST_REFUND._replace(pages=1))
    assert_quota(mysql_connection, 'mattmcal', -7, -7)

    add_refund(mysql_connection, TEST_REFUND._replace(pages=3))
    assert_quota(mysql_connection, 'mattmcal', -4, -4)

    # now add another user
    assert_quota(mysql_connection, 'ckuehl', 0, 0)

    add_job(mysql_connection, TEST_JOB._replace(pages=5, user='******'))
    assert_quota(mysql_connection, 'ckuehl', -5, -5)
    assert_quota(mysql_connection, 'mattmcal', -4, -4)

    # and some refunds for that user
    add_refund(mysql_connection, TEST_REFUND._replace(pages=8, user='******'))
    assert_quota(mysql_connection, 'ckuehl', 3, 3)
    assert_quota(mysql_connection, 'mattmcal', -4, -4)

    add_refund(mysql_connection, TEST_REFUND._replace(pages=30, user='******'))
    assert_quota(mysql_connection, 'ckuehl', 33, 33)
    assert_quota(mysql_connection, 'mattmcal', -4, -4)
Esempio n. 3
0
def test_jobs_and_refunds_today(mysql_connection):
    """Refunds should add back pages correctly."""
    assert_quota(mysql_connection, 'mattmcal', 0, 0)

    add_job(mysql_connection, TEST_JOB._replace(pages=3))
    assert_quota(mysql_connection, 'mattmcal', -3, -3)

    add_job(mysql_connection, TEST_JOB._replace(pages=5))
    assert_quota(mysql_connection, 'mattmcal', -8, -8)

    add_refund(mysql_connection, TEST_REFUND._replace(pages=1))
    assert_quota(mysql_connection, 'mattmcal', -7, -7)

    add_refund(mysql_connection, TEST_REFUND._replace(pages=3))
    assert_quota(mysql_connection, 'mattmcal', -4, -4)

    # now add another user
    assert_quota(mysql_connection, 'ckuehl', 0, 0)

    add_job(mysql_connection, TEST_JOB._replace(pages=5, user='******'))
    assert_quota(mysql_connection, 'ckuehl', -5, -5)
    assert_quota(mysql_connection, 'mattmcal', -4, -4)

    # and some refunds for that user
    add_refund(mysql_connection, TEST_REFUND._replace(pages=8, user='******'))
    assert_quota(mysql_connection, 'ckuehl', 3, 3)
    assert_quota(mysql_connection, 'mattmcal', -4, -4)

    add_refund(mysql_connection, TEST_REFUND._replace(pages=30, user='******'))
    assert_quota(mysql_connection, 'ckuehl', 33, 33)
    assert_quota(mysql_connection, 'mattmcal', -4, -4)
Esempio n. 4
0
def test_refunds_without_jobs(mysql_connection):
    """We should be able to calculate quotas correctly for a user with a refund
    but no jobs."""
    # a user with no jobs at all but a refund today
    assert_quota(mysql_connection, 'ckuehl', 0, 0)

    add_refund(mysql_connection, TEST_REFUND._replace(user='******', pages=10))
    assert_quota(mysql_connection, 'ckuehl', 10, 10)

    # a user with no jobs today and a refund earlier in the semester
    add_job(mysql_connection, TEST_JOB._replace(user='******', pages=5, time=YESTERDAY))
    assert_quota(mysql_connection, 'mattmcal', 0, -5)

    add_refund(mysql_connection, TEST_REFUND._replace(user='******', pages=10, time=YESTERDAY))
    assert_quota(mysql_connection, 'mattmcal', 0, 5)

    # a user with no jobs today and a refund today
    add_job(mysql_connection, TEST_JOB._replace(user='******', pages=5, time=YESTERDAY))
    assert_quota(mysql_connection, 'jvperrin', 0, -5)

    add_refund(mysql_connection, TEST_REFUND._replace(user='******', pages=10))
    assert_quota(mysql_connection, 'jvperrin', 10, 5)

    # a user with just one job (today) but a refund earlier in the semester
    add_job(mysql_connection, TEST_JOB._replace(user='******', pages=5))
    assert_quota(mysql_connection, 'kpengboy', -5, -5)

    add_refund(mysql_connection, TEST_REFUND._replace(user='******', pages=10, time=YESTERDAY))
    assert_quota(mysql_connection, 'kpengboy', -5, 5)
Esempio n. 5
0
def test_several_jobs_refunds_previous_days_and_semesters(mysql_connection):
    """Multiple jobs and refunds should change the quota correctly over
    different days, semesters, and users."""

    for user in ('mattmcal', 'ckuehl', 'jvperrin'):
        assert_quota(mysql_connection, user, 0, 0)

        # add some jobs and refunds today
        add_job(mysql_connection,
                TEST_JOB._replace(user=user, pages=1, time=TODAY))
        assert_quota(mysql_connection, user, -1, -1)

        add_refund(mysql_connection, TEST_REFUND._replace(user=user, pages=30))
        assert_quota(mysql_connection, user, 29, 29)

        add_job(mysql_connection,
                TEST_JOB._replace(user=user, pages=15, time=TODAY))
        assert_quota(mysql_connection, user, 14, 14)

        add_refund(mysql_connection, TEST_REFUND._replace(user=user, pages=3))
        assert_quota(mysql_connection, user, 17, 17)

        # add some refunds yesterday
        add_refund(mysql_connection,
                   TEST_REFUND._replace(user=user, pages=3, time=YESTERDAY))
        assert_quota(mysql_connection, user, 17, 20)

        add_refund(mysql_connection,
                   TEST_REFUND._replace(user=user, pages=8, time=YESTERDAY))
        assert_quota(mysql_connection, user, 17, 28)

        # add some refunds last semester
        add_refund(
            mysql_connection,
            TEST_REFUND._replace(user=user, pages=8, time=LAST_SEMESTER))
        assert_quota(mysql_connection, user, 17, 28)

        add_refund(
            mysql_connection,
            TEST_REFUND._replace(user=user, pages=3, time=LAST_SEMESTER))
        assert_quota(mysql_connection, user, 17, 28)
Esempio n. 6
0
def test_several_jobs_refunds_previous_days_and_semesters(mysql_connection):
    """Multiple jobs and refunds should change the quota correctly over
    different days, semesters, and users."""

    for user in ('mattmcal', 'ckuehl', 'jvperrin'):
        assert_quota(mysql_connection, user, 0, 0)

        # add some jobs and refunds today
        add_job(mysql_connection, TEST_JOB._replace(user=user, pages=1, time=TODAY))
        assert_quota(mysql_connection, user, -1, -1)

        add_refund(mysql_connection, TEST_REFUND._replace(user=user, pages=30))
        assert_quota(mysql_connection, user, 29, 29)

        add_job(mysql_connection, TEST_JOB._replace(user=user, pages=15, time=TODAY))
        assert_quota(mysql_connection, user, 14, 14)

        add_refund(mysql_connection, TEST_REFUND._replace(user=user, pages=3))
        assert_quota(mysql_connection, user, 17, 17)

        # add some refunds yesterday
        add_refund(mysql_connection, TEST_REFUND._replace(user=user, pages=3, time=YESTERDAY))
        assert_quota(mysql_connection, user, 17, 20)

        add_refund(mysql_connection, TEST_REFUND._replace(user=user, pages=8, time=YESTERDAY))
        assert_quota(mysql_connection, user, 17, 28)

        # add some refunds last semester
        add_refund(mysql_connection, TEST_REFUND._replace(user=user, pages=8, time=LAST_SEMESTER))
        assert_quota(mysql_connection, user, 17, 28)

        add_refund(mysql_connection, TEST_REFUND._replace(user=user, pages=3, time=LAST_SEMESTER))
        assert_quota(mysql_connection, user, 17, 28)
Esempio n. 7
0
#!/usr/bin/env python3
"""Add a test refund."""
import getpass
import random
import string
from datetime import datetime

from ocflib.printing.quota import add_refund
from ocflib.printing.quota import get_connection
from ocflib.printing.quota import Refund


if __name__ == "__main__":
    user = "******"
    password = getpass.getpass("{} password: "******"user: "******"pages: ")),
                staffer=getpass.getuser(),
                reason="".join(random.choice(string.ascii_letters) for _ in range(30)),
            ),
        )
Esempio n. 8
0
#!/usr/bin/env python3
"""Add a test refund."""
import getpass
import random
import string
from datetime import datetime

from ocflib.printing.quota import add_refund
from ocflib.printing.quota import get_connection
from ocflib.printing.quota import Refund

if __name__ == '__main__':
    user = '******'
    password = getpass.getpass('{} password: '******'user: '******'pages: ')),
                staffer=getpass.getuser(),
                reason=''.join(
                    random.choice(string.ascii_letters) for _ in range(30)),
            ),
        )