Coverage for tests/frontend_tests/test_base.py: 44%
103 statements
« prev ^ index » next coverage.py v7.10.6, created at 2025-09-16 19:50 +0000
« prev ^ index » next coverage.py v7.10.6, created at 2025-09-16 19:50 +0000
1import os
2import uuid
3from dotenv import load_dotenv
4import pytest
5from selenium.webdriver.common.by import By
6from passlib.hash import pbkdf2_sha512
7from selenium.webdriver.support.ui import WebDriverWait
8from selenium.webdriver.support import expected_conditions as EC
10# from selenium.webdriver.chrome.service import Service as ChromeService
11# from webdriver_manager.chrome import ChromeDriverManager
12from core import shared
13from core.database_mongo_manager import DatabaseMongoManager
15# sys.path.append(
16# os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
17# )
18os.environ["IS_TEST"] = "True"
20load_dotenv()
22PORT = 5000
25@pytest.fixture()
26def database():
27 """Fixture to create a test database."""
28 DATABASE = DatabaseMongoManager(
29 shared.getenv("MONGO_URI"),
30 shared.getenv("MONGO_DB_TEST", "cs3528_testing"),
31 )
33 yield DATABASE
35 DATABASE.connection.close()
38def test_base_page(chrome_browser, flask_server):
39 chrome_browser.get("http://127.0.0.1:5000/students/login")
40 assert chrome_browser.title == "SkillPilot - Student Login"
43def test_student_login_page(chrome_browser, flask_server):
44 chrome_browser.get("http://127.0.0.1:5000/students/login")
45 assert chrome_browser.title == "SkillPilot - Student Login"
48@pytest.fixture
49def placement_member(database):
50 users = database.get_all("users")
51 database.delete_all("users")
53 user = {
54 "_id": uuid.uuid4().hex,
55 "name": "dummy",
56 "email": "dummy@dummy.com",
57 "password": pbkdf2_sha512.hash("dummy"),
58 }
59 database.insert("users", user)
60 yield user
61 database.delete_all("users")
62 for user in users:
63 database.insert("users", user)
66@pytest.fixture
67def student_member(database):
68 students = database.get_all("students")
69 database.delete_all("students")
70 modules = database.get_all("modules")
71 database.delete_all("modules")
72 skills = database.get_all("skills")
73 database.delete_all("skills")
74 opportunities = database.get_all("opportunities")
75 database.delete_all("opportunities")
76 employers = database.get_all("employers")
77 database.delete_all("employers")
78 courses = database.get_all("courses")
79 database.delete_all("courses")
81 student = {
82 "_id": uuid.uuid4().hex,
83 "first_name": "Olivia",
84 "last_name": "Brown",
85 "email": "dummy@example.com",
86 "student_id": "12345678",
87 "attempted_skills": [],
88 "comments": "",
89 "course": "DU78",
90 "has_car": "false",
91 "modules": ["DUMMY1", "DUMMY2"],
92 "placement_duration": [
93 "6_months",
94 "1_month",
95 "12_months",
96 ],
97 "skills": [
98 "9a5f8be14beb4b138ca5376d295d2abc",
99 "f71a49ed9614404380b34b69083b21cf",
100 ],
101 "preferences": [
102 "c31519139b2e4497912c73b4a1ecf86d",
103 "ea7dd8d0c2394885a78fe761ae64ea1e",
104 ],
105 }
106 database.insert("students", student)
107 module1 = {
108 "module_id": "DUMMY1",
109 "module_name": "DUMMY",
110 "module_description": "DUMMY",
111 }
112 database.insert("modules", module1)
113 module2 = {
114 "module_id": "DUMMY2",
115 "module_name": "DUMMY",
116 "module_description": "DUMMY",
117 }
118 database.insert("modules", module2)
119 skill1 = {
120 "skill_id": "9a5f8be14beb4b138ca5376d295d2abc",
121 "skill_name": "DUMMY2",
122 "skill_description": "DUMMY",
123 }
124 database.insert("skills", skill1)
125 skill2 = {
126 "skill_id": "f71a49ed9614404380b34b69083b21cf",
127 "skill_name": "DUMMY2",
128 "skill_description": "DUMMY",
129 }
130 database.insert("skills", skill2)
131 preference1 = {
132 "_id": "c31519139b2e4497912c73b4a1ecf86d",
133 "title": "DUMMY1",
134 "description": "DUMMY",
135 "url": "DUMMY",
136 "employer_id": "DUMMY",
137 "location": "DUMMY",
138 "modules_required": ["DUMMY1", "DUMMY2"],
139 "courses_required": ["DU78", "DU79"],
140 "spots_available": 1,
141 "duration": "6_months",
142 }
143 database.insert("opportunities", preference1)
144 preference2 = {
145 "_id": "ea7dd8d0c2394885a78fe761ae64ea1e",
146 "title": "DUMMY2",
147 "description": "DUMMY",
148 "url": "DUMMY",
149 "employer_id": "DUMMY",
150 "location": "DUMMY",
151 "modules_required": ["DUMMY1", "DUMMY2"],
152 "courses_required": ["DU78", "DU79"],
153 "spots_available": 1,
154 "duration": "6_months",
155 }
156 database.insert("opportunities", preference2)
157 employer = {
158 "_id": "DUMMY",
159 "company_name": "DUMMY",
160 "email": "DUMMY",
161 }
162 database.insert("employers", employer)
163 course = {
164 "_id": "DU78",
165 "course_id": "DU78",
166 "course_name": "DUMMY",
167 "course_description": "DUMMY",
168 }
169 database.insert("courses", course)
170 yield student
172 database.delete_all("students")
173 database.delete_all("modules")
174 database.delete_all("skills")
175 database.delete_all("opportunities")
176 database.delete_all("employers")
177 database.delete_all("courses")
178 for student in students:
179 database.insert("students", student)
180 for module in modules:
181 database.insert("modules", module)
182 for skill in skills:
183 database.insert("skills", skill)
184 for opportunity in opportunities:
185 database.insert("opportunities", opportunity)
186 for employer in employers:
187 database.insert("employers", employer)
188 for course in courses:
189 database.insert("courses", course)
192@pytest.fixture
193def employer_member(database):
194 employers = database.get_all("employers")
195 database.delete_all("employers")
197 employer = {
198 "_id": uuid.uuid4().hex,
199 "company_name": "dummy",
200 "email": "dummy@dummy.com",
201 }
203 database.insert("employers", employer)
204 yield employer
206 database.delete_all("employers")
207 for employer in employers:
208 database.insert("employers", employer)
211def test_placement_team_login(chrome_browser, flask_server, database, placement_member):
212 chrome_browser.get("http://127.0.0.1:5000/user/login")
213 chrome_browser.find_element(By.ID, "agree-btn").click()
214 chrome_browser.find_element(By.NAME, "email").send_keys("dummy@dummy.com")
215 chrome_browser.find_element(By.NAME, "password").send_keys("dummy")
216 chrome_browser.find_element(By.CSS_SELECTOR, "input[type='submit']").click()
218 WebDriverWait(chrome_browser, 10).until(
219 EC.url_to_be("http://127.0.0.1:5000/user/home")
220 )
222 assert chrome_browser.current_url == "http://127.0.0.1:5000/user/home"