Coverage for tests/model_tests/test_student.py: 99%
418 statements
« prev ^ index » next coverage.py v7.8.0, created at 2025-05-05 14:02 +0000
« prev ^ index » next coverage.py v7.8.0, created at 2025-05-05 14:02 +0000
1"""Tests for the student model."""
3import os
4import sys
6from dotenv import load_dotenv
7import pytest
10# flake8: noqa: F811
12# Add the root directory to the Python path
13sys.path.append(
14 os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
15)
16from core import shared
17from core.database_mongo_manager import DatabaseMongoManager
19os.environ["IS_TEST"] = "True"
21load_dotenv()
24@pytest.fixture()
25def app():
26 """Fixture to create a test client."""
27 from ...app import app # pylint: disable=import-outside-toplevel
29 return app
32@pytest.fixture()
33def client():
34 """Fixture to create a test client."""
35 from ...app import app # pylint: disable=import-outside-toplevel
37 return app.test_client()
40@pytest.fixture()
41def database():
42 """Fixture to create a test database."""
44 database = DatabaseMongoManager(
45 shared.getenv("MONGO_URI"), shared.getenv("MONGO_DB_TEST", "cs3528_testing")
46 )
47 current_students = database.get_all("students")
48 database.delete_all("students")
49 opportunities = database.get_all("opportunities")
50 database.delete_all("opportunities")
51 yield database
52 database.delete_all("students")
53 for student in current_students:
54 database.insert("students", student)
55 database.delete_all("opportunities")
56 for opportunity in opportunities:
57 database.insert("opportunities", opportunity)
59 # Cleanup code
60 database.connection.close()
63def test_add_student_success(app, database):
64 """Test adding a student successfully."""
65 from students.models import Student
67 database.delete_all_by_field("students", "email", "dummy@dummy.com")
69 student = {
70 "_id": "123",
71 "first_name": "dummy",
72 "last_name": "dummy",
73 "email": "dummy@dummy.com",
74 "student_id": "123",
75 }
77 with app.app_context():
78 with app.test_request_context():
79 response = Student().add_student(student)
80 json_response = response[0].get_json()
81 assert response[1] == 200
82 assert json_response["message"] == "Student added"
84 database.delete_all_by_field("students", "email", "dummy@dummy.com")
85 database.delete_all_by_field("students", "_id", "123")
88def test_add_student_no_id(app, database):
89 """Test adding a student with no id."""
90 from students.models import Student
92 database.delete_all_by_field("students", "email", "dummy@dummy.com")
94 student = {
95 "_id": "123",
96 "first_name": "dummy",
97 "last_name": "dummy",
98 "email": "dummy@dummy.com",
99 "student_id": "123",
100 }
102 database.insert("students", student)
104 with app.app_context():
105 with app.test_request_context():
106 response = Student().add_student(student)
107 json_response = response[0].get_json()
108 assert response[1] == 400
109 assert json_response["error"] == "Student already in database"
112def test_add_student_duplicate(app, database):
113 """Test adding a student with a id."""
114 from students.models import Student
116 database.delete_all_by_field("students", "email", "dummy@dummy.com")
117 student1 = {
118 "_id": "123",
119 "first_name": "dummy1",
120 "last_name": "dummy1",
121 "email": "dummy@dummy.com",
122 "student_id": "123",
123 }
125 database.insert("students", student1)
127 student1 = {
128 "_id": "124",
129 "first_name": "dummy2",
130 "last_name": "dummy2",
131 "email": "dummy@dummy.com",
132 "student_id": "123",
133 }
135 with app.app_context():
136 with app.test_request_context():
137 response = Student().add_student(student1)
138 json_response = response[0].get_json()
139 assert response[1] == 400
140 assert json_response["error"] == "Student already in database"
141 assert database.get_one_by_id("students", "123")["first_name"] == "dummy1"
142 assert (
143 len(database.get_all_by_field("students", "email", "dummy@dummy.com"))
144 == 1
145 )
147 database.delete_all_by_field("students", "email", "dummy@dummy.com")
148 database.delete_all_by_field("students", "_id", "123")
149 database.delete_all_by_field("students", "_id", "124")
152def test_add_student_duplicate_override(app, database):
153 """Test adding a student with a id."""
154 from students.models import Student
156 database.delete_all_by_field("students", "email", "dummy@dummy.com")
158 student1 = {
159 "_id": "123",
160 "first_name": "dummy1",
161 "last_name": "dummy1",
162 "email": "dummy@dummy.com",
163 "student_id": "123",
164 }
166 database.insert("students", student1)
168 student1 = {
169 "_id": "124",
170 "first_name": "dummy2",
171 "last_name": "dummy2",
172 "email": "dummy@dummy.com",
173 "student_id": "123",
174 }
176 with app.app_context():
177 with app.test_request_context():
178 response = Student().add_student(student1, overwrite=True)
179 assert response[1] == 200
180 assert database.get_one_by_id("students", "124")["first_name"] == "dummy2"
181 assert (
182 len(database.get_all_by_field("students", "email", "dummy@dummy.com"))
183 == 1
184 )
186 database.delete_all_by_field("students", "email", "dummy@dummy.com")
187 database.delete_all_by_field("students", "_id", "123")
190def test_get_student_by_id(database):
191 """Test getting a student by id."""
192 from students.models import Student
194 database.delete_all_by_field("students", "email", "dummy@dummy.com")
196 student1 = {
197 "_id": "123",
198 "first_name": "dummy1",
199 "last_name": "dummy1",
200 "email": "dummy@dummy.com",
201 "student_id": "123",
202 }
204 database.insert("students", student1)
206 assert Student().get_student_by_id("123") == student1
208 database.delete_all_by_field("students", "email", "dummy@dummy.com")
209 database.delete_all_by_field("students", "_id", "123")
212def test_get_student_by_id_not_found(database):
213 """Test getting a student by id that does not exist."""
215 from students.models import Student
217 assert Student().get_student_by_id("999") is None
219 database.delete_all_by_field("students", "_id", "999")
222def test_get_all_students(database):
223 """Test getting all students from the database."""
224 from students.models import Student
226 count = len(database.get_all("students"))
228 actual = len(Student().get_students())
230 assert count == actual
232 database.delete_all_by_field("students", "email", "dummy@dummy.com")
233 database.delete_all_by_field("students", "_id", "123")
236def test_get_all_students_empty(database):
237 """Test getting all students from the database when it is empty."""
238 from students.models import Student
240 current_students = database.get_all("students")
241 database.delete_all("students")
243 database.delete_all_by_field("students", "email", "dummy@dummy.com")
245 result = Student().get_students()
247 assert result == []
249 for student in current_students:
250 database.insert("students", student)
253def test_get_student_map(database):
254 """Test getting a student map."""
255 from students.models import Student
257 database.delete_all_by_field("students", "email", "dummy@dummy.com")
259 student1 = {
260 "_id": "123",
261 "first_name": "dummy1",
262 "last_name": "dummy1",
263 "email": "dummy@dummy.com",
264 "student_id": "123",
265 }
267 database.insert("students", student1)
269 student2 = {
270 "_id": "124",
271 "first_name": "dummy2",
272 "last_name": "dummy2",
273 "email": "dummy2@dummy.com",
274 "student_id": "123",
275 }
277 database.insert("students", student2)
279 student_map = Student().get_students_map()
280 assert student_map["123"] == student1
281 assert student_map["124"] == student2
283 database.delete_all_by_field("students", "email", "dummy@dummy.com")
284 database.delete_all_by_field("students", "_id", "123")
285 database.delete_all_by_field("students", "_id", "124")
288def test_get_student_map_empty(database):
289 """Test getting a student map when the database is empty."""
290 from students.models import Student
292 database.delete_all_by_field("students", "email", "dummy@dummy.com")
294 student_map = Student().get_students_map()
295 assert student_map == {}
297 database.delete_all_by_field("students", "email", "dummy@dummy.com")
300def test_get_student_by_uuid(database):
301 """Test getting a student by uuid."""
302 from students.models import Student
304 database.delete_all_by_field("students", "email", "dummy@dummy.com")
306 student1 = {
307 "_id": "123",
308 "first_name": "dummy1",
309 "last_name": "dummy1",
310 "email": "dummy@dummy.com",
311 "student_id": "123",
312 }
314 database.insert("students", student1)
316 assert Student().get_student_by_uuid("123") == student1
318 database.delete_all_by_field("students", "email", "dummy@dummy.com")
319 database.delete_all_by_field("students", "_id", "123")
322def test_get_student_by_uuid_not_found(database):
323 """Test getting a student by uuid that does not exist."""
324 from students.models import Student
326 database.delete_all_by_field("students", "email", "dummy@dummy.com")
328 assert Student().get_student_by_uuid("999") is None
330 database.delete_all_by_field("students", "email", "dummy@dummy.com")
331 database.delete_all_by_field("students", "_id", "999")
334def test_update_student_by_id_success(app, database):
335 """Test updating a student by id successfully."""
336 from students.models import Student
338 database.delete_all_by_field("students", "email", "dummy@dummy.com")
340 student1 = {
341 "_id": "123",
342 "first_name": "dummy1",
343 "last_name": "dummy1",
344 "email": "dummy@dummy.com",
345 "student_id": "123",
346 }
348 database.insert("students", student1)
350 updated_student = {
351 "first_name": "updated_dummy",
352 "last_name": "updated_dummy",
353 "email": "updated_dummy@dummy.com",
354 "student_id": "124",
355 }
357 with app.app_context():
358 response = Student().update_student_by_id("123", updated_student)
359 json_response = response[0].get_json()
360 assert response[1] == 200
361 assert json_response["message"] == "Student updated"
363 database.delete_all_by_field("students", "email", "dummy@dummy.com")
364 database.delete_all_by_field("students", "email", "updated_dummy@dummy.com")
365 database.delete_all_by_field("students", "_id", "123")
368def test_update_student_by_id_not_found(app, database):
369 """Test updating a student by id that does not exist."""
371 from students.models import Student
373 database.delete_all_by_field("students", "email", "dummy@dummy.com")
375 updated_student = {
376 "first_name": "updated_dummy",
377 "last_name": "updated_dummy",
378 "email": "updated_dummy@dummy.com",
379 "student_id": "124",
380 }
382 with app.app_context():
383 response = Student().update_student_by_id("999", updated_student)
384 json_response = response[0].get_json()
385 assert response[1] == 404
386 assert json_response["error"] == "Student not found"
388 database.delete_all_by_field("students", "email", "dummy@dummy.com")
389 database.delete_all_by_field("students", "_id", "123")
390 database.delete_all_by_field("students", "_id", "999")
391 database.delete_all_by_field("students", "email", "updated_dummy@dummy.com")
394def test_update_student_by_uuid_success(app, database):
395 """Test updating a student by uuid successfully."""
397 from students.models import Student
399 database.delete_all_by_field("students", "email", "dummy@dummy.com")
401 student1 = {
402 "_id": "123",
403 "first_name": "dummy1",
404 "last_name": "dummy1",
405 "email": "dummy@dummy.com",
406 "student_id": "123",
407 }
409 database.insert("students", student1)
411 updated_student = {
412 "first_name": "updated_dummy",
413 "last_name": "updated_dummy",
414 "email": "updated_dummy@dummy.com",
415 "student_id": "124",
416 }
418 with app.app_context():
419 response = Student().update_student_by_uuid("123", updated_student)
420 json_response = response[0].get_json()
421 assert response[1] == 200
422 assert json_response["message"] == "Student updated"
424 database.delete_all_by_field("students", "email", "dummy@dummy.com")
425 database.delete_all_by_field("students", "_id", "123")
426 database.delete_all_by_field("students", "_id", "124")
427 database.delete_all_by_field("students", "email", "updated_dummy@dummy.com")
430def test_update_student_by_uuid_not_found(app, database):
431 """Test updating a student by uuid that does not exist."""
433 from students.models import Student
435 database.delete_all_by_field("students", "email", "dummy@dummy.com")
437 updated_student = {
438 "first_name": "updated_dummy",
439 "last_name": "updated_dummy",
440 "email": "updated_dummy@dummy.com",
441 "student_id": "124",
442 }
444 with app.app_context():
445 response = Student().update_student_by_uuid("123", updated_student)
446 json_response = response[0].get_json()
447 assert response[1] == 404
448 assert json_response["error"] == "Student not found"
450 database.delete_all_by_field("students", "email", "dummy@dummy.com")
451 database.delete_all_by_field("students", "_id", "123")
452 database.delete_all_by_field("students", "_id", "124")
453 database.delete_all_by_field("students", "email", "updated_dummy@dummy.com")
456def test_delete_student_by_id(app, database):
457 """Test deleting a student by id."""
459 from students.models import Student
461 database.delete_all_by_field("students", "email", "dummy@dummy.com")
463 student1 = {
464 "_id": "123",
465 "first_name": "dummy1",
466 "last_name": "dummy1",
467 "email": "dummy@dummy.com",
468 "student_id": "123",
469 }
471 database.insert("students", student1)
473 with app.app_context():
474 response = Student().delete_student_by_id("123")
475 json_response = response[0].get_json()
476 assert response[1] == 200
477 assert json_response["message"] == "Student deleted"
479 database.delete_all_by_field("students", "email", "dummy@dummy.com")
480 database.delete_all_by_field("students", "_id", "123")
483def test_delete_student_by_id_opportunities(app, database):
484 """Test deleting a student by id with opportunities."""
486 from students.models import Student
487 from unittest.mock import patch
489 database.delete_all_by_field("students", "email", "dummy@dummy.com")
490 database.delete_all_by_field("modules", "module_id", "123")
491 database.delete_all_by_field("modules", "module_id", "124")
492 database.delete_all_by_field("opportunities", "title", "dummy1")
493 database.delete_all_by_field("opportunities", "title", "dummy2")
495 student1 = {
496 "_id": "123",
497 "first_name": "dummy1",
498 "last_name": "dummy1",
499 "email": "dummy@dummy.com",
500 "student_id": "123",
501 }
503 database.insert("students", student1)
505 opportunity1 = {
506 "_id": "123",
507 "title": "dummy1",
508 "description": "dummy1",
509 "modules_required": ["123"],
510 "courses_required": ["123"],
511 "duration": "1_day",
512 "preferences": ["123"],
513 }
514 database.insert("opportunities", opportunity1)
516 opportunity2 = {
517 "_id": "124",
518 "title": "dummy2",
519 "description": "dummy2",
520 "modules_required": ["123", "124"],
521 "courses_required": ["123"],
522 "duration": "1_week",
523 }
524 database.insert("opportunities", opportunity2)
526 with patch("app.DATABASE_MANAGER.update_one_by_id"):
527 with app.app_context():
528 response = Student().delete_student_by_id("123")
529 json_response = response[0].get_json()
530 assert response[1] == 200
531 assert json_response["message"] == "Student deleted"
533 database.delete_all_by_field("students", "email", "dummy@dummy.com")
534 database.delete_all_by_field("students", "_id", "123")
535 database.delete_all_by_field("opportunities", "title", "dummy1")
536 database.delete_all_by_field("opportunities", "title", "dummy1")
539def test_delete_student_by_id_not_found(app, database):
540 """Test deleting a student by id that does not exist."""
542 from students.models import Student
544 database.delete_all_by_field("students", "email", "dummy@dummy.com")
546 with app.app_context():
547 response = Student().delete_student_by_id("123")
548 json_response = response[0].get_json()
549 assert response[1] == 404
550 assert json_response["error"] == "Student not found"
552 database.delete_all_by_field("students", "email", "dummy@dummy.com")
553 database.delete_all_by_field("students", "_id", "123")
556def test_delete_students(app, database):
557 """Test deleting all students."""
559 from students.models import Student
561 database.delete_all_by_field("students", "email", "dummy@dummy.com")
562 current_students = database.get_all("students")
564 student1 = {
565 "_id": "123",
566 "first_name": "dummy1",
567 "last_name": "dummy1",
568 "email": "dummy@dummy.com",
569 "student_id": "123",
570 }
572 database.insert("students", student1)
574 student2 = {
575 "_id": "124",
576 "first_name": "dummy2",
577 "last_name": "dummy2",
578 "email": "dummy2@dummy.com",
579 "student_id": "124",
580 }
582 database.insert("students", student2)
584 with app.app_context():
585 response = Student().delete_students()
586 json_response = response[0].get_json()
587 assert response[1] == 200
588 assert json_response["message"] == "All students deleted"
589 assert len(database.get_all("students")) == 0
591 database.delete_all_by_field("students", "email", "dummy@dummy.com")
592 database.delete_all_by_field("students", "_id", "123")
593 database.delete_all_by_field("students", "_id", "124")
595 for student in current_students:
596 database.insert("students", student)
599def test_get_student_by_email(app, database):
600 """Test getting a student by email."""
601 from students.models import Student
603 database.delete_all_by_field("students", "email", "dummy@dummy.com")
605 student1 = {
606 "_id": "123",
607 "first_name": "dummy1",
608 "last_name": "dummy1",
609 "email": "dummy@dummy.com",
610 "student_id": "123",
611 }
613 database.insert("students", student1)
615 with app.app_context():
616 response = Student().get_student_by_email("dummy@dummy.com")
617 assert response[1] == 200
619 database.delete_all_by_field("students", "email", "dummy@dummy.com")
620 database.delete_all_by_field("students", "_id", "123")
623def test_get_student_by_email_not_found(app):
624 """Test getting a student by email that does not exist."""
625 from students.models import Student
627 with app.app_context():
628 response = Student().get_student_by_email("dummy@dummy.com")
629 json_response = response[0].get_json()
630 assert response[1] == 404
631 assert json_response["error"] == "Student not found"
634def test_import_from_xlsx_valid(app, database):
635 """Test importing students from a valid xlsx file."""
636 from students.models import Student
638 database.delete_all_by_field("students", "email", "dummy@dummy.com")
640 with app.app_context():
641 with app.test_request_context():
642 with open("tests/data/valid_students.xlsx", "rb") as f:
643 response = Student().import_from_xlsx("dummy.com", f)
644 json_response = response[0].get_json()
645 assert response[1] == 200
646 assert json_response["message"] == "27 students imported"
648 students = database.get_all("students")
649 assert len(students) == 27
651 database.delete_all("students")
654def test_import_from_xlsx_invalid_email(app, database):
655 """Test importing students from a xlsx file with invalid email."""
657 from students.models import Student
659 database.delete_all_by_field("students", "email", "dummy@dummy.com")
661 with app.app_context():
662 with open("tests/data/Invalid_students_email.xlsx", "rb") as f:
663 response = Student().import_from_xlsx("dummy.com", f)
664 json_response = response[0].get_json()
665 assert json_response["error"] == "Invalid student dummy1, dummy1"
666 assert response[1] == 400
668 students = database.get_all_by_field("students", "email", "dummy@dummy.com")
669 assert len(students) == 0
671 database.delete_all_by_field("students", "email", "dummy@dummy.com")
674def test_import_from_xlsx_invalid_student_id(app, database):
675 """Test importing students from a xlsx file with invalid student id."""
676 from students.models import Student
678 database.delete_all_by_field("students", "email", "dummy@dummy.com")
680 with app.app_context():
681 with open("tests/data/Invalid_students_Id.xlsx", "rb") as f:
682 response = Student().import_from_xlsx("dummy.com", f)
683 json_response = response[0].get_json()
684 assert json_response["error"] == "Invalid student dummy1, dummy1"
685 assert response[1] == 400
687 students = database.get_all_by_field("students", "email", "dummy@dummy.com")
688 assert len(students) == 0
690 database.delete_all_by_field("students", "email", "dummy@dummy.com")
693def test_import_from_wrong_format(app, database):
694 """Test importing students from a xlsx file with wrong format."""
695 from students.models import Student
697 database.delete_all_by_field("students", "email", "dummy@dummy.com")
699 with app.app_context():
700 with open("tests/data/Invalid_doc_type.docx", "rb") as f:
702 response = Student().import_from_xlsx("dummy.com", f)
704 assert response[1] == 400
705 assert (
706 response[0].get_json()["error"]
707 == "Failed to read file: Invalid file type. Please upload a .xlsx file."
708 )
710 students = database.get_all_by_field("students", "email", "dummy@dummy.com")
711 assert len(students) == 0
713 database.delete_all_by_field("students", "email", "dummy@dummy.com")
716def test_student_login(app, database):
717 """Test student login"""
718 from students.models import Student
720 database.delete_all_by_field("students", "email", "dummy@dummy.com")
722 student1 = {
723 "_id": "123",
724 "first_name": "dummy1",
725 "last_name": "dummy1",
726 "email": "dummy@dummy.com",
727 "student_id": "123",
728 }
730 database.insert("students", student1)
732 with app.app_context():
733 with app.test_request_context():
734 response = Student().student_login(student1["student_id"])
735 json_response = response[0].get_json()
736 assert response[1] == 200
737 assert json_response["message"] == "OTP sent"
739 database.delete_all_by_field("students", "email", "dummy@dummy.com")
740 database.delete_all_by_field("students", "_id", "123")
743def test_student_login_non_existant(app, database):
744 """Test student login with a non-existant student"""
745 from students.models import Student
747 database.delete_all_by_field("students", "email", "dummy@dummy.com")
749 student1 = {
750 "_id": "123",
751 "first_name": "dummy1",
752 "last_name": "dummy1",
753 "email": "dummy@dummy.com",
754 "student_id": "123",
755 }
756 with app.app_context():
757 with app.test_request_context():
758 response = Student().student_login(student1["student_id"])
759 json_response = response[0].get_json()
760 assert response[1] == 404
761 assert json_response["error"] == "Student not found"
764def test_rank_preferences(app, database):
765 """Test ranking preferences"""
766 from students.models import Student
768 database.delete_all_by_field("students", "email", "dummy@dummy.com")
770 student1 = {
771 "_id": "123",
772 "first_name": "dummy1",
773 "last_name": "dummy1",
774 "email": "dummy@dummy.com",
775 "student_id": "123",
776 }
778 database.insert("students", student1)
780 with app.app_context():
781 with app.test_request_context():
782 response = Student().rank_preferences(
783 student1["student_id"], ["1", "2", "3"]
784 )
785 json_response = response[0].get_json()
786 assert response[1] == 200
787 assert json_response["message"] == "Preferences updated"
790def test_rank_preferences_invalid_student(app, database):
791 """Test ranking preferences with an invalid student"""
792 from students.models import Student
794 database.delete_all_by_field("students", "email", "dummy@dummy.com")
796 with app.app_context():
797 with app.test_request_context():
798 response = Student().rank_preferences(["student_id"], ["1", "2", "3"])
799 json_response = response[0].get_json()
800 assert json_response["error"] == "Student not found"
801 assert response[1] == 404
804def test_get_opportunities_by_student(app, database):
805 """Test getting opportunities by student"""
806 from students.models import Student
808 database.delete_all_by_field("students", "email", "dummy@dummy.com")
809 database.delete_all_by_field("modules", "module_id", "123")
810 database.delete_all_by_field("modules", "module_id", "124")
811 database.delete_all_by_field("courses", "course_id", "123")
812 database.delete_all_by_field("opportunities", "title", "dummy1")
813 database.delete_all_by_field("opportunities", "title", "dummy2")
814 database.delete_all_by_field("opportunities", "title", "dummy3")
816 module1 = {
817 "_id": "123",
818 "module_id": "123",
819 "module_name": "dummy1",
820 "module_description": "dummy1",
821 }
822 database.insert("modules", module1)
823 module2 = {
824 "_id": "124",
825 "module_id": "124",
826 "module_name": "dummy2",
827 "module_description": "dummy2",
828 }
829 database.insert("modules", module2)
831 course = {
832 "_id": "123",
833 "course_id": "123",
834 "course_name": "dummy1",
835 "course_description": "dummy1",
836 }
837 database.insert("courses", course)
839 opportunity1 = {
840 "_id": "123",
841 "title": "dummy1",
842 "description": "dummy1",
843 "modules_required": ["123"],
844 "courses_required": ["123"],
845 "duration": "1_day",
846 }
847 database.insert("opportunities", opportunity1)
849 opportunity2 = {
850 "_id": "124",
851 "title": "dummy2",
852 "description": "dummy2",
853 "modules_required": ["123", "124"],
854 "courses_required": ["123"],
855 "duration": "1_week",
856 }
857 database.insert("opportunities", opportunity2)
859 opportunity3 = {
860 "_id": "125",
861 "title": "dummy3",
862 "description": "dummy3",
863 "modules_required": ["123", "124"],
864 "courses_required": ["123"],
865 "duration": "1_month",
866 }
868 database.insert("opportunities", opportunity3)
870 student1 = {
871 "_id": "123",
872 "first_name": "dummy1",
873 "last_name": "dummy1",
874 "email": "dummy@dummy.com",
875 "student_id": "123",
876 "modules": ["123", "124"],
877 "course": "123",
878 "placement_duration": ["1_day", "1_week"],
879 }
881 database.insert("students", student1)
883 with app.app_context():
884 with app.test_request_context():
885 response = Student().get_opportunities_by_student(student1["student_id"])
886 assert len(response) == 2
888 database.delete_all_by_field("students", "email", "dummy@dummy.com")
889 database.delete_all_by_field("modules", "module_id", "123")
890 database.delete_all_by_field("modules", "module_id", "124")
891 database.delete_all_by_field("courses", "course_id", "123")
892 database.delete_all_by_field("opportunities", "title", "dummy1")
893 database.delete_all_by_field("opportunities", "title", "dummy2")
894 database.delete_all_by_field("opportunities", "title", "dummy3")
897def test_get_opportunities_by_student_invalid(app, database):
898 """Test getting opportunities by student with an invalid student"""
899 from students.models import Student
901 database.delete_all_by_field("students", "email", "dummy@dummy.com")
903 with app.app_context():
904 with app.test_request_context():
905 response = Student().get_opportunities_by_student(["student_id"])
906 json_response = response[0].get_json()
907 assert json_response["error"] == "Student not found"
908 assert response[1] == 404