Пример #1
0
def test_classes_delete(client, web2py):
    """
        Is the delete permission for a class working?
        class_delete
    """
    setup_permission_tests(web2py)
    prepare_classes(web2py)
    web2py.auth.add_permission(200, 'read', 'classes', 0)

    web2py.db.commit()

    url = '/classes/schedule?year=2014&week=2'
    client.get(url)
    assert client.status == 200

    assert not 'class_delete' in client.text

    # grant permission and check again
    web2py.auth.add_permission(200, 'delete', 'classes', 0)
    web2py.db.commit()

    client.get(url)
    assert client.status == 200

    assert 'class_delete' in client.text
Пример #2
0
def test_teachers_payment_travel_delete(client, web2py):
    """
        Is the delete permission working for teacher travel allowance
    """
    setup_permission_tests(web2py)
    prepare_classes(web2py)
    populate_auth_user_teachers_fixed_rate_default(web2py)
    populate_auth_user_teachers_fixed_rate_class_1(web2py)
    populate_auth_user_teachers_travel(web2py)

    str_check = 'fa-times'

    gid = 2
    web2py.auth.add_permission(200, 'read', 'teachers_payment_travel', 0)
    web2py.db.commit()

    url = '/teachers/payment_travel?teID=2'
    client.get(url)
    assert client.status == 200
    assert str_check not in client.text

    gid = 2
    web2py.auth.add_permission(200, 'delete', 'teachers_payment_travel', 0)
    web2py.db.commit()

    client.get(url)
    assert client.status == 200
    assert str_check in client.text
Пример #3
0
def test_settings_access_group_delete(client, web2py):
    """
        Is the delete permission for a user group working?
    """
    setup_permission_tests(web2py)
    prepare_classes(web2py)
    web2py.auth.add_permission(200, 'read', 'settings', 0)
    web2py.auth.add_permission(200, 'read', 'auth_group', 0)

    web2py.db.commit()

    url = '/settings/access_groups'
    client.get(url)
    assert client.status == 200

    assert not 'fa-times' in client.text

    # grant permission and check again
    web2py.auth.add_permission(200, 'delete', 'auth_group', 0)
    web2py.db.commit()

    client.get(url)
    assert client.status == 200

    assert 'fa-times' in client.text
Пример #4
0
def test_classcard_info(client, web2py):
    """
        Is the classcard info page showing correctly?
    """
    setup_profile_tests(web2py)
    prepare_classes(web2py)

    ccdID = web2py.db.customers_classcards.insert(
        auth_customer_id = 300,
        school_classcards_id = 1,
        Startdate = '2014-01-01',
        Enddate = '2999-12-31'
    )

    web2py.db.classes_school_classcards_groups.insert(
        classes_id = 1,
        school_classcards_groups_id = 1,
        ShopBook = True,
        Attend = True
    )

    web2py.db.commit()


    url = '/profile/classcard_info?ccdID=' + str(ccdID)
    client.get(url)
    assert client.status == 200

    assert client.text.count('<span class="text-green"><i class="fa fa-check">') == 2
Пример #5
0
def test_subscription_info(client, web2py):
    """
        Is the subscription info page showing correctly?
    """
    setup_profile_tests(web2py)

    url = '/default/user/login'
    client.get(url)
    assert client.status == 200

    prepare_classes(web2py)

    csID = web2py.db.customers_subscriptions.insert(
        auth_customer_id = 300,
        school_subscriptions_id = 1,
        Startdate = '2014-01-01',
        Enddate = '2999-12-31',
        payment_methods_id = 1
    )

    web2py.db.classes_school_subscriptions_groups.insert(
        classes_id = 1,
        school_subscriptions_groups_id = 1,
        Enroll = True,
        ShopBook = True,
        Attend = True
    )

    web2py.db.commit()

    url = '/profile/subscription_info?csID=' + str(csID)
    client.get(url)
    assert client.status == 200

    assert client.text.count('<span class="text-green"><i class="fa fa-check">') == 3
Пример #6
0
def test_classes_waitinglist_delete(client, web2py):
    """
        Is the delete permission for a waitinglist entry working?
    """
    setup_permission_tests(web2py)
    prepare_classes(web2py)

    web2py.auth.add_permission(200, 'read', 'classes_waitinglist', 0)
    web2py.auth.add_permission(200, 'update', 'classes_waitinglist', 0)

    web2py.db.commit()

    url = '/classes/waitinglist_edit?clsID=1&date=2014-01-06'
    client.get(url)
    assert client.status == 200

    assert not 'fa-times' in client.text

    # grant permission and check again
    web2py.auth.add_permission(200, 'delete', 'classes_waitinglist', 0)
    web2py.db.commit()

    client.get(url)
    assert client.status == 200

    assert 'fa-times' in client.text
