Skip to content

test: cover create_max_link and fragment_ (closes #303) - #357

Open
kshivam4781 wants to merge 1 commit into
K1rL3s:masterfrom
kshivam4781:test/303-create-max-link-coverage
Open

kshivam4781 wants to merge 1 commit into
K1rL3s:masterfrom
kshivam4781:test/303-create-max-link-coverage

Conversation

@kshivam4781

@kshivam4781 kshivam4781 commented Sep 25, 2026 •

Copy link
Copy Markdown

Описание

Issue #303: create_max_link и ветка fragment_ в _format_url не были покрыты тестами (src/maxo/utils/link.py, 94% coverage, непокрытые строки — тело create_max_link и if fragment_:).

Проверил указанное в issue опасение о расхождении поведения urljoin для схемы max:// (её нет в urllib.parse.uses_relative) на непустом path: urljoin('max://link', 'a/b') действительно отбрасывает базу и возвращает 'a/b', в отличие от https:// (urljoin('https://max.ru', 'a/b') → 'https://max.ru/a/b'). Но текущая сигнатура create_max_link(link: str, **kwargs) не принимает *path — она встраивает link прямо в базовый URL (f"max://{link}") и вызывает _format_url без позиционных сегментов пути, поэтому urljoin(url, "", allow_fragments=True) всегда получает пустой relative и это расхождение сейчас недостижимо через публичный API. Учитывая это, выбрал первый вариант из issue («Покрыть тестами») вместо удаления из публичного API — код рабочий и используется без расхождений при текущей сигнатуре.

Closes #303

Тип изменения

  • Документация (опечатки, примеры кода или любые другие обновления документации)
  • Исправление бага (некритическое изменение, которое устраняет проблему)
  • Новый функционал (некритическое изменение, добавляющее функциональность)
  • Критические изменения (исправление или функционал, из-за которого существующая функциональность не будет работать должным образом)
  • Это изменение требует обновления документации

Только тесты, без изменений в src/.

Как это было протестировано?

Добавлен tests/maxo/utils/test_link.py с 6 тестами: create_max_link (базовый вызов, с query, с fragment_, с query+fragment_ вместе) и create_max_http_link с fragment_ (базовый + query+fragment_) — для симметрии между обеими функциями, использующими общий _format_url.

uv run pytest tests/ --cov=maxo.utils.link — 1858 тестов пройдено, покрытие src/maxo/utils/link.py выросло с 94% до 100% (строки 46 и 51 теперь покрыты). ruff check, ruff format --check и mypy — без замечаний.

Тестовая конфигурация:

  • Операционная система: Linux (sandbox)
  • Версия Python: 3.13.13

Контрольный список:

  • Мой код соответствует рекомендациям по стилю этого проекта
  • Я выполнил самопроверку своего кода
  • Я внёс соответствующие изменения в документацию
  • Я добавил тесты, которые доказывают, что моё исправление эффективно или моя функция работает
  • Новые и существующие модульные тесты проходят локально с моими изменениями
  • Код полностью написан мной без использования нейросетей
  • Код частично или полностью написан нейросетями, но прошёл полный контроль со стороны человека

Summary by CodeRabbit

  • Тесты
    • Добавлены проверки формирования ссылок MAX, включая базовый формат, query-параметры и fragment.
    • Проверен порядок компонентов: query-параметры располагаются перед fragment.

@coderabbitai

coderabbitai Bot commented Sep 25, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

Navigate logical layers of code changes, visualize relationships, and explore their blast radius.

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Advanced

Run ID: 0e943e16-138c-423f-9b1f-b59c7bad9469

📥 Commits

Reviewing files that changed from the base of the PR and between d31f41a and d44b054.

📒 Files selected for processing (1)
  • tests/maxo/utils/test_link.py

Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review.


📝 Walkthrough

Walkthrough

Добавлены шесть тестов для create_max_link и create_max_http_link. Они проверяют базовые ссылки, query-параметры, fragment и их сочетание.

Changes

Проверки формирования ссылок

Layer / File(s) Summary
Формирование ссылок и параметры URL
tests/maxo/utils/test_link.py
Добавлены проверки базовых ссылок max:// и https://max.ru/, query-параметров, fragment и их совместного расположения.

Priority: ⬇️ Low

Estimated code review effort: 2 (Simple) | ~8 minutes

Change: Other

Merge Risk: ⚪ Minimal · up to d44b0

The added link-formatting tests present no identified merge-blocking risk.

🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (2 warnings)

Check name Status Explanation Resolution
Linked Issues check ⚠️ Warning По issue #303 добавлены тесты для create_max_link, fragment_ и порядка query/fragment. Но требование проверить случай max:// с непустым path не выполнено. В src/maxo/utils/link.py функция … Добавить автоматический тест для ветки max:// с непустым path. Если проверка через публичный API невозможна из-за сигнатуры create_max_link, сначала определить поддерживаемый API-контракт или проверить соответствующий вызов `_format_url…
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 6 functions across 1 files. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed Заголовок точно описывает основное изменение: добавление тестов для create_max_link и ветки fragment_. Ссылка на issue #303 соответствует содержанию PR.
Description check ✅ Passed Описание содержит контекст issue #303, область изменений, сведения о тестах, тестовую конфигурацию и заполненный контрольный список. Оно также явно указывает, что изменены только тесты. Неотмеченные п…
Out of Scope Changes check ✅ Passed Изменения ограничены шестью тестами в tests/maxo/utils/test_link.py. Тесты проверяют функции и сценарии из issue #303. Изменений вне этой области нет.
Full details: Linked Issues check

Explanation

По issue #303 добавлены тесты для create_max_link, fragment_ и порядка query/fragment. Но требование проверить случай max:// с непустым path не выполнено. В src/maxo/utils/link.py функция _format_url поддерживает *path, а create_max_link не передаёт positional path. Поэтому новые тесты не проверяют это поведение.

Resolution

Добавить автоматический тест для ветки max:// с непустым path. Если проверка через публичный API невозможна из-за сигнатуры create_max_link, сначала определить поддерживаемый API-контракт или проверить соответствующий вызов _format_url; альтернативно удалить create_max_link из публичного API.

  • Fix all pre-merge checks with AI
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create a new PR

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@K1rL3s K1rL3s left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Спасибо! Тесты на maxo.utils.link уже лежат в tests/maxo/utils/test_urls.py. Перенеси, пожалуйста, новые тесты туда, а test_link.py удали, чтобы тесты одного модуля были в одном файле.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

create_max_link и fragment_ не покрыты тестами и не имеют пользователей

2 participants