diff --git a/app/models/allocation.py b/app/models/allocation.py
index 75f9c828f..2db4ff034 100644
--- a/app/models/allocation.py
+++ b/app/models/allocation.py
@@ -6,9 +6,9 @@
class Allocation(baseModel):
termCode = ForeignKeyField(Term)
department = ForeignKeyField(Department)
- isApproved = BooleanField(default=False)
- approvedOn = DateField(null =True)
- approvedBy = ForeignKeyField(Supervisor, null =True)
+ isFinal = BooleanField(default=False)
+ approvedOn = DateField(null=True)
+ approvedBy = ForeignKeyField(Supervisor, null=True)
justification = TextField()
primary_10 = IntegerField()
primary_12 = IntegerField()
@@ -17,3 +17,6 @@ class Allocation(baseModel):
secondary_5 = IntegerField()
secondary_10 = IntegerField()
breakHours = IntegerField()
+
+ class Meta:
+ indexes = ( (('termCode', 'department', 'isFinal'), True), )
diff --git a/app/models/positionHistory.py b/app/models/positionHistory.py
index f255dfbcb..3679cf147 100644
--- a/app/models/positionHistory.py
+++ b/app/models/positionHistory.py
@@ -2,9 +2,12 @@
from app.models.department import Department
class PositionHistory(baseModel):
- positioncode = PrimaryKeyField()
+ positionCode = CharField()
+ department = ForeignKeyField(Department)
status = CharField()
- WLS = IntegerField()
- revisiondate = DateField()
- Description = TextField()
- Department = ForeignKeyField(Department)
+ wls = IntegerField()
+ revisionDate = DateField()
+ description = TextField(default=None)
+
+ class Meta:
+ indexes = ( (('positionCode', 'revisionDate', 'status'), True), )
diff --git a/app/models/supervisor.py b/app/models/supervisor.py
index 7c08354d3..e16d43282 100644
--- a/app/models/supervisor.py
+++ b/app/models/supervisor.py
@@ -16,6 +16,7 @@ class Supervisor(baseModel):
legal_name = CharField(null=True)
preferred_name = CharField(null=True)
isActive = BooleanField(default=False)
+ isBanned = BooleanField(default=False)
@property
diff --git a/app/models/supervisorDepartment.py b/app/models/supervisorDepartment.py
index 72a80ea6d..1fdb04e33 100644
--- a/app/models/supervisorDepartment.py
+++ b/app/models/supervisorDepartment.py
@@ -3,7 +3,7 @@
from app.models.department import Department
class SupervisorDepartment(baseModel):
- supervisor = ForeignKeyField(Supervisor, null=True)
+ supervisor = ForeignKeyField(Supervisor)
department = ForeignKeyField(Department)
banStatus = BooleanField(default=False)
isActive = BooleanField(default=False)
@@ -12,5 +12,3 @@ class SupervisorDepartment(baseModel):
@property
def isBanned(self):
return self.banStatus
-
-
diff --git a/app/templates/admin/manageDepartments.html b/app/templates/admin/manageDepartments.html
index 86d42a6ac..cc57c4008 100755
--- a/app/templates/admin/manageDepartments.html
+++ b/app/templates/admin/manageDepartments.html
@@ -159,18 +159,23 @@
Manage Departments
-
-
-
-
+
+
+
+
|
diff --git a/database/demo_data.py b/database/demo_data.py
index 8ef27c266..2e7a62f15 100644
--- a/database/demo_data.py
+++ b/database/demo_data.py
@@ -17,11 +17,9 @@
from app.models.laborStatusForm import LaborStatusForm
from app.models.formHistory import FormHistory
from app.models.notes import Notes
-from app.models.supervisorDepartment import SupervisorDepartment
-from app.models.allocation import Allocation
-from app.models.positionHistory import PositionHistory
from app.models.supervisorDepartment import SupervisorDepartment
from app.models.allocation import Allocation
+from app.models.positionHistory import PositionHistory
print("Inserting data for demo and testing purposes")
@@ -516,6 +514,15 @@
current_year = today.year - (today.month < 8)
terms = [
+ {
+ "termCode": f"202000",
+ "termName": f"AY 2020-2021",
+ "termStart": f"2020-08-01",
+ "termEnd": f"2021-05-01",
+ "termState": 0,
+ "primaryCutOff": f"2020-09-01",
+ "adjustmentCutOff": f"2020-10-01",
+ },
{
"termCode": f"{current_year}00",
"termName": f"AY {current_year}-{current_year+1}",
@@ -583,7 +590,7 @@
current_year = today.year - (today.month < 8)
LaborStatusForm.insert([{
"laborStatusFormID": 2,
- "termCode_id": f"{current_year}00",
+ "termCode_id": f"202000",
"studentName": "Alex Bryant",
"studentSupervisee_id": "B00841417",
"supervisor_id": "B12361006",
@@ -593,8 +600,8 @@
"POSN_TITLE": "Student Programmer",
"POSN_CODE": "S61407",
"weeklyHours": 10,
- "startDate": f"{current_year}-04-01",
- "endDate": f"{current_year}-09-01"
+ "startDate": f"2020-04-01",
+ "endDate": f"2020-09-01"
}]).on_conflict_replace().execute()
FormHistory.insert([{
"formHistoryID": 2,
@@ -713,7 +720,7 @@
{
"termCode": 202200,
"department": 3,
- "isApproved": False,
+ "isFinal": False,
"approvedOn": None,
"approvedBy": None,
"justification": "Downscaling due to decrease in student enrollment caused by current economic conditions",
@@ -728,7 +735,7 @@
{
"termCode": 202300,
"department": 2,
- "isApproved": False,
+ "isFinal": False,
"approvedOn": None,
"approvedBy": None,
"justification": "Increase in student enrollment due to exodous from CS department",
@@ -743,7 +750,7 @@
{
"termCode": 202400,
"department": 1,
- "isApproved": False,
+ "isFinal": False,
"approvedOn": None,
"approvedBy": None,
"justification": "We are hiring more students to help with the increased workload in the department",
@@ -758,7 +765,7 @@
{
"termCode": 202500,
"department": 4,
- "isApproved": False,
+ "isFinal": False,
"approvedOn": None,
"approvedBy": None,
"justification": "Downscaling the number of students in the department due to budget cuts",
@@ -773,7 +780,7 @@
{
"termCode": 202500,
"department": 5,
- "isApproved": False,
+ "isFinal": False,
"approvedOn": None,
"approvedBy": None,
"justification": "Due to rapid department growth, we need to hire more students to help with the increased workload",
@@ -794,7 +801,7 @@
{
"termCode":f"{current_year}00",
"department": 3,
- "isApproved": True,
+ "isFinal": True,
"approvedOn": f"{current_year}-06-30",
"approvedBy": "B12365892",
"justification": "We just want it for fun",
@@ -809,7 +816,7 @@
{
"termCode":f"{current_year}00",
"department": 2,
- "isApproved": False,
+ "isFinal": False,
"approvedOn": f"{current_year}-06-20",
"approvedBy": "B00763721",
"justification": "We need it to lower the amount of allocations we have",
diff --git a/database/migrate_db.sh b/database/migrate_db.sh
index 5788fbead..dea226d8e 100755
--- a/database/migrate_db.sh
+++ b/database/migrate_db.sh
@@ -30,6 +30,7 @@ pem add app.models.supervisor.Supervisor
pem add app.models.supervisorDepartment.SupervisorDepartment
pem add app.models.studentLaborEvaluation.StudentLaborEvaluation
pem add app.models.formSearchResult.FormSearchResult
+pem add app.models.positionHistory.PositionHistory
pem add app.models.allocation.Allocation
pem watch
diff --git a/database/prod-backup.sql b/database/prod-backup.sql
index 6746950e6..54a36f8fc 100755
--- a/database/prod-backup.sql
+++ b/database/prod-backup.sql
@@ -1208,3 +1208,17 @@ ALTER TABLE `laborreleaseform`
alter table student add isActive boolean;
+alter table supervisor add isBanned boolean;
+alter table supervisordepartment add `isCoordinator` BOOL NOT NULL default false;
+
+CREATE TABLE `positionhistory` (`id` INTEGER AUTO_INCREMENT NOT NULL PRIMARY KEY, `positionCode` VARCHAR(255) NOT NULL, `department_id` INTEGER NOT NULL, `status` VARCHAR(255) NOT NULL, `wls` INTEGER NOT NULL, `revisionDate` DATE NOT NULL, `description` TEXT NOT NULL, FOREIGN KEY (`department_id`) REFERENCES `department` (`departmentID`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+CREATE INDEX `positionhistory_department_id` ON `positionhistory` (`department_id`);
+CREATE UNIQUE INDEX `positionhistory_positionCode_revisionDate_status` ON `positionhistory` (`positionCode`, `revisionDate`, `status`);
+
+CREATE TABLE `allocation` (`id` INTEGER AUTO_INCREMENT NOT NULL PRIMARY KEY, `termCode_id` INTEGER NOT NULL, `department_id` INTEGER NOT NULL, `isFinal` BOOL NOT NULL, `approvedOn` DATE, `approvedBy_id` VARCHAR(255), `justification` TEXT NOT NULL, `primary_10` INTEGER NOT NULL, `primary_12` INTEGER NOT NULL, `primary_15` INTEGER NOT NULL, `primary_20` INTEGER NOT NULL, `secondary_5` INTEGER NOT NULL, `secondary_10` INTEGER NOT NULL, `breakHours` INTEGER NOT NULL, FOREIGN KEY (`termCode_id`) REFERENCES `term` (`termCode`), FOREIGN KEY (`department_id`) REFERENCES `department` (`departmentID`), FOREIGN KEY (`approvedBy_id`) REFERENCES `supervisor` (`ID`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+CREATE UNIQUE INDEX `allocation_termCode_id_department_id_isFinal` ON `allocation` (`termCode_id`, `department_id`, `isFinal`);
diff --git a/tests/code/test_adminManagement.py b/tests/code/test_adminManagement.py
index d6d0ac639..56c605869 100644
--- a/tests/code/test_adminManagement.py
+++ b/tests/code/test_adminManagement.py
@@ -1,46 +1,44 @@
import pytest
from app.controllers.admin_routes.adminManagement import addAdmin, removeAdmin
from app.models.user import User
+from app.models import mainDB
from peewee import DoesNotExist
@pytest.mark.integration
def test_addAdmin():
- newAdmin = "pearcej"
- user = User.get(User.username == newAdmin)
+ with mainDB.atomic() as transaction:
+ newAdmin = "pearcej"
+ user = User.get(User.username == newAdmin)
- # Before adding user as admin
- assert not user.isLaborAdmin
- # Test adding labor admin
- addAdmin(user, 'labor')
- assert user.isLaborAdmin
+ # Before adding user as admin
+ assert not user.isLaborAdmin
+ addAdmin(user, 'Labor')
+ user = User.get(User.username == newAdmin) # check if the db is actually changed
+ assert user.isLaborAdmin
- assert not user.isFinancialAidAdmin
- # Test adding financial aid admin
- addAdmin(user, 'finAid')
- assert user.isFinancialAidAdmin
+ assert not user.isFinancialAidAdmin
+ addAdmin(user, 'FinancialAid')
+ assert user.isFinancialAidAdmin
- assert not user.isSaasAdmin
- # Test adding saas admin
- addAdmin(user, 'saas')
- assert user.isSaasAdmin
+ assert not user.isSaasAdmin
+ addAdmin(user, 'Saas')
+ assert user.isSaasAdmin
@pytest.mark.integration
def test_removeAdmin():
- oldAdmin = "pearcej"
- user = User.get(User.username == oldAdmin)
-
- # Before removing user as admin
- assert user.isLaborAdmin
- # Test removing labor admin
- removeAdmin(user, 'labor')
- assert not user.isLaborAdmin
-
- assert user.isFinancialAidAdmin
- # Test removing financial aid admin
- removeAdmin(user, 'finAid')
- assert not user.isFinancialAidAdmin
-
- assert user.isSaasAdmin
- # Test removing saas admin
- removeAdmin(user, 'saas')
- assert not user.isSaasAdmin
+ with mainDB.atomic() as transaction:
+ oldAdmin = "pearcej"
+ user = User.get(User.username == oldAdmin)
+
+ assert user.isLaborAdmin
+ removeAdmin(user, 'Labor')
+ user = User.get(User.username == oldAdmin) # check if the db is actually changed
+ assert not user.isLaborAdmin
+
+ assert user.isFinancialAidAdmin
+ removeAdmin(user, 'FinancialAid')
+ assert not user.isFinancialAidAdmin
+
+ assert user.isSaasAdmin
+ removeAdmin(user, 'Saas')
+ assert not user.isSaasAdmin
diff --git a/tests/code/test_apiEndpoint.py b/tests/code/test_apiEndpoint.py
index 4cc41aa6e..140bf767f 100644
--- a/tests/code/test_apiEndpoint.py
+++ b/tests/code/test_apiEndpoint.py
@@ -35,6 +35,7 @@ def test_getLaborInformation():
response = getLaborInformation(orgCode = 2114, bNumber="B00841417")
responseData = response.get_json()
+ print(responseData['B00841417'])
assert responseData['B00841417'][0]['jobType'] == "Primary"
assert responseData['B00841417'][0]['termName'] == "AY 2020-2021"
diff --git a/tests/code/test_tracy.py b/tests/code/test_tracy.py
index cd86359ec..5462b0c88 100644
--- a/tests/code/test_tracy.py
+++ b/tests/code/test_tracy.py
@@ -1,4 +1,5 @@
import pytest
+from app import app
from app.logic.tracy import Tracy
from app.logic.tracy import InvalidQueryException
@@ -15,132 +16,144 @@ def test_init(self, tracy):
@pytest.mark.integration
def test_getStudents(self, tracy):
- students = tracy.getStudents()
- assert ['Elaheh','Guillermo','Jeremiah','Kat', 'Oluwagbayi', 'Test', 'Tyler'] == [s.FIRST_NAME for s in students]
- assert ['718','300','420','420', '883', '700', '420'] == [s.STU_CPO for s in students]
+ with app.app_context():
+ students = tracy.getStudents()
+ assert ['Elaheh','Guillermo','Jeremiah','Kat', 'Oluwagbayi', 'Test', 'Tyler'] == [s.FIRST_NAME for s in students]
+ assert ['718','300','420','420', '883', '700', '420'] == [s.STU_CPO for s in students]
@pytest.mark.integration
def test_getStudentFromBNumber(self, tracy):
- student = tracy.getStudentFromBNumber("B00734292")
- assert 'Guillermo' == student.FIRST_NAME
+ with app.app_context():
+ student = tracy.getStudentFromBNumber("B00734292")
+ assert 'Guillermo' == student.FIRST_NAME
- student = tracy.getStudentFromBNumber(" B00734292")
- assert 'Guillermo' == student.FIRST_NAME
+ student = tracy.getStudentFromBNumber(" B00734292")
+ assert 'Guillermo' == student.FIRST_NAME
- student = tracy.getStudentFromBNumber("B00888329 ")
- assert 'Jeremiah' == student.FIRST_NAME
+ student = tracy.getStudentFromBNumber("B00888329 ")
+ assert 'Jeremiah' == student.FIRST_NAME
- with pytest.raises(InvalidQueryException):
- student = tracy.getStudentFromBNumber("B0000000")
+ with pytest.raises(InvalidQueryException):
+ student = tracy.getStudentFromBNumber("B0000000")
- with pytest.raises(InvalidQueryException):
- student = tracy.getStudentFromBNumber(17)
+ with pytest.raises(InvalidQueryException):
+ student = tracy.getStudentFromBNumber(17)
@pytest.mark.integration
def test_getStudentFromEmail(self, tracy):
- student = tracy.getStudentFromEmail("cruzg@berea.edu")
- assert 'Guillermo' == student.FIRST_NAME
+ with app.app_context():
+ student = tracy.getStudentFromEmail("cruzg@berea.edu")
+ assert 'Guillermo' == student.FIRST_NAME
- with pytest.raises(InvalidQueryException):
- student = tracy.getStudentFromEmail("jimmyjoe@place.biz")
+ with pytest.raises(InvalidQueryException):
+ student = tracy.getStudentFromEmail("jimmyjoe@place.biz")
- with pytest.raises(InvalidQueryException):
- student = tracy.getStudentFromEmail(17)
+ with pytest.raises(InvalidQueryException):
+ student = tracy.getStudentFromEmail(17)
@pytest.mark.integration
def test_getSupervisors(self, tracy):
- supervisors = tracy.getSupervisors()
+ with app.app_context():
+ supervisors = tracy.getSupervisors()
- for s in supervisors:
- assert s.FIRST_NAME in ['Alex','Brian','Jan','Jasmine','Mario','Megan','Scott','Madina']
- assert s.CPO in ['420','6305','6301','6301','6302','6303','6300']
+ for s in supervisors:
+ assert s.FIRST_NAME in ['Alex','Brian','Jan','Jasmine','Mario','Megan','Scott','Madina']
+ assert s.CPO in ['420','6305','6301','6301','6302','6303','6300']
@pytest.mark.integration
def test_getSupervisorFromID(self, tracy):
- supervisor = tracy.getSupervisorFromID("B1236237")
- assert 'Megan' == supervisor.FIRST_NAME
+ with app.app_context():
+ supervisor = tracy.getSupervisorFromID("B1236237")
+ assert 'Megan' == supervisor.FIRST_NAME
- with pytest.raises(InvalidQueryException):
- supervisor = tracy.getSupervisorFromID("eleven")
+ with pytest.raises(InvalidQueryException):
+ supervisor = tracy.getSupervisorFromID("eleven")
- with pytest.raises(InvalidQueryException):
- supervisor = tracy.getSupervisorFromID(17)
+ with pytest.raises(InvalidQueryException):
+ supervisor = tracy.getSupervisorFromID(17)
@pytest.mark.integration
def test_getSupervisorFromEmail(self, tracy):
- supervisor = tracy.getSupervisorFromEmail("nakazawam@berea.edu")
- assert 'Mario' == supervisor.FIRST_NAME
+ with app.app_context():
+ supervisor = tracy.getSupervisorFromEmail("nakazawam@berea.edu")
+ assert 'Mario' == supervisor.FIRST_NAME
- supervisor = tracy.getSupervisorFromEmail("heggens@berea.edu")
- assert 'Scott' == supervisor.FIRST_NAME
+ supervisor = tracy.getSupervisorFromEmail("heggens@berea.edu")
+ assert 'Scott' == supervisor.FIRST_NAME
- with pytest.raises(InvalidQueryException):
- supervisor = tracy.getSupervisorFromEmail("nakazawamasdfd.com")
+ with pytest.raises(InvalidQueryException):
+ supervisor = tracy.getSupervisorFromEmail("nakazawamasdfd.com")
- with pytest.raises(InvalidQueryException):
- supervisor = tracy.getSupervisorFromEmail(17)
+ with pytest.raises(InvalidQueryException):
+ supervisor = tracy.getSupervisorFromEmail(17)
@pytest.mark.integration
def test_getPositionsFromDepartment(self, tracy):
- positions = tracy.getPositionsFromDepartment("2114","6740")
- 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]
+ with app.app_context():
+ positions = tracy.getPositionsFromDepartment("2114","6740")
+ 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]
@pytest.mark.integration
def test_getDepartments(self, tracy):
- departments = tracy.getDepartments()
- assert ['Biology','Computer Science', 'Labor Department', 'Mathematics','Technology and Applied Design'] == [d.DEPT_NAME for d in departments]
- assert '2107' == departments[0].ORG
- assert '6740' == departments[0].ACCOUNT
+ with app.app_context():
+ departments = tracy.getDepartments()
+ assert ['Biology','Computer Science', 'Labor Department', 'Mathematics','Technology and Applied Design'] == [d.DEPT_NAME for d in departments]
+ assert '2107' == departments[0].ORG
+ assert '6740' == departments[0].ACCOUNT
@pytest.mark.integration
def test_getPositionFromCode(self, tracy):
- position = tracy.getPositionFromCode("S61427")
- assert 'Teaching Associate' == position.POSN_TITLE
- assert '2' == position.WLS
+ with app.app_context():
+ position = tracy.getPositionFromCode("S61427")
+ assert 'Teaching Associate' == position.POSN_TITLE
+ assert '2' == position.WLS
- with pytest.raises(InvalidQueryException):
- position = tracy.getPositionFromCode("eleven")
+ with pytest.raises(InvalidQueryException):
+ position = tracy.getPositionFromCode("eleven")
- with pytest.raises(InvalidQueryException):
- position = tracy.getPositionFromCode(17)
+ with pytest.raises(InvalidQueryException):
+ position = tracy.getPositionFromCode(17)
@pytest.mark.integration
def test_getSupervisorsFromUserInput(self, tracy):
- supervisor = tracy.getSupervisorsFromUserInput("Jan Pearce")
- assert "Jan" == supervisor[0].FIRST_NAME
- assert 1 == len(supervisor)
+ with app.app_context():
+ supervisor = tracy.getSupervisorsFromUserInput("Jan Pearce")
+ assert "Jan" == supervisor[0].FIRST_NAME
+ assert 1 == len(supervisor)
- supervisor = tracy.getSupervisorsFromUserInput("heggen")
- assert "Scott" == supervisor[0].FIRST_NAME
- assert 1 == len(supervisor)
+ supervisor = tracy.getSupervisorsFromUserInput("heggen")
+ assert "Scott" == supervisor[0].FIRST_NAME
+ assert 1 == len(supervisor)
- supervisor = tracy.getSupervisorsFromUserInput("Peter Parker")
- assert supervisor != True
- assert 0 == len(supervisor)
+ supervisor = tracy.getSupervisorsFromUserInput("Peter Parker")
+ assert supervisor != True
+ assert 0 == len(supervisor)
@pytest.mark.integration
def test_getStudentsFromUserInput(self, tracy):
- students = tracy.getStudentsFromUserInput("Guillermo")
- assert "Guillermo" == students[0].FIRST_NAME
- assert 1 == len(students)
+ with app.app_context():
+ students = tracy.getStudentsFromUserInput("Guillermo")
+ assert "Guillermo" == students[0].FIRST_NAME
+ assert 1 == len(students)
- students = tracy.getStudentsFromUserInput("Adams")
- assert 2 == len(students)
- assert "Adams" == students[1].LAST_NAME
+ students = tracy.getStudentsFromUserInput("Adams")
+ assert 2 == len(students)
+ assert "Adams" == students[1].LAST_NAME
- students = tracy.getSupervisorsFromUserInput("John Smith")
- assert students != True
- assert 0 == len(students)
+ students = tracy.getSupervisorsFromUserInput("John Smith")
+ assert students != True
+ assert 0 == len(students)
@pytest.mark.integration
def test_checkStudentOrSupervisor(self, tracy):
- user = tracy.checkStudentOrSupervisor("cruzg")
- assert "Student" == user
+ with app.app_context():
+ user = tracy.checkStudentOrSupervisor("cruzg")
+ assert "Student" == user
- user = tracy.checkStudentOrSupervisor("heggens")
- assert "Supervisor" == user
+ user = tracy.checkStudentOrSupervisor("heggens")
+ assert "Supervisor" == user
- with pytest.raises(InvalidQueryException):
- user = tracy.checkStudentOrSupervisor("smith")
+ with pytest.raises(InvalidQueryException):
+ user = tracy.checkStudentOrSupervisor("smith")
diff --git a/tests/code/test_userInsertFunctions.py b/tests/code/test_userInsertFunctions.py
index b5b428591..cc81e4d98 100644
--- a/tests/code/test_userInsertFunctions.py
+++ b/tests/code/test_userInsertFunctions.py
@@ -1,4 +1,5 @@
import pytest
+from app import app
from app.models.Tracy.studata import STUDATA
from app.models.Tracy.stustaff import STUSTAFF
from app.models import mainDB
@@ -11,211 +12,217 @@
@pytest.mark.integration
def test_createSupervisorFromTracy():
- # Test fail conditions
- with pytest.raises(InvalidUserException):
- supervisor = createSupervisorFromTracy()
+ with app.app_context():
+ # Test fail conditions
+ with pytest.raises(InvalidUserException):
+ supervisor = createSupervisorFromTracy()
- with pytest.raises(InvalidUserException):
- supervisor = createSupervisorFromTracy("B12361006")
+ with pytest.raises(InvalidUserException):
+ supervisor = createSupervisorFromTracy("B12361006")
- with pytest.raises(InvalidUserException):
- supervisor = createSupervisorFromTracy(username="B12361006")
+ with pytest.raises(InvalidUserException):
+ supervisor = createSupervisorFromTracy(username="B12361006")
- with pytest.raises(InvalidUserException):
- supervisor = createSupervisorFromTracy(bnumber="heggens")
+ with pytest.raises(InvalidUserException):
+ supervisor = createSupervisorFromTracy(bnumber="heggens")
- # Test success conditions
- supervisor = createSupervisorFromTracy(username="heggens", bnumber="B12361006")
- assert supervisor.FIRST_NAME == "Scott"
+ # Test success conditions
+ supervisor = createSupervisorFromTracy(username="heggens", bnumber="B12361006")
+ assert supervisor.FIRST_NAME == "Scott"
- supervisor = createSupervisorFromTracy(username="", bnumber="B12361006")
- assert supervisor.FIRST_NAME == "Scott"
+ supervisor = createSupervisorFromTracy(username="", bnumber="B12361006")
+ assert supervisor.FIRST_NAME == "Scott"
- supervisor = createSupervisorFromTracy(bnumber="B12361006")
- assert supervisor.FIRST_NAME == "Scott"
+ supervisor = createSupervisorFromTracy(bnumber="B12361006")
+ assert supervisor.FIRST_NAME == "Scott"
- supervisor = createSupervisorFromTracy(username="heggens")
- assert supervisor.FIRST_NAME == "Scott"
+ supervisor = createSupervisorFromTracy(username="heggens")
+ assert supervisor.FIRST_NAME == "Scott"
- supervisor = createSupervisorFromTracy(username="heggens", bnumber="")
- assert supervisor.FIRST_NAME == "Scott"
+ supervisor = createSupervisorFromTracy(username="heggens", bnumber="")
+ assert supervisor.FIRST_NAME == "Scott"
- supervisor = createSupervisorFromTracy("heggens")
- assert supervisor.FIRST_NAME == "Scott"
+ supervisor = createSupervisorFromTracy("heggens")
+ assert supervisor.FIRST_NAME == "Scott"
- # Tests getting a supervisor from TRACY that does not exist in the supervisor table
- supervisor = createSupervisorFromTracy(username="hoffmanm", bnumber="B1236237")
- assert supervisor.FIRST_NAME == "Megan"
- supervisor.delete_instance()
+ # Tests getting a supervisor from TRACY that does not exist in the supervisor table
+ supervisor = createSupervisorFromTracy(username="hoffmanm", bnumber="B1236237")
+ assert supervisor.FIRST_NAME == "Megan"
+ supervisor.delete_instance()
- supervisor = createSupervisorFromTracy(username="", bnumber="B1236237")
- assert supervisor.FIRST_NAME == "Megan"
- supervisor.delete_instance()
+ supervisor = createSupervisorFromTracy(username="", bnumber="B1236237")
+ assert supervisor.FIRST_NAME == "Megan"
+ supervisor.delete_instance()
- supervisor = createSupervisorFromTracy(username="hoffmanm")
- assert supervisor.FIRST_NAME == "Megan"
- supervisor.delete_instance()
+ supervisor = createSupervisorFromTracy(username="hoffmanm")
+ assert supervisor.FIRST_NAME == "Megan"
+ supervisor.delete_instance()
@pytest.mark.integration
def test_createStudentFromTracy():
- # Test fail conditions
- with pytest.raises(ValueError):
- student = createStudentFromTracy()
+ with app.app_context():
+ # Test fail conditions
+ with pytest.raises(ValueError):
+ student = createStudentFromTracy()
- with pytest.raises(InvalidUserException):
- student = createStudentFromTracy("B00730361")
+ with pytest.raises(InvalidUserException):
+ student = createStudentFromTracy("B00730361")
- with pytest.raises(InvalidUserException):
- student = createStudentFromTracy(username="B00730361")
+ with pytest.raises(InvalidUserException):
+ student = createStudentFromTracy(username="B00730361")
- with pytest.raises(InvalidUserException):
- student = createStudentFromTracy(bnumber="jamalie")
+ with pytest.raises(InvalidUserException):
+ student = createStudentFromTracy(bnumber="jamalie")
- # Test success conditions
- student = createStudentFromTracy(username="jamalie", bnumber="B00730361")
- assert student.FIRST_NAME == "Elaheh"
+ # Test success conditions
+ student = createStudentFromTracy(username="jamalie", bnumber="B00730361")
+ assert student.FIRST_NAME == "Elaheh"
- student = createStudentFromTracy(username="", bnumber="B00730361")
- assert student.FIRST_NAME == "Elaheh"
+ student = createStudentFromTracy(username="", bnumber="B00730361")
+ assert student.FIRST_NAME == "Elaheh"
- student = createStudentFromTracy(bnumber="B00730361")
- assert student.FIRST_NAME == "Elaheh"
+ student = createStudentFromTracy(bnumber="B00730361")
+ assert student.FIRST_NAME == "Elaheh"
- student = createStudentFromTracy(username="jamalie")
- assert student.FIRST_NAME == "Elaheh"
+ student = createStudentFromTracy(username="jamalie")
+ assert student.FIRST_NAME == "Elaheh"
- student = createStudentFromTracy(username="jamalie", bnumber="")
- assert student.FIRST_NAME == "Elaheh"
+ student = createStudentFromTracy(username="jamalie", bnumber="")
+ assert student.FIRST_NAME == "Elaheh"
- student = createStudentFromTracy("jamalie")
- assert student.FIRST_NAME == "Elaheh"
+ student = createStudentFromTracy("jamalie")
+ assert student.FIRST_NAME == "Elaheh"
- # Tests getting a student from TRACY that does not exist in the student table
- student = createStudentFromTracy(username="adamskg", bnumber="B00785329")
- assert student.FIRST_NAME == "Kat"
- student.delete_instance()
+ # Tests getting a student from TRACY that does not exist in the student table
+ student = createStudentFromTracy(username="adamskg", bnumber="B00785329")
+ assert student.FIRST_NAME == "Kat"
+ student.delete_instance()
- student = createStudentFromTracy(username="", bnumber="B00785329")
- assert student.FIRST_NAME == "Kat"
- student.delete_instance()
+ student = createStudentFromTracy(username="", bnumber="B00785329")
+ assert student.FIRST_NAME == "Kat"
+ student.delete_instance()
- student = createStudentFromTracy(username="adamskg")
- assert student.FIRST_NAME == "Kat"
- student.delete_instance()
+ student = createStudentFromTracy(username="adamskg")
+ assert student.FIRST_NAME == "Kat"
+ student.delete_instance()
@pytest.mark.integration
def test_getOrCreateStudentRecord():
- # Test fail conditions
- with pytest.raises(ValueError):
- student = getOrCreateStudentRecord()
+ with app.app_context():
+ # Test fail conditions
+ with pytest.raises(ValueError):
+ student = getOrCreateStudentRecord()
- with pytest.raises(InvalidUserException):
- student = getOrCreateStudentRecord("B00730361")
+ with pytest.raises(InvalidUserException):
+ student = getOrCreateStudentRecord("B00730361")
- with pytest.raises(InvalidUserException):
- student = getOrCreateStudentRecord(username="B00730361")
+ with pytest.raises(InvalidUserException):
+ student = getOrCreateStudentRecord(username="B00730361")
- with pytest.raises(InvalidUserException):
- student = getOrCreateStudentRecord(bnumber="jamalie")
+ with pytest.raises(InvalidUserException):
+ student = getOrCreateStudentRecord(bnumber="jamalie")
- # Test success conditions
- student = getOrCreateStudentRecord(username="jamalie", bnumber="B00730361")
- assert student.FIRST_NAME == "Elaheh"
+ # Test success conditions
+ student = getOrCreateStudentRecord(username="jamalie", bnumber="B00730361")
+ assert student.FIRST_NAME == "Elaheh"
- student = getOrCreateStudentRecord(username="", bnumber="B00730361")
- assert student.FIRST_NAME == "Elaheh"
+ student = getOrCreateStudentRecord(username="", bnumber="B00730361")
+ assert student.FIRST_NAME == "Elaheh"
- student = getOrCreateStudentRecord(bnumber="B00730361")
- assert student.FIRST_NAME == "Elaheh"
+ student = getOrCreateStudentRecord(bnumber="B00730361")
+ assert student.FIRST_NAME == "Elaheh"
- student = getOrCreateStudentRecord(username="jamalie")
- assert student.FIRST_NAME == "Elaheh"
+ student = getOrCreateStudentRecord(username="jamalie")
+ assert student.FIRST_NAME == "Elaheh"
- student = getOrCreateStudentRecord(username="jamalie", bnumber="")
- assert student.FIRST_NAME == "Elaheh"
+ student = getOrCreateStudentRecord(username="jamalie", bnumber="")
+ assert student.FIRST_NAME == "Elaheh"
- student = getOrCreateStudentRecord("jamalie")
- assert student.FIRST_NAME == "Elaheh"
+ student = getOrCreateStudentRecord("jamalie")
+ assert student.FIRST_NAME == "Elaheh"
- # Test getting a student that does not exist in Tracy
- student = getOrCreateStudentRecord(bnumber="B00841417")
- assert student.FIRST_NAME == "Alex"
+ # Test getting a student that does not exist in Tracy
+ student = getOrCreateStudentRecord(bnumber="B00841417")
+ assert student.FIRST_NAME == "Alex"
- student = getOrCreateStudentRecord(username="bryantal")
- assert student.FIRST_NAME == "Alex"
+ student = getOrCreateStudentRecord(username="bryantal")
+ assert student.FIRST_NAME == "Alex"
- # Tests getting a student from TRACY that does not exist in the student table
- student = getOrCreateStudentRecord(username="adamskg", bnumber="B00785329")
- assert student.FIRST_NAME == "Kat"
- student.delete_instance()
+ # Tests getting a student from TRACY that does not exist in the student table
+ student = getOrCreateStudentRecord(username="adamskg", bnumber="B00785329")
+ assert student.FIRST_NAME == "Kat"
+ student.delete_instance()
- student = getOrCreateStudentRecord(username="", bnumber="B00785329")
- assert student.FIRST_NAME == "Kat"
- student.delete_instance()
+ student = getOrCreateStudentRecord(username="", bnumber="B00785329")
+ assert student.FIRST_NAME == "Kat"
+ student.delete_instance()
- student = getOrCreateStudentRecord(username="adamskg")
- assert student.FIRST_NAME == "Kat"
- student.delete_instance()
+ student = getOrCreateStudentRecord(username="adamskg")
+ assert student.FIRST_NAME == "Kat"
+ student.delete_instance()
@pytest.mark.integration
def test_updateSupervisorFromTracy():
- user = User.get(username="heggens")
- assert user.fullName == "Scott Heggen"
+ with app.app_context():
+ user = User.get(username="heggens")
+ assert user.fullName == "Scott Heggen"
- tracyEntry = Tracy().getSupervisorFromID(user.supervisor_id)
- tracyEntry.FIRST_NAME="NotScott"
- tracyEntry.LAST_NAME="NotHeggen"
- db.session.commit()
+ tracyEntry = Tracy().getSupervisorFromID(user.supervisor_id)
+ tracyEntry.FIRST_NAME="NotScott"
+ tracyEntry.LAST_NAME="NotHeggen"
+ db.session.commit()
- user = updateUserFromTracy(user)
- assert user.fullName == "NotScott NotHeggen"
+ user = updateUserFromTracy(user)
+ assert user.fullName == "NotScott NotHeggen"
- dbuser = User.get(username="heggens")
- assert dbuser.fullName == "NotScott NotHeggen", "The object changed but not the database"
+ dbuser = User.get(username="heggens")
+ assert dbuser.fullName == "NotScott NotHeggen", "The object changed but not the database"
- tracyEntry.FIRST_NAME="Scott"
- tracyEntry.LAST_NAME="Heggen"
- db.session.commit()
+ tracyEntry.FIRST_NAME="Scott"
+ tracyEntry.LAST_NAME="Heggen"
+ db.session.commit()
- dbuser.supervisor.legal_name="Scott"
- dbuser.supervisor.LAST_NAME="Heggen"
- dbuser.supervisor.save()
+ dbuser.supervisor.legal_name="Scott"
+ dbuser.supervisor.LAST_NAME="Heggen"
+ dbuser.supervisor.save()
@pytest.mark.integration
def test_updateStudentFromTracy():
- user = User.get(username="jamalie")
- assert user.fullName == "Elaheh Jamali"
+ with app.app_context():
+ user = User.get(username="jamalie")
+ assert user.fullName == "Elaheh Jamali"
- tracyEntry = Tracy().getStudentFromBNumber(user.student_id)
- tracyEntry.FIRST_NAME="NotElaheh"
- tracyEntry.LAST_NAME="NotJamali"
- db.session.commit()
+ tracyEntry = Tracy().getStudentFromBNumber(user.student_id)
+ tracyEntry.FIRST_NAME="NotElaheh"
+ tracyEntry.LAST_NAME="NotJamali"
+ db.session.commit()
- user = updateUserFromTracy(user)
- assert user.fullName == "NotElaheh NotJamali"
+ user = updateUserFromTracy(user)
+ assert user.fullName == "NotElaheh NotJamali"
- dbuser = User.get(username="jamalie")
- assert dbuser.fullName == "NotElaheh NotJamali", "The object changed but not the database"
+ dbuser = User.get(username="jamalie")
+ assert dbuser.fullName == "NotElaheh NotJamali", "The object changed but not the database"
- tracyEntry.FIRST_NAME="Elaheh"
- tracyEntry.LAST_NAME="Jamali"
- db.session.commit()
+ tracyEntry.FIRST_NAME="Elaheh"
+ tracyEntry.LAST_NAME="Jamali"
+ db.session.commit()
- dbuser.student.legal_name="Elaheh"
- dbuser.student.LAST_NAME="Jamali"
- dbuser.student.save()
+ dbuser.student.legal_name="Elaheh"
+ dbuser.student.LAST_NAME="Jamali"
+ dbuser.student.save()
@pytest.mark.integration
def test_updateStudentDBRecords():
with mainDB.atomic() as transaction:
- incorrectStudent = Student.create(ID="B00751360", PIDM=2345, legal_name="NotTyler", LAST_NAME="Parton")
- updateRecordIncorrectly = Supervisor.update(legal_name="NotMadina").where(Supervisor.ID == "B00769499").execute()
- incorrectSupervisor = Supervisor.get(Supervisor.ID == "B00769499")
- updateStudentRecord(incorrectStudent)
- updateSupervisorRecord(incorrectSupervisor)
+ with app.app_context():
+ incorrectStudent = Student.create(ID="B00751360", PIDM=2345, legal_name="NotTyler", LAST_NAME="Parton")
+ updateRecordIncorrectly = Supervisor.update(legal_name="NotMadina").where(Supervisor.ID == "B00769499").execute()
+ incorrectSupervisor = Supervisor.get(Supervisor.ID == "B00769499")
+ updateStudentRecord(incorrectStudent)
+ updateSupervisorRecord(incorrectSupervisor)
- assert incorrectStudent.FIRST_NAME == "Tyler"
- assert incorrectSupervisor.FIRST_NAME == "Madina"
+ assert incorrectStudent.FIRST_NAME == "Tyler"
+ assert incorrectSupervisor.FIRST_NAME == "Madina"
- transaction.rollback()
+ transaction.rollback()
diff --git a/tests/run_tests.sh b/tests/run_tests.sh
index cd7794ce7..0b4ef93ea 100755
--- a/tests/run_tests.sh
+++ b/tests/run_tests.sh
@@ -57,4 +57,7 @@ case "$1" in
no-ui)
no_ui
;;
+ *) # assume it is a file or flag
+ python -m pytest $FLAGS -m "unit or integration" $1
+ ;;
esac