diff options
Diffstat (limited to 'src/mock.js')
| -rw-r--r-- | src/mock.js | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/src/mock.js b/src/mock.js new file mode 100644 index 0000000..91b1525 --- /dev/null +++ b/src/mock.js @@ -0,0 +1,104 @@ +import { Graduation, GraduationChange } from "./graduation-common.js"; +import { Student } from "./student-common.js"; +import { buildGroups } from "./group.js"; + +const students = [ + new Student(1, 'foo bar', 'test'), + new Student(2, 'maxi mustermensch', 'test'), + new Student(3, 'b b b', '5a') +]; + +// Build the groups from our mock students +buildGroups(students); + +function fetchStudentsMock() { + return new Promise((resolve) => { resolve(students); }); +} + +function fetchSubjectsMock() { + return new Promise((resolve) => { + resolve(['Mathe', 'Deutsch', 'Englisch']); + }); +} + +function fetchProgressMock(subject) { + 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 graduationChanges = {}; +for (const s of students) { + switch (s.name) { + case "foo bar": + graduationChanges[s.name] = [ + GraduationChange.newGreenPointChange("Gute Arbeit", "Florian Fischer"), + GraduationChange.newOrangePointChange("", "Florian Fischer"), + ]; + break; + case "maxi mustermensch": + graduationChanges[s.name] = [ + GraduationChange.newGreenPointChange("", "Florian Fischer"), + GraduationChange.newGreenPointChange("", "Florian Fischer"), + new GraduationChange(new Date(), "ObservationStart", "", "Florian Fischer", ""), + ]; + break; + case "b b b": + graduationChanges[s.name] = [ + GraduationChange.newRedPointChange("", "Florian Fischer"), + ]; + } + // Build the student's graduation + Graduation.from(s, graduationChanges[s.name]); +} + +function fetchGraduationMock(s) { + return new Promise((resolve) => { + const changes = graduationChanges[s.name]; + if (!changes) { + resolve(null); + } else { + resolve(Graduation.from(s, changes)); + } + }); +} + +function fetchPublicGraduationMock(s) { + return new Promise((resolve) => { + const changes = graduationChanges[s.name]; + if (!changes) { + resolve(null); + } else { + resolve(Graduation.from(s, changes.filter((change) => change.isPublic()))); + } + }); +} + +function submitGraduationChangeMock(s, c) { + console.assert(s.graduation, "no graduation") + s.graduation.addChange(c); +} + +function submitObservationMock(s, o) { + console.assert(s.graduation, "no graduation") + console.assert(s.graduation.observation, "no observation period") + s.graduation.observation.addObservation(o); +} + +export { + fetchStudentsMock, + fetchSubjectsMock, + fetchProgressMock, + fetchGraduationMock, + fetchPublicGraduationMock, + submitGraduationChangeMock, + submitObservationMock, +}; |