Пример #7
0
def test_classes_otc_delete(client, web2py):
    """
        Is the delete permission for classes_otc working?
    """
    setup_permission_tests(web2py)
    prepare_classes(web2py)

    web2py.db.classes_otc.insert(classes_id=1,
                                 ClassDate='2014-01-06',
                                 Status='open')

    web2py.auth.add_permission(200, 'read', 'classes_otc', 0)

    web2py.db.commit()

    url = '/classes/class_edit_on_date_remove_changes?cotcID=1'
    client.get(url)
    assert client.status == 200

    assert 'Not Authorized' in client.text
    assert web2py.db(web2py.db.classes_otc).count() == 1

    # grant permission and check again
    web2py.auth.add_permission(200, 'delete', 'classes_otc', 0)
    web2py.db.commit()

    client.get(url)
    assert client.status == 200

    assert web2py.db(web2py.db.classes_otc).count() == 0
Пример #8
0
def test_staff_holidays_delete(client, web2py):
    """
        Is the delete permission for a staf holiday working?
    """
    setup_permission_tests(web2py)
    prepare_classes(web2py)
    web2py.db.teachers_holidays.insert(auth_teacher_id=2,
                                       Startdate='2014-01-01',
                                       Enddate='2014-01-31',
                                       Note='Peaches')

    web2py.auth.add_permission(200, 'read', 'teacher_holidays', 0)

    web2py.db.commit()

    url = '/schedule/staff_holidays'
    client.get(url)
    assert client.status == 200

    assert not 'fa-times' in client.text

    # grant permission and check again
    web2py.auth.add_permission(200, 'delete', 'teacher_holidays', 0)
    web2py.db.commit()

    client.get(url)
    assert client.status == 200

    assert 'fa-times' in client.text
def test_reports_teacher_classes_class_revenue(client, web2py):
    """
        Does the page list the revenue breakdown correctly for this class
    """
    # get random page to set up OpenStudio environment
    url = '/default/user/login'
    client.get(url)
    assert client.status == 200

    prepare_classes(web2py,
                    with_subscriptions=True,
                    with_classcards=True,
                    invoices=True)

    # Check trial class
    url = '/reports/teacher_classes_class_revenue?clsID=1&date=2014-01-06'
    client.get(url)
    assert client.status == 200
    assert '10.00' in client.text
    # Check drop in class
    url = '/reports/teacher_classes_class_revenue?clsID=1&date=2014-01-13'
    client.get(url)
    assert client.status == 200
    assert '18.00' in client.text
    # Check subscription
    url = '/reports/teacher_classes_class_revenue?clsID=1&date=2014-01-20'
    client.get(url)
    assert client.status == 200
    assert '40.00' in client.text
    # Check class card
    url = '/reports/teacher_classes_class_revenue?clsID=1&date=2014-01-27'
    client.get(url)
    assert client.status == 200
    assert '12.50' in client.text
def test_reports_teacher_classes(client, web2py):
    """
        Does the page list the classes for the teacher (incl. sub classes correctly)
        Does the page list the revenue correctly?
    """
    # get random page to set up OpenStudio environment
    url = '/default/user/login'
    client.get(url)
    assert client.status == 200

    prepare_classes(web2py,
                    with_subscriptions=True,
                    with_classcards=True,
                    invoices=True)

    url = '/reports/teacher_classes?month=1&year=2014&teachers_id=2'
    client.get(url)
    assert client.status == 200

    # check listing of Trial amount
    assert '10.00' in client.text
    # check listing of Drop in amount
    assert '18.00' in client.text
    # check listing of subscription amount
    assert '40.00' in client.text
    # check listing of class card amount
    assert '12.50' in client.text
def test_payment_travel_edit(client, web2py):
    """
        Can we add travel allowance for a location?
    """
    prepare_classes(web2py)
    populate_auth_user_teachers_travel(web2py)

    url = '/teachers/payment_travel_edit?teID=2&tpfrtID=1'
    client.get(url)
    assert client.status == 200

    data = {
        'id': 1,
        'school_locations_id': 1,
        'TravelAllowance': '30232',
        'tax_rates_id': 1
    }

    client.post(url, data=data)
    assert client.status == 200

    row = web2py.db.teachers_payment_travel(1)
    assert row.TravelAllowance == float(data['TravelAllowance'])
    assert row.tax_rates_id == data['tax_rates_id']
    assert row.school_locations_id == 1
