Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Completed assignment - Rajarshi Roy on 20th April as last commit #51

Open
wants to merge 12 commits into
base: main
Choose a base branch
from
Prev Previous commit
Next Next commit
added to increase test coverage
  • Loading branch information
Rajarshi12321 committed Apr 20, 2024
commit e0c6a3ea8d52992e9f3379bb59222a5741061082
70 changes: 30 additions & 40 deletions tests/teachers_test.py
Original file line number Diff line number Diff line change
@@ -1,101 +1,91 @@
def test_get_assignments_teacher_1(client, h_teacher_1):
response = client.get(
'/teacher/assignments',
headers=h_teacher_1
)
response = client.get("/teacher/assignments", headers=h_teacher_1)

assert response.status_code == 200

data = response.json['data']
data = response.json["data"]
for assignment in data:
assert assignment['teacher_id'] == 1
assert assignment["teacher_id"] == 1


def test_get_assignments_teacher_2(client, h_teacher_2):
response = client.get(
'/teacher/assignments',
headers=h_teacher_2
)
response = client.get("/teacher/assignments", headers=h_teacher_2)

assert response.status_code == 200

data = response.json['data']
data = response.json["data"]
for assignment in data:
assert assignment['teacher_id'] == 2
assert assignment['state'] in ['SUBMITTED', 'GRADED']
assert assignment["teacher_id"] == 2
assert assignment["state"] in ["SUBMITTED", "GRADED"]


def test_grade_assignment_cross(client, h_teacher_2):
"""
failure case: assignment 1 was submitted to teacher 1 and not teacher 2
"""
response = client.post(
'/teacher/assignments/grade',
headers=h_teacher_2,
json={
"id": 1,
"grade": "A"
}
"/teacher/assignments/grade", headers=h_teacher_2, json={"id": 1, "grade": "A"}
)

assert response.status_code == 400
data = response.json

assert data['error'] == 'FyleError'
assert data["error"] == "FyleError"


def test_grade_assignment_bad_grade(client, h_teacher_1):
"""
failure case: API should allow only grades available in enum
"""
response = client.post(
'/teacher/assignments/grade',
headers=h_teacher_1,
json={
"id": 1,
"grade": "AB"
}
"/teacher/assignments/grade", headers=h_teacher_1, json={"id": 1, "grade": "AB"}
)

assert response.status_code == 400
data = response.json

assert data['error'] == 'ValidationError'
assert data["error"] == "ValidationError"


def test_grade_assignment_bad_assignment(client, h_teacher_1):
"""
failure case: If an assignment does not exists check and throw 404
"""
response = client.post(
'/teacher/assignments/grade',
"/teacher/assignments/grade",
headers=h_teacher_1,
json={
"id": 100000,
"grade": "A"
}
json={"id": 100000, "grade": "A"},
)

assert response.status_code == 404
data = response.json

assert data['error'] == 'FyleError'
assert data["error"] == "FyleError"


def test_grade_assignment_draft_assignment(client, h_teacher_1):
"""
failure case: only a submitted assignment can be graded
"""
response = client.post(
'/teacher/assignments/grade',
headers=h_teacher_1
, json={
"id": 2,
"grade": "A"
}
"/teacher/assignments/grade", headers=h_teacher_1, json={"id": 2, "grade": "A"}
)

assert response.status_code == 400
data = response.json

assert data['error'] == 'FyleError'
assert data["error"] == "FyleError"


""" Added to increase test coverage """


def test_grade_assignment_cross(client, h_teacher_2):
"""
I have chosen these specific parameters such that this fuction won't change the database
"""
response = client.post(
"/teacher/assignments/grade", headers=h_teacher_2, json={"id": 4, "grade": "B"}
)

assert response.status_code == 200