aboutsummaryrefslogtreecommitdiff
path: root/src/mock.ts
blob: bbbc771985d04708d4734872d1a1cafcbade502c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
import { Graduation, GraduationChange } from "./graduation-common.ts";
import { Student } from "./student-common.ts";

export function getName() {
	let name = "";

	const params = new URLSearchParams(document.location.search);
	if (params.has("firstname")) name = params.get("firstname")!;
	if (params.has("lastname")) name += " " + params.get("lastname")!;

	return name.trim();
}

globalThis.M = {
	cfg: {
		userId: (function () {
			const name = getName();
			return _fetchStudentsMock().filter((s) => s.name === name)[0].id;
		})(),
		courseId: 1337,
	},
};

const students = [
	new Student(1, "foo bar"),
	new Student(2, "maxi mustermensch"),
	new Student(3, "1"),
	new Student(4, "2"),
	new Student(5, "3"),
	new Student(6, "4"),
	new Student(7, "5"),
	new Student(8, "6"),
];

function _fetchStudentsMock(id?: number, name?: string) {
	return students.filter((s) => {
		return (
			(typeof id === "undefined" || s.id === id) &&
			(typeof name === "undefined" || s.name.includes(name))
		);
	});
}

async function fetchStudentsMock(id?: number, name?: string) {
	return _fetchStudentsMock(id, name);
}

async function fetchSubjectsMock() {
	return ["Mathe", "Deutsch", "Englisch"];
}

function fetchProgressMock(subject: string) {
	return new Promise((resolve) => {
		if (subject === "Mathe") {
			resolve([40, 10, 3]);
		} else if (subject === "Deutsch") {
			resolve([10, 2, 0]);
		} else if (subject === "Englisch") {
			resolve([50, 25, 10]);
		} else {
			resolve([0, 0, 0]);
		}
	});
}

const graduations = new Map();
for (const s of students) {
	switch (s.name) {
		case "foo bar":
			graduations.set(
				s,
				Graduation.from(s, [
					GraduationChange.newGreenPointChange(false, "Gute Arbeit", "Florian Fischer"),
					GraduationChange.newOrangePointChange(true, "", "Florian Fischer"),
				]),
			);
			break;
		case "maxi mustermensch":
			graduations.set(
				s,
				Graduation.from(s, [
					GraduationChange.newGreenPointChange(false, "", "Florian Fischer"),
					GraduationChange.newGreenPointChange(false, "", "Florian Fischer"),
					GraduationChange.newCoachAssignmentChange({ 2: ["Florian Fischer"] }),
				]),
			);
			break;
		case "b b b":
			graduations.set(
				s,
				Graduation.from(s, [GraduationChange.newRedPointChange(false, "", "Florian Fischer")]),
			);
			break;
		case "1":
		case "2":
		case "3":
		case "4":
			graduations.set(
				s,
				Graduation.from(s, [GraduationChange.newGreenPointChange(true, "", "Florian Fischer")]),
			);
			break;
		case "5":
			graduations.set(
				s,
				Graduation.from(s, [
					GraduationChange.newGreenPointChange(true, "", "Florian Fischer"),
					GraduationChange.newGreenPointChange(true, "", "Florian Fischer"),
				]),
			);
			break;
		default:
			graduations.set(s, Graduation.from(s, []));
	}
}

async function fetchGraduationMock(s: Student) {
	return graduations.get(s);
}

async function fetchGraduationChangesMock() {
	return Array.from(graduations.values().map((g) => g.changes)).flat();
}

export {
	fetchStudentsMock,
	fetchSubjectsMock,
	fetchProgressMock,
	fetchGraduationMock,
	fetchGraduationChangesMock,
};