Skip to content
134 changes: 134 additions & 0 deletions tests/code/test_overload.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,134 @@
# importing the modules,
import pytest
from app import app
from app.models.user import User
from app.models.overloadForm import *
from app.models.term import *
from app.controllers.main_routes import studentOverloadApp
from app.logic.userInsertFunctions import *
from app.controllers.admin_routes.financialAidOverload import formDenial
from app.controllers.admin_routes.allPendingForms import laborAdminOverloadApproval
from app.controllers.main_routes.laborStatusForm import *
from datetime import datetime,date

# get the user
currentUser = User.get(User.userID == 1)
term = Term.get(Term.termCode == '202000')
rspFunctional = {'stuName': 'Guillermo Adams', 'stuBNumber': 'B00734292', 'stuPosition': 'DUMMY POSITION', 'stuPositionCode': 'S12345', 'stuJobType': 'Primary', 'stuWeeklyHours': 20, 'stuContractHours': None, 'stuWLS': '3', 'stuStartDate': '08/01/2020', 'stuEndDate': '05/01/2021', 'stuTermCode': '202000', 'stuNotes': '', 'stuLaborNotes': None, 'stuSupervisor': 'Scott Heggen', 'stuDepartment': 'Computer Science', 'stuDepartmentORG': '2114', 'stuSupervisorID': 'B12361006', 'isItOverloadForm': 'True', 'isTermBreak': False, 'stuTotalHours': 20}
lsf = createLaborStatusForm("B00734292", "B12361006", "1", term, rspFunctional)
status = "Pending"
currentDate = datetime.now().strftime("%Y-%m-%d")
email = "cruzg@berea.edu"

@pytest.fixture
def resetApprovalStatus():
formHistory = FormHistory.get((FormHistory.formID == lsf.laborStatusFormID) & (FormHistory.historyType == "Labor Overload Form"))
formHistory.overloadForm.financialAidApproved = None
formHistory.save()
formHistory.overloadForm.SAASApproved= None
formHistory.save()
formHistory.overloadForm.laborApproved = None
formHistory.save()
yield

@pytest.mark.integration
def test_createOverload():
""" The above function is from the UserInsert Funtions.py and LaborStatusForm.py"""
with app.test_request_context():
overload = createOverloadFormAndFormHistory(rspFunctional, lsf, currentUser, status)
assert FormHistory.get((FormHistory.formID == lsf.laborStatusFormID) & (FormHistory.historyType == "Labor Overload Form"))
assert checkTotalHours(termCode="202000", student="B00734292", weeklyHours="20",contractHours=None) == "20"


@pytest.mark.integration
def test_formCompletion():
"""This function tests form completion"""
formHistory = FormHistory.get((FormHistory.formID == lsf.laborStatusFormID) & (FormHistory.historyType == "Labor Overload Form"))
with app.test_client() as c:
studentApproval = c.post('/studentOverloadApp/update', json={
str(lsf.laborStatusFormID): {"Notes": "This is my reason", "formID": formHistory.formHistoryID
}})
overloadForm = OverloadForm.get(OverloadForm.overloadFormID == formHistory.overloadForm)
assert overloadForm.studentOverloadReason == "This is my reason"

@pytest.mark.integration
def test_approval():
""" This is for testing Financial Aid and approval"""

formHistory = FormHistory.get((FormHistory.formID == lsf.laborStatusFormID) & (FormHistory.historyType == "Labor Overload Form"))
with app.test_request_context():
currentUser.isFinancialAidAdmin = 1
currentUser.save()
status = 'approved'
with app.test_client() as c:
FinancialAidApproval = c.post('/admin/financialAidOverloadApproval/'+status, json={
'formHistoryID': formHistory.formHistoryID, 'denialNote': "I approve this form for Financial Aid"
})
formHistory = FormHistory.get((FormHistory.formID == lsf.laborStatusFormID) & (FormHistory.historyType == "Labor Overload Form"))
assert formHistory.overloadForm.financialAidApproved.statusName == "Approved"
# Testing SAAS Approval
currentUser.isFinancialAidAdmin = 0
currentUser.save()
currentUser.isSaasAdmin = 1
currentUser.save()

