generated from nyuoss/sylveon-python-template-repository
-
Notifications
You must be signed in to change notification settings - Fork 4
/
test_extension.py
114 lines (89 loc) · 3.5 KB
/
test_extension.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
import pytest
from datetime import datetime, timedelta
from gradescopeapi.classes.extensions import get_extensions, update_student_extension
def test_get_extensions(create_session):
"""Test fetching extensions for an assignment."""
# create test session
test_session = create_session("instructor")
course_id = "753413"
assignment_id = "4330410"
extensions = get_extensions(test_session, course_id, assignment_id)
assert (
len(extensions) > 0
), f"Got 0 extensions for course {course_id} and assignment {assignment_id}"
def test_valid_change_extension(create_session):
"""Test granting a valid extension for a student."""
# create test session
test_session = create_session("instructor")
course_id = "753413"
assignment_id = "4330410"
user_id = "6515875"
release_date = datetime(2024, 4, 15)
due_date = release_date + timedelta(days=1)
late_due_date = due_date + timedelta(days=1)
result = update_student_extension(
test_session,
course_id,
assignment_id,
user_id,
release_date,
due_date,
late_due_date,
)
assert result, "Failed to update student extension"
def test_invalid_change_extension(create_session):
"""Test granting an invalid extension for a student due to invalid dates."""
# create test session
test_session = create_session("instructor")
course_id = "753413"
assignment_id = "4330410"
user_id = "6515875"
release_date = datetime(2024, 4, 15)
due_date = release_date + timedelta(days=-1)
late_due_date = due_date + timedelta(days=-1)
with pytest.raises(
ValueError,
match="Dates must be in order: release_date <= due_date <= late_due_date",
):
update_student_extension(
test_session,
course_id,
assignment_id,
user_id,
release_date,
due_date,
late_due_date,
)
def test_invalid_user_id(create_session):
"""Test granting an invalid extension for a student due to invalid user ID."""
test_session = create_session("instructor")
course_id = "753413"
assignment_id = "4330410"
invalid_user_id = "9999999" # Assuming this is an invalid ID
# Attempt to change the extension with an invalid user ID
result = update_student_extension(
test_session,
course_id,
assignment_id,
invalid_user_id,
datetime.now(),
datetime.now() + timedelta(days=1),
datetime.now() + timedelta(days=2),
)
# Check the function returns False for non-existent user ID
assert not result, "Function should indicate failure when given an invalid user ID"
def test_invalid_assignment_id(create_session):
"""Test extension handling with an invalid assignment ID."""
test_session = create_session("instructor")
course_id = "753413"
invalid_assignment_id = "9999999"
# Attempt to fetch extensions with an invalid assignment ID
with pytest.raises(RuntimeError, match="Failed to get extensions"):
get_extensions(test_session, course_id, invalid_assignment_id)
def test_invalid_course_id(create_session):
"""Test extension handling with an invalid course ID."""
test_session = create_session("instructor")
invalid_course_id = "9999999"
# Attempt to fetch or modify extensions with an invalid course ID
with pytest.raises(RuntimeError, match="Failed to get extensions"):
get_extensions(test_session, invalid_course_id, "4330410")