refactor test environment structure

This commit is contained in:
SowinskiBraeden committed 2022-04-11 13:40:10 -07:00
1 parent db41ea7cae
commit f7cc7abaa4
10 files changed
+748 -617

No files matched your search

+1
View File
@@ -0,0 +1 @@
#!/usr/bin/python3
+222
View File
@@ -0,0 +1,222 @@
# Fake sample data
mockCourses = {
"P-CL": {
"name": "Pre-Calculus",
"code": "P-CL",
"credits": 4,
"gradelevel": 11,
"totalrequests": 0,
"studentindexes": [],
"teachers": 3
},
"CL": {
"name": "Calculus",
"code": "CL",
"credits": 4,
"gradelevel": 11,
"totalrequests": 0,
"studentindexes": [],
"teachers": 3
},
"EN-CW": {
"name": "English: Creative Writing",
"code": "EN-CW",
"credits": 4,
"gradelevel": 11,
"totalrequests": 0,
"studentindexes": [],
"teachers": 3
},
"EN-LS": {
"name": "English: Literary Studies",
"code": "EN-LS",
"credits": 4,
"gradelevel": 11,
"totalrequests": 0,
"studentindexes": [],
"teachers": 3
},
"EN-C": {
"name": "English: Compisition",
"code": "EN-C",
"credits": 4,
"gradelevel": 11,
"totalrequests": 0,
"studentindexes": [],
"teachers": 3
},
"S-J": {
"name": "Social Justice",
"code": "S-J",
"credits": 4,
"gradelevel": 11,
"totalrequests": 0,
"studentindexes": [],
"teachers": 3
},
"S-H": {
"name": "History",
"code": "S-H",
"credits": 4,
"gradelevel": 11,
"totalrequests": 0,
"studentindexes": [],
"teachers": 3
},
"S-P": {
"name": "Psychology",
"code": "S-P",
"credits": 4,
"gradelevel": 11,
"totalrequests": 0,
"studentindexes": [],
"teachers": 3
},
"SC-P": {
"name": "Physics",
"code": "SC-P",
"credits": 4,
"gradelevel": 11,
"totalrequests": 0,
"studentindexes": [],
"teachers": 3
},
"SC-B": {
"name": "Biology",
"code": "SC-B",
"credits": 4,
"gradelevel": 11,
"totalrequests": 0,
"studentindexes": [],
"teachers": 3
},
"SC-C": {
"name": "Chemistry",
"code": "SC-C",
"credits": 4,
"gradelevel": 11,
"totalrequests": 0,
"studentindexes": [],
"teachers": 3
},
"SC-ES": {
"name": "Earth Science",
"code": "SC-ES",
"credits": 4,
"gradelevel": 11,
"totalrequests": 0,
"studentindexes": [],
"teachers": 3
},
"M": {
"name": "Music",
"code": "M",
"credits": 4,
"gradelevel": 11,
"totalrequests": 0,
"studentindexes": [],
"teachers": 3
},
"CH": {
"name": "Choir",
"code": "CH",
"credits": 4,
"gradelevel": 11,
"totalrequests": 0,
"studentindexes": [],
"teachers": 3
},
"DN": {
"name": "Dance",
"code": "DN",
"credits": 4,
"gradelevel": 11,
"totalrequests": 0,
"studentindexes": [],
"teachers": 3
},
"CS": {
"name": "Computer Science",
"code": "CS",
"credits": 4,
"gradelevel": 11,
"totalrequests": 0,
"studentindexes": [],
"teachers": 3
},
"GD": {
"name": "Game Development",
"code": "GD",
"credits": 4,
"gradelevel": 11,
"totalrequests": 0,
"studentindexes": [],
"teachers": 3
},
"WW": {
"name": "Woodwork",
"code": "WW",
"credits": 4,
"gradelevel": 11,
"totalrequests": 0,
"studentindexes": [],
"teachers": 3
},
"MW": {
"name": "MetwalWork",
"code": "MW",
"credits": 4,
"gradelevel": 11,
"totalrequests": 0,
"studentindexes": [],
"teachers": 3
},
"M-WP": {
"name": "Math: Workplace",
"code": "M-WP",
"credits": 4,
"gradelevel": 11,
"totalrequests": 0,
"studentindexes": [],
"teachers": 3
},
"M-F": {
"name": "Math: Foundations",
"code": "M-F",
"credits": 4,
"gradelevel": 11,
"totalrequests": 0,
"studentindexes": [],
"teachers": 3
},
"BN": {
"name": "Band",
"code": "BN",
"credits": 4,
"gradelevel": 11,
"totalrequests": 0,
"studentindexes": [],
"teachers": 3
},
"TH": {
"name": "Theatre",
"code": "TH",
"credits": 4,
"gradelevel": 11,
"totalrequests": 0,
"studentindexes": [],
"teachers": 3
},
"VD-P": {
"name": "Video Production",
"code": "VD-P",
"credits": 4,
"gradelevel": 11,
"totalrequests": 0,
"studentindexes": [],
"teachers": 3
}
}
activeCourses = {}
+36
View File
@@ -0,0 +1,36 @@
#!/usr/bin/python3
import json
import csv
realCourses = {}
# Get all courses from real sample data
def getSampleCourses(data_dir, log=False):
with open(data_dir, newline='') as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
exists = False
for course in realCourses:
exists = True if realCourses[course]["CrsNo"] == row["CrsNo"] else False
if exists: break
if not exists:
realCourses[row["CrsNo"]] = {
"CrsNo": row["CrsNo"],
"Requests": 0,
"Description": row["Description"],
"Credits": 4,
"students": []
}
if log:
with open("./output/realCourses.json", "w") as outfile:
json.dump(realCourses, outfile, indent=2)
return realCourses
if __name__ == '__main__':
courseSet = getSampleCourses("../sample_data/course_selection_data.csv")
with open("../output/realCourses.json", "w") as outfile:
json.dump(courseSet, outfile, indent=2)
+101
View File
@@ -0,0 +1,101 @@
#!/usr/bin/python3
import random
import names
import json
import csv
import sys
from util.courses import mockCourses
mockStudents = []
# Generate n students for mock data
def generateMockStudents(n):
for _ in range(n):
newStudent = {
"name": names.get_full_name(),
"requests": [], # list of class codes
"schedule": {
"block1": "",
"block2": "",
"block3": "",
"block4": "",
"block5": "",
"block6": "",
"block7": "",
"block8": ""
}
}
# Get list of random class choices with no repeats
# 8 primary choices, 2 secondary choices
courseSelection = random.sample(range(0, len(mockCourses)), 10)
for courseNum in courseSelection:
newStudent["requests"].append(list(mockCourses)[courseNum])
mockStudents.append(newStudent)
return mockStudents
# sort real sample data into usable dictionary
def getSampleStudents(data_dir, log=False):
with open(data_dir, newline='') as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
exists = False
for student in mockStudents:
exists = True if student["Pupil #"] == row["Pupil #"] else False
if exists: break
alternate = True if row["Alternate?"] == 'TRUE' else False
if exists:
mockStudents[student["studentIndex"]]["requests"].append({
"CrsNo": row["CrsNo"],
"Description": row["Description"],
"alt": alternate
})
else:
newStudent = {
"Pupil #": row["Pupil #"],
"requests": [{
"CrsNo": row["CrsNo"],
"Description": row["Description"],
"alt": alternate
}],
"schedule": {
"block1": "",
"block2": "",
"block3": "",
"block4": "",
"block5": "",
"block6": "",
"block7": "",
"block8": ""
},
"studentIndex": len(mockStudents)
}
mockStudents.append(newStudent)
if log:
with open("./output/students.json", "w") as outfile:
json.dump(mockStudents, outfile, indent=2)
return mockStudents
if __name__ == '__main__':
if len(sys.argv) == 1:
print("Missing argument")
exit()
if sys.argv[1].lower() == 'sample':
studentRequests = getSampleStudents("../sample_data/course_selection_data.csv")
with open("../output/students.json", "w") as outfile:
json.dump(studentRequests, outfile, indent=2)
elif sys.argv[1].lower() == 'mock':
studentRequests = generateMockStudents(400)
with open("../output/students.json", "w") as outfile:
json.dump(studentRequests, outfile, indent=2)
else:
print("Invalid argument")
exit()
print("done")