def test_gen_groups2(self): r = Roster(id=1) s1 = Student(onecard_id=1, first_name='a') s2 = Student(onecard_id=2, first_name='b') s3 = Student(onecard_id=3, first_name='c') s4 = Student(onecard_id=4, first_name='d') s5 = Student(onecard_id=5, first_name='e') l = [s1, s2, s3, s4, s5] r.students.append(s1) r.students.append(s2) r.students.append(s3) r.students.append(s4) r.students.append(s5) dt = util.mdy_to_date('09/15/2019') start_dt = util.mdy_to_date('09/11/2019') gen = GroupGenerator() a = gen.create_groups(r, start_dt, dt, attendance_before_gen=False) assert len(a) == 2 g1 = Group(id=1) g1.members.append(s1) g1.members.append(s2) g2 = Group(id=2) g2.members.append(s3) g2.members.append(s4) g2.members.append(s5) a = gen.create_groups(r, start_dt, dt, attendance_before_gen=False) assert len(a) == 2
def test_post_roster(self): y = 2020 term = 'fall' number = 1 roster = Roster() s1 = Student(first_name='f1', last_name='l1') s2 = Student(first_name='f2', last_name='l2') roster.students.append(s1) roster.students.append(s2) sec = Section(year=y, term=term, number=number, roster=roster) db.session.add(s1) db.session.add(s2) db.session.add(roster) db.session.add(sec) db.session.commit() dt = datetime.datetime.now() mdy = f'{dt.month}/{dt.day}/{dt.year}' students = [{ 'full_name': 'f1 l1', 'status': 'A', 'edited': True }, { 'full_name': 'f2 l2', 'status': 'AO', 'edited': False }] response = self.app.post('/rest/rosters', json={ 'secId': 1, 'date': mdy, 'students': students }) assert 200 == response.status_code
def test_generate_attendance (self): end = datetime.date(year=2019, month=8, day=10) start = end - datetime.timedelta(days=28) incr = datetime.timedelta(days=7) s1 = Student(first_name='Chloe', last_name='Smith') e1 = AttendanceEntry(date=start, value='P') e2 = AttendanceEntry(date=start+incr, value='A') e3 = AttendanceEntry(date=start+incr+incr, value='P') s1.attendance.append(e1) s1.attendance.append(e2) s1.attendance.append(e3) s2 = Student(first_name='Jill', last_name='Barker') e2 = AttendanceEntry(date=start + incr, value='AO') e3 = AttendanceEntry(date=start + incr + incr, value='A') e4 = AttendanceEntry(date=start + incr + incr + incr, value='A') e5 = AttendanceEntry(date=start + incr + incr+ incr+ incr, value='AO') s2.attendance.append(e1) s2.attendance.append(e2) s2.attendance.append(e3) s2.attendance.append(e4) s2.attendance.append(e5) csv_output = AttendanceMgr.generate_attendance([s1, s2], start, end) lines = csv_output.split('\n') header = lines[0] header_items = header.split(',') assert header_items[1:] == ['07/13/2019', '07/20/2019', '07/27/2019', '08/03/2019', '08/10/2019'] assert lines[1] == 'Chloe Smith,,A,,,' assert lines[2] == 'Jill Barker,,AO,A,A,AO'
def test_get_for_date(self): y = 2020 term = 'fall' number = 1 roster = Roster() s1 = Student(first_name='f1', last_name='l1') roster.students.append(s1) sec = Section(year=y, term=term, number=number, roster=roster) dt = datetime.datetime.now() ae = AttendanceEntry(stud_id=s1.id, date=dt, value='A') s1.attendance.append(ae) db.session.add(s1) db.session.add(ae) db.session.add(roster) db.session.add(sec) db.session.commit() response = self.app.get( f'/rest/rosters?year={y}&term={term}&number={number}') assert 200 == response.status_code json_data = response.get_json() assert number == json_data['lab_num'] assert term == json_data['term'] assert y == json_data['year'] studs = json_data['students'] assert studs[0]['first_name'] == 'f1' assert studs[0]['last_name'] == 'l1' assert studs[0]['status'] == 'A'
def test_insert (): fname = request.form.get('fname') lname = request.form.get('lname') stud = Student(first_name=fname, last_name=lname) db.session.add(stud) db.session.commit() id = stud.id return jsonify({'id': id})
def find_or_make_student(onecard): found = True s = Student.query.filter_by(onecard_id=onecard).first() if not s: found = False s = Student(onecard_id=onecard) db.session.add(s) return s, found
def test_create_groups2(self): r = Roster() s1 = Student(onecard_id=1, first_name='a') s2 = Student(onecard_id=2, first_name='b') s3 = Student(onecard_id=3, first_name='c') s4 = Student(onecard_id=4, first_name='d') s5 = Student(onecard_id=5, first_name='e') s6 = Student(onecard_id=6, first_name='f') l = [s1, s2, s3, s4, s5, s6] g1 = Group(id=1) g1.members.append(s1) g1.members.append(s2) g2 = Group(id=2) g2.members.append(s3) g2.members.append(s4) g3 = Group(id=3) g3.members.append(s5) g3.members.append(s6) r.students.append(s1) r.students.append(s2) r.students.append(s3) r.students.append(s4) r.students.append(s5) r.students.append(s6) gen = GroupGenerator() dt = util.mdy_to_date('09/15/2019') start_dt = util.mdy_to_date('09/11/2019') gps = gen.create_groups(r, start_dt, dt, attendance_before_gen=True) assert 3 == len(gps)
def test_post_students_missing(self): y = 2020 term = 'fall' number = 1 roster = Roster() s1 = Student(first_name='f1', last_name='l1') s2 = Student(first_name='f2', last_name='l2') roster.students.append(s1) roster.students.append(s2) sec = Section(year=y, term=term, number=number, roster=roster) db.session.add(s1) db.session.add(s2) db.session.add(roster) db.session.add(sec) db.session.commit() dt = datetime.datetime.now() mdy = f'{dt.month}/{dt.day}/{dt.year}' response = self.app.post('/rest/rosters', json={ 'secId': 1, 'date': mdy }) assert 200 == response.status_code
def test_get(self): y = 2020 term = 'fall' number = 1 roster = Roster() s1 = Student(first_name='f1', last_name='l1') roster.students.append(s1) sec = Section(year=y, term=term, number=number, roster=roster) db.session.add(s1) db.session.add(roster) db.session.add(sec) db.session.commit() response = self.app.get( f'/rest/rosters?year={y}&term={term}&number={number}') assert 200 == response.status_code json_data = response.get_json() assert number == json_data['lab_num'] assert term == json_data['term'] assert y == json_data['year'] studs = json_data['students'] assert studs[0]['first_name'] == 'f1' assert studs[0]['last_name'] == 'l1'