Skip to content

Commit

Permalink
аutofail_ungraded command fix (#812)
Browse files Browse the repository at this point in the history
* autofail_ungraded test fix

* remove debug output
  • Loading branch information
Dmi4er4 authored Feb 21, 2024
1 parent 492e811 commit 033e3aa
Show file tree
Hide file tree
Showing 5 changed files with 60 additions and 44 deletions.
Empty file.
Empty file.
Original file line number Diff line number Diff line change
Expand Up @@ -27,13 +27,13 @@ def handle(self, *args, **options):
if options['prev_sem']:
term = Semester.objects.get(year=2020, type=SemesterTypes.AUTUMN)
enrollments = enrollments.filter(grade=GradeTypes.NOT_GRADED,
course__semester__lte=term,
course__semester__gt=current_term,
course__semester__gte=term,
course__semester__lt=current_term,
student_profile__branch__site__domain=site)
else:
enrollments = enrollments.filter(grade=GradeTypes.NOT_GRADED,
course__semester=current_term,
student_profile__branch__site__domain=site)
logger.info(f"Change grades of {current_term} enrollments from Not Graded to Unsatisfactory")
logger.info(f"Change grades of {current_term} enrollments from Not Graded to Unsatisfactory")
graded = enrollments.update(grade=GradeTypes.UNSATISFACTORY)
return str(graded)
57 changes: 57 additions & 0 deletions apps/grading/tests/test_commands.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
from io import StringIO

import pytest

from django.core import management

from courses.constants import SemesterTypes
from courses.tests.factories import SemesterFactory
from learning.settings import GradeTypes
from learning.tests.factories import EnrollmentFactory
from core.tests.factories import SiteFactory

@pytest.mark.django_db
@pytest.mark.parametrize("prev_sem_flag, enrollment_2018_grade, enrollment_2020_grade, enrollment_2022_grade,"
"enrollment_2023_grade, current_grade",
[(False, GradeTypes.NOT_GRADED, GradeTypes.NOT_GRADED, GradeTypes.NOT_GRADED,
GradeTypes.NOT_GRADED, GradeTypes.UNSATISFACTORY),
(True, GradeTypes.NOT_GRADED, GradeTypes.UNSATISFACTORY, GradeTypes.UNSATISFACTORY,
GradeTypes.UNSATISFACTORY, GradeTypes.NOT_GRADED)])
def test_autofail_ungraded(settings, prev_sem_flag, enrollment_2018_grade, enrollment_2020_grade, enrollment_2022_grade,
enrollment_2023_grade, current_grade):
settings.LANGUAGE_CODE = 'ru'
term_2018_autumn = SemesterFactory(year=2018, type=SemesterTypes.AUTUMN)
term_2020_autumn = SemesterFactory(year=2020, type=SemesterTypes.AUTUMN)
term_2022_spring = SemesterFactory(year=2022, type=SemesterTypes.SPRING)
term_2023_autumn = SemesterFactory(year=2023, type=SemesterTypes.AUTUMN)
current_term = SemesterFactory.create_current()
site = SiteFactory()
out = StringIO()

enrollment_2018 = EnrollmentFactory(course__semester=term_2018_autumn)
enrollment_2020 = EnrollmentFactory(course__semester=term_2020_autumn)
enrollment_2022 = EnrollmentFactory(course__semester=term_2022_spring)
enrollment_2023 = EnrollmentFactory(course__semester=term_2023_autumn)
current_enrollment = EnrollmentFactory(course__semester=current_term)

assert enrollment_2018.grade == GradeTypes.NOT_GRADED
assert enrollment_2020.grade == GradeTypes.NOT_GRADED
assert enrollment_2022.grade == GradeTypes.NOT_GRADED
assert enrollment_2023.grade == GradeTypes.NOT_GRADED
assert current_enrollment.grade == GradeTypes.NOT_GRADED

management.call_command("autofail_ungraded", site, prev_sem=prev_sem_flag, stdout=out)

assert out.getvalue().strip() != "0"

enrollment_2018.refresh_from_db()
enrollment_2020.refresh_from_db()
enrollment_2022.refresh_from_db()
enrollment_2023.refresh_from_db()
current_enrollment.refresh_from_db()

assert enrollment_2018.grade == enrollment_2018_grade
assert enrollment_2020.grade == enrollment_2020_grade
assert enrollment_2022.grade == enrollment_2022_grade
assert enrollment_2023.grade == enrollment_2023_grade
assert current_enrollment.grade == current_grade
41 changes: 0 additions & 41 deletions apps/projects/tests/test_commands.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,47 +53,6 @@ def test_autograde_projects(settings):
assert project_student.final_grade == ProjectStudent.GRADES.CREDIT


@pytest.mark.django_db
@pytest.mark.parametrize("prev_sem, current_grade, previous_grade, enrollment_2020_grade, enrollment_2018_grade",
[(False, GradeTypes.UNSATISFACTORY, GradeTypes.NOT_GRADED, GradeTypes.NOT_GRADED,
GradeTypes.NOT_GRADED),
(True, GradeTypes.NOT_GRADED, GradeTypes.UNSATISFACTORY, GradeTypes.UNSATISFACTORY,
GradeTypes.NOT_GRADED)])
def test_autofail_ungraded(settings, prev_sem, current_grade, previous_grade, enrollment_2020_grade,
enrollment_2018_grade):
settings.LANGUAGE_CODE = 'ru'
current_term = SemesterFactory.create_current()
previous_term = SemesterFactory.create_prev(current_term)
term_2020_autumn = SemesterFactory(year=2020, type=SemesterTypes.AUTUMN)
term_2018_autumn = SemesterFactory(year=2018, type=SemesterTypes.AUTUMN)
site = SiteFactory()
out = StringIO()

current_enrollment = EnrollmentFactory(course__semester=current_term)
previous_enrollment = EnrollmentFactory(course__semester=previous_term)
enrollment_2020 = EnrollmentFactory(course__semester=term_2020_autumn)
enrollment_2018 = EnrollmentFactory(course__semester=term_2018_autumn)

assert current_enrollment.grade == GradeTypes.NOT_GRADED
assert previous_enrollment.grade == GradeTypes.NOT_GRADED
assert enrollment_2020.grade == GradeTypes.NOT_GRADED
assert enrollment_2018.grade == GradeTypes.NOT_GRADED

management.call_command("autofail_ungraded", site, prev_sem=prev_sem, stdout=out)

assert out.getvalue().strip() != "0"

current_enrollment.refresh_from_db()
previous_enrollment.refresh_from_db()
enrollment_2020.refresh_from_db()
enrollment_2018.refresh_from_db()

assert current_enrollment.grade == current_grade
assert previous_enrollment.grade == previous_grade
assert enrollment_2020.grade == enrollment_2020_grade
assert enrollment_2018.grade == enrollment_2018_grade


@pytest.mark.django_db
def test_projects_notifications(settings, mocker):
settings.LANGUAGE_CODE = 'ru'
Expand Down

0 comments on commit 033e3aa

Please sign in to comment.