Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 26 additions & 0 deletions backend/yet_another_calendar/tests/test_netology.py
Original file line number Diff line number Diff line change
Expand Up @@ -176,6 +176,32 @@ async def test_courses_response_schema() -> None:
assert settings.netology_course_name in utmn_program.title


@pytest.mark.asyncio
async def test_get_utmn_program_filtering() -> None:
# Test data with an introductory course that should be ignored
user_data = {
"programs": [
{
"id": 45526,
"title": "Бакалавриат «Разработка ИТ-продуктов и информационных систем»",
"is_profession": True,
},
{
"id": 51839,
"title": "Вводный курс бакалавриата ТюмГУ «Разработка IT-продуктов и информационных систем»",
"is_profession": False,
}
]
}

courses_response = schema.CoursesResponse.model_validate(user_data)
utmn_program = courses_response.get_utmn_program()

assert utmn_program is not None
assert utmn_program.id == 45526
assert "Вводный" not in utmn_program.title


@pytest.mark.asyncio
async def test_lesson_webinar_schema() -> None:
lesson_webinar = schema.LessonWebinar.model_validate({
Expand Down
12 changes: 9 additions & 3 deletions backend/yet_another_calendar/web/api/netology/schema.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,9 @@ class NetologyProgramId(BaseModel):
"""Netology program id."""
id: int
title: str
url_code: str = Field(alias="urlcode")
type: str
url_code: str | None = Field(default=None, alias="urlcode")
type: str | None = Field(default=None)
is_profession: bool | None = None


class CoursesResponse(BaseModel):
Expand All @@ -46,7 +47,12 @@ class CoursesResponse(BaseModel):

def get_utmn_program(self) -> NetologyProgramId | None:
for program in self.programs:
if settings.netology_course_name in program.title:
title_lower = program.title.lower()
if settings.netology_course_name.lower() in title_lower:
if "вводный" in title_lower:
continue
if program.is_profession is False:
continue
return program


Expand Down
Loading