aboutsummaryrefslogtreecommitdiff
path: root/src/mock.ts
blob: 14d408d2f4d09167b76f46f98fcf395376716c70 (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
import { Graduation, GraduationChange } from "./graduation-common.ts";
import { Student } from "./student-common.ts";

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"),
];

async 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 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,
};