66 lines
3.2 KiB
Python
66 lines
3.2 KiB
Python
from io import StringIO, BytesIO
|
|
import unittest
|
|
|
|
import numpy as np
|
|
import pandas as pd
|
|
from backend import his_io, moodle_io
|
|
|
|
|
|
class TestMoodleio(unittest.TestCase):
|
|
|
|
def check_csv_table(self, table):
|
|
pass
|
|
|
|
def test(self):
|
|
exercise_columns = ['F 1 /4_0', 'F 2 /6_0', 'F 3 /4_0', 'F 4 /4_0',
|
|
'F 5 /4_0', 'F 6 /7_0', 'F 7 /10_0', 'F 8 /5_0', 'F 9 /4_0',
|
|
'F 10 /9_0', 'F 11 /8_0', 'F 12 /8_0']
|
|
|
|
with open('RocketScience-Bewertungen.csv', 'r') as f:
|
|
self.table_str = StringIO(f.read())
|
|
|
|
with self.subTest('read'):
|
|
points_df_moodle = moodle_io.read_csv(self.table_str)
|
|
self.assertIsNotNone(points_df_moodle)
|
|
|
|
|
|
with self.subTest('check_table'):
|
|
self.assertEqual(list(points_df_moodle.columns),
|
|
['E-Mail-Adresse', 'Status', 'Begonnen', 'Beendet', 'Dauer', 'Bewertung/73_0'] + exercise_columns)
|
|
self.assertEqual(points_df_moodle.shape[0], 6)
|
|
self.assertEqual(points_df_moodle.index.names, ['Nachname', 'Vorname'])
|
|
self.assertEqual(list(points_df_moodle.index), [('Hendrix','Jimi'), ('Lukather','Steve') , ('Mayer','John'), ('Page','Jimmy'), ('Townshend','Pete'), ('Van Halen','Eddie')])
|
|
self.assertEqual(list(points_df_moodle[exercise_columns].dtypes), ['float64'] * len(list(points_df_moodle[exercise_columns].dtypes)))
|
|
|
|
with self.subTest('parse_header'):
|
|
max_points, exercises = moodle_io.parse_header(points_df_moodle)
|
|
self.assertEqual(max_points, 73)
|
|
self.assertEqual(exercises, exercise_columns)
|
|
|
|
with self.subTest('merge_tables'):
|
|
table_bytes = None
|
|
with open('5160-RocketScience-WiSe_2023.xlsx', 'rb') as f:
|
|
table_bytes = BytesIO(f.read())
|
|
|
|
students_table = None
|
|
students_table, _ = his_io.read_excel(table_bytes)
|
|
self.assertIsNotNone(students_table)
|
|
|
|
for col in exercise_columns:
|
|
students_table[col] = pd.Series(np.nan, index=students_table.index, dtype='float64')
|
|
|
|
students_table, merged_count = moodle_io.merge_points(students_table, points_df_moodle)
|
|
self.assertEqual(merged_count, 6)
|
|
self.assertEqual(students_table.index.name, 'Matrikelnummer')
|
|
|
|
self.assertEqual(list(students_table.loc[3434343][exercise_columns]), [3.0, 6.0, 2.0, 4.0, 2.5, 4.0, 1.0, 4.0, 0.0, 4.0, 7.0, 2.0])
|
|
self.assertEqual(list(students_table.loc[3535353][exercise_columns]), [3.0, 6.0, 2.0, 2.0, 1.5, 2.0, 3.0, 1.0, 0.0, 2.0, 2.0, 2.0])
|
|
self.assertEqual(list(students_table.loc[3131313][exercise_columns]), [3.0, 6.0, 3.0, 4.0, 3.0, 5.0, 6.0, 5.0, 4.0, 7.0, 8.0, 8.0])
|
|
self.assertEqual(list(students_table.loc[2323232][exercise_columns]), [3.0, 4.0, 1.0, 1.0, 2.0, 0.5, 0.0, 5.0, 0.0, 8.0, 4.0, 2.0])
|
|
self.assertEqual(list(students_table.loc[3737373][exercise_columns]), [2.0, 5.0, 4.0, 2.5, 2.0, 1.5, 1.0, 0.5, 0.0, 2.5, 2.0, 1.0])
|
|
self.assertEqual(list(students_table.loc[3939393][exercise_columns]), [2.0, 5.0, 4.0, 2.5, 2.0, 1.5, 1.0, 0.5, 0.0, 2.5, 2.0, 1.0])
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main() |