diff --git a/backend/model/student.py b/backend/model/student.py new file mode 100644 index 0000000..8a18aa4 --- /dev/null +++ b/backend/model/student.py @@ -0,0 +1,28 @@ +from __future__ import annotations + +from dataclasses import dataclass, field + + +@dataclass +class Tribe: + name: str + level: str + students: list[Student] = field(default_factory=list) + + def register_student(self, student: Student): + self.students.append(student) + + +@dataclass +class Student: + def __init__(self, id: str, name: str, tribe: Tribe) -> None: + self.id = id + self.name = name + self.tribe = tribe + + self.tribe.register_student(self) + + def __eq__(self, other: object) -> bool: + if isinstance(other, Student): + return self.id == other.id + return False diff --git a/tests/model/test_student.py b/tests/model/test_student.py new file mode 100644 index 0000000..d68720b --- /dev/null +++ b/tests/model/test_student.py @@ -0,0 +1,9 @@ +from backend.model.student import Student, Tribe + + +def test_tribe_register_student(): + tribe = Tribe("foo", "2nd") + student = Student("1", "Bob", tribe) + + assert len(tribe.students) == 1 + assert tribe.students[0] == student