Skip to content

Commit

Permalink
Merge pull request #2 from EvanMeyerEmich/test_files
Browse files Browse the repository at this point in the history
test files
  • Loading branch information
EvanMeyerEmich authored Apr 20, 2024
2 parents 54c7332 + c1fe937 commit d254ea7
Show file tree
Hide file tree
Showing 5 changed files with 150 additions and 11 deletions.
20 changes: 9 additions & 11 deletions main.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
from course import CourseManager, Course
from user import UserManager
from fastapi.security import APIKeyHeader
from pydantic import BaseModel, Field

coursemanager = CourseManager()
usermanager = UserManager()
Expand All @@ -16,18 +17,15 @@
def welcome():
return "Welcome to our miniCanvas!"

@app.post("/courses/{coursecode}")
def create_a_course(coursecode: str,
semester: str,
teacher_id_list: List[int]) -> int:
### an admin should create a course
teacher_list = usermanager.find_users(teacher_id_list)
course_id = coursemanager.create_a_course(coursecode, semester, teacher_list)

course = coursemanager.find_a_course(course_id)
print(str(course.teacher_list[0]))
class CourseCreate(BaseModel):
semester: str
teacher_id_list: List[int] = Field(..., json_schema_extra={'example': [1, 2, 3]})

return course_id
@app.post("/courses/{coursecode}")
def create_a_course(coursecode: str, course_data: CourseCreate):
teacher_list = usermanager.find_users(course_data.teacher_id_list)
course_id = coursemanager.create_a_course(coursecode, course_data.semester, teacher_list)
return {"course_id": course_id}

@app.put("/courses/{courseid}/students")
def import_students(courseid: int,
Expand Down
26 changes: 26 additions & 0 deletions test_assignment.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# test_assignment.py
import pytest
from assignment import Assignment, Submission

# Tests for Assignment
class TestAssignment:
def test_init(self):
assignment = Assignment(1, "4-15-2024", 101)
assert assignment.assignment_id == 1
assert assignment.due_date == "4-15-2024"
assert assignment.course_id == 101
assert assignment.submission_list == []

def test_submit(self):
assignment = Assignment(1, "4-15-2024", 101)
submission = Submission(201, "Essay about Github")
assignment.submit(submission)
assert len(assignment.submission_list) == 1
assert assignment.submission_list[0].student_id == 201

class TestSubmission:
def test_init(self):
submission = Submission(301, "Project report")
assert submission.student_id == 301
assert submission.submission == "Project report"
assert submission.grade == -1.0
41 changes: 41 additions & 0 deletions test_course.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# test_course.py
import pytest
from course import CourseManager, Course

class TestCourseManager:
def test_init(self):
manager = CourseManager()
assert manager.course_list == []
assert manager.counter == 0

def test_generate_id(self):
manager = CourseManager()
id1 = manager.generate_id()
assert id1 == 1
id2 = manager.generate_id()
assert id2 == 2

def test_create_a_course(self):
manager = CourseManager()
course_id = manager.create_a_course("COSC381", "Winter", [1, 2, 3])
assert course_id == 1
assert len(manager.course_list) == 1
course = manager.course_list[0]
assert course.course_code == "COSC381"
assert course.semester == "Winter"
assert course.teacher_list == [1, 2, 3]

def test_find_a_course(self):
manager = CourseManager()
manager.create_a_course("COSC311", "Fall", [4])
found_course = manager.find_a_course(1)
assert found_course.course_code == "COSC311"
assert not manager.find_a_course(2) # Should return None

class TestCourse:
def test_init(self):
course = Course(1, "Math101", "Winter", [5])
assert course.course_id == 1
assert course.course_code == "Math101"
assert course.semester == "Winter"
assert course.teacher_list == [5]
32 changes: 32 additions & 0 deletions test_main.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
from fastapi.testclient import TestClient
from main import app
from unittest.mock import patch
from course import Course

client = TestClient(app)

def test_welcome():
response = client.get("/")
assert response.status_code == 200
assert response.text.strip('"') == "Welcome to our miniCanvas!"

def test_create_a_course():
"""Test creating a course."""
course_data = {
"teacher_id_list": [1, 2, 3],
"semester": "Winter"
}
response = client.post("/courses/COSC381", json=course_data)
assert response.status_code == 200, f"Course should be created successfully, got: {response.text}"
assert "course_id" in response.json(), "Response should include a 'course_id'"

def test_import_students():
with patch('main.coursemanager.find_a_course') as mock_find:
mock_course = Course(course_id=1, course_code='COSC381', semester='Winter', teacher_list=[])
mock_course.import_students = lambda x: None # Mock the method to do nothing
mock_find.return_value = mock_course

student_data = [101, 102, 103]
response = client.put("/courses/1/students", json=student_data)
assert response.status_code == 200, f"Students should be imported successfully, got: {response.text}"
assert mock_course.student_list == [], "Check that no students were actually added in the mock"
42 changes: 42 additions & 0 deletions test_user.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
import pytest
from user import UserManager, User

class TestUserManager:
def test_init(self):
manager = UserManager()
assert manager.user_list == []
assert manager.counter == 0

def test_generate_id(self):
manager = UserManager()
assert manager.generate_id() == 1
assert manager.generate_id() == 2

def test_create_a_user(self):
manager = UserManager()
manager.create_a_user("Alice", "secure123", "student")
assert len(manager.user_list) == 1
assert manager.user_list[0].name == "Alice"
assert manager.user_list[0].password == "secure123"
assert manager.user_list[0].type == "student"

def test_find_users(self):
manager = UserManager()
manager.create_a_user("Bob", "password", "teacher")
manager.create_a_user("Charlie", "12345", "admin")
users = manager.find_users([1, 3])
assert len(users) == 1
assert users[0].name == "Bob"

class TestUser:
def test_init(self):
user = User(1, "Dave", "passwd", "admin")
assert user.user_id == 1
assert user.name == "Dave"
assert user.password == "passwd"
assert user.type == "admin"

def test_str(self):
user = User(2, "Eve", "pass123", "teacher")
assert str(user) == "ID: 2, name: Eve, type: teacher"

0 comments on commit d254ea7

Please sign in to comment.