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
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
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
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
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
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
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
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
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&cuID=1001&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
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
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
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
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
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