def test_payment_fixed_rate_class_edit(client, web2py):
    """
        Can we edit a class specific rate
    """
    prepare_classes(web2py)
    populate_auth_user_teachers_fixed_rate_class_1(web2py)

    next_monday = next_weekday(datetime.date.today(), 0)

    url = '/teachers/payment_fixed_rate_class?teID=2&clsID=1'
    client.get(url)
    assert client.status == 200

    data = {
        'id': 1,
        'ClassRate': '30232',
        'tax_rates_id': 1
    }

    client.post(url, data=data)
    assert client.status == 200

    row = web2py.db.teachers_payment_fixed_rate_class(1)
    assert row.ClassRate == float(data['ClassRate'])
    assert row.tax_rates_id == data['tax_rates_id']
    assert row.classes_id == 1
    assert row.auth_teacher_id == 2
Пример #13
0
def test_school_classcards_group_classcards_delete(client, web2py):
    """
        Is the delete permission for school_classcards_groups_classcards working correctly?
    """
    setup_permission_tests(web2py)
    prepare_classes(web2py)

    web2py.auth.add_permission(200, 'read',
                               'school_classcards_groups_classcards', 0)
    web2py.auth.add_permission(200, 'update',
                               'school_classcards_groups_classcards', 0)

    web2py.db.commit()

    url = '/school_properties/classcards_group_classcards?scgID=1'
    client.get(url)
    assert client.status == 200

    assert not 'fa-times' in client.text

    # grant permission and check again
    web2py.auth.add_permission(200, 'delete',
                               'school_classcards_groups_classcards', 0)
    web2py.db.commit()

    client.get(url)
    assert client.status == 200

    assert 'fa-times' in client.text
def test_reports_attendance_review_requested(client, web2py):
    """
    Are check-ins listed as they should?
    """
    prepare_classes(web2py)

    url = '/reports/attendance_review_requested'
    client.get(url)
    assert client.status == 200

    assert '<td>customer_1 1</td>' in client.text
    assert '/classes/attendance_booking_options?clsID=1&amp;cuID=1001&amp;date=2014-02-03' in client.text
def test_payment_fixed_rate_class_delete(client, web2py):
    """
        Can we delete a class specific rate
    """
    prepare_classes(web2py)
    populate_auth_user_teachers_fixed_rate_class_1(web2py)

    url = '/teachers/payment_fixed_rate_class_delete?teID=2&tpfrcID=1'
    client.get(url)
    assert client.status == 200

    query = (web2py.db.teachers_payment_fixed_rate_class.id > 0)
    assert web2py.db(query).count() == 0
def test_payment_travel_delete(client, web2py):
    """
        Can we delete a travel allowance for a location?
    """
    prepare_classes(web2py)
    populate_auth_user_teachers_travel(web2py)

    url = '/teachers/payment_travel_delete?teID=2&tpfrtID=1'
    client.get(url)
    assert client.status == 200

    query = (web2py.db.teachers_payment_travel.id > 0)
    assert web2py.db(query).count() == 0
Пример #17
0
def test_request_sub(client, web2py):
    """
    Can we request a subsitute teacher?
    """
    setup_ep_tests(web2py)
    prepare_classes(web2py, auth_teacher_id=400)

    url = '/ep/request_sub?clsID=1&date=2014-04-01&teachers_id=400'
    client.get(url)
    assert client.status == 200

    query = (web2py.db.classes_otc.Status == 'open')
    # print row
    assert web2py.db(query).count() == 1
def test_payment_fixed_rate_class_add_list_classes(client, web2py):
    """
        Can we add a class specific rate
    """
    prepare_classes(web2py)

    next_monday = next_weekday(datetime.date.today(), 0)

    url = '/teachers/payment_fixed_rate_class_add?teID=2&date=' + unicode(next_monday)
    client.get(url)
    assert client.status == 200

    assert 'Add class payment rate' in client.text
    assert 'Set rate' in client.text
def test_invoice_dont_show_duplicate_button_class_attendance_invoice(client, web2py):
    """
    DOes the button not show when teacher payment?
    """
    url = '/default/user/login'
    client.get(url)
    assert client.status == 200

    prepare_classes(web2py, invoices=True)

    url = '/invoices/edit?iID=1'
    client.get(url)
    assert client.status == 200

    assert 'Duplicate' not in client.text
Пример #20
0
def test_my_classes_show_current(client, web2py):
    """
        Does setting a month work?
    """
    url = '/default/user/login'
    client.get(url)
    assert client.status == 200

    setup_ep_tests(web2py)
    prepare_classes(web2py, auth_teacher_id=400)

    url = '/ep/my_classes_show_current'
    client.get(url)
    assert client.status == 200

    assert unicode(datetime.date.today().year) in client.text