SASSApproval = c.post('/admin/financialAidOverloadApproval/'+status, json={
'formHistoryID': formHistory.formHistoryID, 'denialNote': "Saas approved this form"
})
formHistory = FormHistory.get((FormHistory.formID == lsf.laborStatusFormID) & (FormHistory.historyType == "Labor Overload Form"))
assert formHistory.overloadForm.SAASApproved.statusName == "Approved"
currentUser.isSaasAdmin = 0
currentUser.save()

adminApproval = c.post('/admin/modalFormUpdate', json={
'formHistoryID': formHistory.formHistoryID, 'adminNotes': 'Approved by me', 'status': 'Approved', 'formType': 'Overload'
})

formHistory = FormHistory.get((FormHistory.formID == lsf.laborStatusFormID) & (FormHistory.historyType == "Labor Overload Form"))
assert formHistory.overloadForm.laborApproved.statusName == "Approved"

adminApprovalReluctantly = c.post('/admin/modalFormUpdate', json={
'formHistoryID': formHistory.formHistoryID, 'adminNotes': 'Approved reluctantly by me', 'status': 'Approved Reluctantly', 'formType': 'Overload'
})

formHistory = FormHistory.get((FormHistory.formID == lsf.laborStatusFormID) & (FormHistory.historyType == "Labor Overload Form"))
assert formHistory.overloadForm.laborApproved.statusName == "Approved Reluctantly"

@pytest.mark.integration
def test_denied(resetApprovalStatus):
""" This is for testing financial and disapproval"""

formHistory = FormHistory.get((FormHistory.formID == lsf.laborStatusFormID) & (FormHistory.historyType == "Labor Overload Form"))
formHistory.overloadForm.financialAidApproved.statusName = None
with app.test_request_context():
currentUser.isFinancialAidAdmin = 1
currentUser.save()
status = 'denied'
with app.test_client() as c:
FinancialAidDenial = c.post('/admin/financialAidOverloadApproval/'+status, json={
'formHistoryID': formHistory.formHistoryID, 'denialNote': "I denied this form for Financial Aid"
})
formHistory = FormHistory.get((FormHistory.formID == lsf.laborStatusFormID) & (FormHistory.historyType == "Labor Overload Form"))
assert formHistory.overloadForm.financialAidApproved.statusName == "Denied"
# Testing SAAS Approval
currentUser.isFinancialAidAdmin = 0
currentUser.save()
currentUser.isSaasAdmin = 1
currentUser.save()

SaasDenial = c.post('/admin/financialAidOverloadApproval/'+status, json={
'formHistoryID': formHistory.formHistoryID, 'denialNote': "Saas denied this form"
})
formHistory = FormHistory.get((FormHistory.formID == lsf.laborStatusFormID) & (FormHistory.historyType == "Labor Overload Form"))
assert formHistory.overloadForm.SAASApproved.statusName == "Denied"

#Testing for Labor Admin approval
currentUser.isSaasAdmin = 0
currentUser.save()

adminDenial = c.post('/admin/modalFormUpdate', json={
'formHistoryID': formHistory.formHistoryID, 'adminNotes': 'Denied by me', 'status': 'Denied', 'formType': 'Overload'
})

formHistory = FormHistory.get((FormHistory.formID == lsf.laborStatusFormID) & (FormHistory.historyType == "Labor Overload Form"))
assert formHistory.overloadForm.laborApproved.statusName == "Denied"
2 changes: 1 addition & 1 deletion tests/code/test_tracy.py
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ def test_getSupervisorFromEmail(self, tracy):
def test_getPositionsFromDepartment(self, tracy):
positions = tracy.getPositionsFromDepartment("2114","6740")

assert ['S61408','S61407','S61421','S61419'] == [p.POSN_CODE for p in positions]
assert ['S12345','S61408','S61407','S61421','S61419'] == [p.POSN_CODE for p in positions]

positions = tracy.getPositionsFromDepartment("2114","0000")
assert [] == [p.POSN_CODE for p in positions]
Expand Down