Пример #21
0
def test_my_classes_set_month(client, web2py):
    """
        Does setting a month work?
    """
    url = '/default/user/login'
    client.get(url)
    assert client.status == 200

    setup_ep_tests(web2py)
    prepare_classes(web2py, auth_teacher_id=400)

    url = '/ep/my_classes_set_month?year=2014&month=1&back=my_classes'
    client.get(url)
    assert client.status == 200

    assert '2014' in client.text
def test_reports_attendance_classtypes(client, web2py):
    """
        Is the attendance classtypes page counting correctly?
    """
    prepare_classes(web2py)

    url = '/reports/attendance_set_month?year=2014&month=1&back=/attendance_classtypes'
    client.get(url)
    assert client.status == 200

    url = '/reports/attendance_classtypes'
    client.get(url)
    assert client.status == 200
    assert 'January' in client.text

    assert '<td>3</td>' in client.text
def test_subscription_credits_month_add_book_classes_for_recurring_reservations(
        client, web2py):
    """
        Are classes for recurring reservations booked?
    """
    ##
    # Check if classes for recurring reservations are booked
    ##
    import calendar

    # get a random url to initialize the OS environment
    url = '/default/user/login'
    client.get(url)
    assert client.status == 200

    prepare_classes(web2py, credits=True)

    ##
    # Cancel a class
    ##
    web2py.db.classes_otc.insert(
        classes_id=1,
        ClassDate='2099-01-05',  # First Monday for 2099
        Status='cancelled')

    ##
    # Add a holiday so the second monday of month will be cancelled
    ##
    shID = web2py.db.school_holidays.insert(Description='test',
                                            Startdate='2099-01-06',
                                            Enddate='2099-01-13',
                                            Classes=True)

    web2py.db.school_holidays_locations.insert(
        school_holidays_id=shID,
        school_locations_id=1,
    )

    web2py.db.commit()

    # Add credits
    url = '/test_automation_customer_subscriptions/test_add_subscription_credits_for_month?year=2099&month=1'
    client.get(url)
    assert client.status == 200

    query = (web2py.db.classes_attendance.ClassDate >= '2099-01-01')
    assert web2py.db(query).count() == 2
def test_customers_inactive_dont_list_with_class_attendance(client, web2py):
    """
        Customers attending a class after given date
    """
    from populate_os_tables import prepare_classes

    url = '/reports/customers_inactive'
    client.get(url)
    assert client.status == 200

    prepare_classes(web2py, created_on=datetime.date(2012, 1, 1))

    data = {'date': datetime.date(2014, 1, 1)}
    client.post(url, data=data)
    assert client.status == 200

    assert web2py.db.auth_user(1001).first_name not in client.text
Пример #25
0
def test_index(client, web2py):
    """
        Check if classes appear on the classes_open list
    """
    prepare_classes(web2py)
    assert web2py.db(web2py.db.classes).count() >= 1

    # get 2 mondays later than today
    delta = datetime.timedelta(days=7)
    today = datetime.date.today()
    next_monday = next_weekday(today,
                               0)  # 0 = Monday, 1=Tuesday, 2=Wednesday...
    monday_after_that = next_monday + delta

    web2py.db.classes_otc.insert(Status='open',
                                 classes_id=1,
                                 ClassDate=next_monday)
    web2py.db.classes_otc.insert(Status='open',
                                 classes_id=1,
                                 ClassDate=monday_after_that,
                                 school_locations_id=2,
                                 school_classtypes_id=2)
    web2py.db.classes_otc.insert(Status='open',
                                 classes_id=1,
                                 ClassDate='2014-01-06')

    web2py.db.commit()

    assert web2py.db(web2py.db.classes_otc.Status == 'open').count() == 3

    # get the page
    url = '/classes_sub_teachers/index'
    client.get(url)
    assert client.status == 200

    # past open classes shouldn't be shown
    assert '2014-01-06' not in client.text
    # future ones should be shown
    assert str(next_monday) in client.text
    assert str(monday_after_that) in client.text

    # check location & classtype from classes_otc
    location = web2py.db.school_locations(2).Name.split(' ')[0]
    assert location in client.text
    classtype = web2py.db.school_classtypes(2).Name.split(' ')[0]
    assert classtype in client.text
def test_payment_travel(client, web2py):
    """
        Check display of travel allowance for a teacher
    """
    prepare_classes(web2py)
    populate_auth_user_teachers_fixed_rate_default(web2py)
    populate_auth_user_teachers_fixed_rate_class_1(web2py)
    populate_auth_user_teachers_travel(web2py)

    next_monday = next_weekday(datetime.date.today(), 0)

    url = '/teachers/payment_travel?teID=2'
    client.get(url)
    assert client.status == 200

    travel_allowance = web2py.db.teachers_payment_travel(1)
    assert str(travel_allowance.TravelAllowance) in client.text
def test_invoice_add_from_customer_automatic_reset_numbering(client, web2py):
    """
        Can we add an invoice from a customer?
    """
    url = '/default/user/login'
    client.get(url)
    assert client.status == 200

    prepare_classes(web2py, invoices=True)

    # Set date created to a previous year for all invoices
    web2py.db(web2py.db.invoices).update(DateCreated="2014-01-01")
    web2py.db.commit()

    invoices_count = web2py.db(web2py.db.invoices).count()

    url = '/customers/invoices?cuID=1001'
    client.get(url)
    assert client.status == 200

    data = {'invoices_groups_id' : 100,
            'Description'        : 'one crate of bananas'}
    client.post(url, data=data)
    assert client.status == 200

    # verify entry of data
    assert data['Description'] in client.text
    assert web2py.db(web2py.db.invoices).count() == invoices_count + 1

    # check setting of enddate and InvoiceID
    max = web2py.db.invoices.id.max()
    iID = web2py.db().select(max).first()[max]

    invoice = web2py.db.invoices(iID)

    # verify redirection
    assert invoice.InvoiceID in client.text

    # Make sure the numbering has been reset
    today = datetime.date.today()
    assert invoice.InvoiceID == 'INV' + unicode(today.year) + '1'

    ig = web2py.db.invoices_groups(100)
    assert ig.NextID == 2
def test_reports_retention_dropoff_rate(client, web2py):
    """
        Is the retention rate calculated correctly?
    """
    # get random page to set up OpenStudio environment
    url = '/default/user/login'
    client.get(url)
    assert client.status == 200

    prepare_classes(web2py)

    # check retention
    url = '/reports/retention_rate?p1_start=2014-01-01&p1_end=2014-01-31&p2_start=2014-02-01&p2_end=2014-02-28'
    client.get(url)
    assert client.status == 200
    assert '0.00%' in client.text

    # check drop off
    url = '/reports/dropoff_rate?p1_start=2014-01-01&p1_end=2014-01-31&p2_start=2014-02-01&p2_end=2014-02-28'
    client.get(url)
    assert client.status == 200
    assert '100.00%' in client.text

    # insert a class for February
    web2py.db.classes_attendance.insert(auth_customer_id=1001,
                                        classes_id=1,
                                        ClassDate='2014-02-03',
                                        AttendanceType=3,
                                        customers_classcards_id=1)
    web2py.db.commit()

    # check retention
    url = '/reports/retention_rate?p1_start=2014-01-01&p1_end=2014-01-31&p2_start=2014-02-01&p2_end=2014-02-28'
    client.get(url)
    assert client.status == 200
    assert '100.00%' in client.text

    # check dropoff
    url = '/reports/dropoff_rate?p1_start=2014-01-01&p1_end=2014-01-31&p2_start=2014-02-01&p2_end=2014-02-28'
    client.get(url)
    assert client.status == 200
    assert '0.00%' in client.text
Пример #29
0
def test_my_classes(client, web2py):
    """
        Can we add a default rate
    """
    url = '/default/user/login'
    client.get(url)
    assert client.status == 200

    setup_ep_tests(web2py)
    prepare_classes(web2py, auth_teacher_id=400)

    url = '/ep/my_classes'
    client.get(url)
    assert client.status == 200

    today = datetime.date.today()
    date = datetime.date(today.year, today.month, 1)
    first_monday = date + datetime.timedelta(7 - date.weekday() or 7)

    assert str(first_monday) in client.text
def test_payment_fixed_rate(client, web2py):
    """
        Check display of default and class specific fixed rates
    """
    prepare_classes(web2py)
    populate_auth_user_teachers_fixed_rate_default(web2py)
    populate_auth_user_teachers_fixed_rate_class_1(web2py)
    populate_auth_user_teachers_travel(web2py)

    next_monday = next_weekday(datetime.date.today(), 0)

    url = '/teachers/payment_fixed_rate?teID=2'
    client.get(url)
    assert client.status == 200

    default_rate = web2py.db.teachers_payment_fixed_rate_default(1)
    assert str(default_rate.ClassRate) in client.text

    class_rate = web2py.db.teachers_payment_fixed_rate_class(1)
    assert str(class_rate.ClassRate) in client.text