test: cleanup follow-up из ревью #124 — симметрия PoolSlotCapacity теста + устранить brittle version-string test #125
Closed
opened 2026-06-08 19:05:01 +03:00 by Toutsu
·
1 comment
No Branch/Tag Specified
main
feature/telegram-game-card-fields
feature/issue-136-wizard-format-location
fix/issue-135-wizard-publish-schedule
fix/issue-133-on-conflict-inference
fix/issue-130-no-limit-complete
fix/issue-129-libgssapi
fix/issue-127-wizard-capacity-club
fix/issue-125-test-cleanup
fix/issue-123-no-limit-wizard
feat/issue-112-wizard-refactor
feat/issue-111-game-creation-wizard
fix/issue-110-showcase-500
feat/issue-110-private-club-showcases
codex/feature-issue-108-portfolio
feat/profile-design-system
codex/fix-public-pages-500
feature/issue-40-master-profiles
feature/issue-39-game-catalog
codex/feature/issue-38-public-club-pages
refactor/issue-37-platform-neutral-handlers
codex/fix-template-topic-release
refactor/issue-36-platform-migration
fix/discord-nullable-telegram-columns
fix/discord-dapper-aot-missing
fix/discord-console-logging-deferred
fix/discord-guildinteractionuser-permissions
fix/discord-count-bigint-cast
fix/discord-slash-commands-guild-context
fix/discord-slash-command-registration
feature/issue-35-identity-linking
fix/discord-oauth-diagnostics
feature/issue-34-discord-oauth-dashboard
test/issue-33-regression-tests
chore/issue-32-discord-compose-wiring
codex/issue-31-platform-messenger-scheduler
feature/discord-reschedule-voting
codex/feature-issue-29-discord-join-leave
feature/issue-28-discord-newsession-listsessions
feature/issue-27-discord-session-batch-renderer
feature/issue-26-discord-netcord-gateway
codex/refactor-issue-25-platform-neutral-join-leave
feature/dashboard-design-refresh
feature/issue-58-health-checks
feature/issue-23-platform-identity
fix/issue-60-add-license
feature/issue-57-postgresql-backup
feature/trivy-security-scan
codex/feature/issue-21-telegram-topics
feature/issue-20-rsvp-reminders
feature/issue-15-session-audit-log
feature/issue-19-batch-join-link
fix/navmenu-mobile-overlap
feature/new-logo
issue-47-navmenu-icon-fix
issue-15-session-audit-log
issue-14-attendance-stats
issue-22-neutral-rendering
codex/ftest-telegram-landing-smoke
feat/player-list-kick-waitlist
codex/co-gm-delegation
v3.10.0
v3.9.9
v3.9.8
v3.9.7
v3.9.6
v3.9.5
v3.9.4
v3.9.3
v3.9.2
v3.9.1
v3.9.0
v3.8.0
v3.7.1
v3.7.0
v3.6.0
v3.5.1
v3.5.0
v3.4.0
v3.3.0
v3.2.0
v3.1.1
v3.1.0
v3.0.10
v3.0.9
v3.0.8
v3.0.7
v3.0.6
v3.0.5
v3.0.4
v3.0.3
v3.0.2
v3.0.1
v3.0.0
v2.8.0
v2.7.2
v2.7.1
v2.7.0
v2.6.0
v2.5.0
v2.4.0
v2.3.0
v2.2.0
v2.1.1
v2.1.0
v2.0.1
v2.0.0
v1.15.1
v1.15.0
v1.14.0
v1.13.0
v1.11.0
v1.10.6
v1.10.5
v1.10.4
v1.10.3
v1.10.2
v1.10.1
v1.10.0
v1.9.9
v1.9.8
v1.9.7
v1.9.6
v1.9.5
v1.9.4
v1.9.3
v1.9.2
v1.9.1
v1.9.0
v1.8.2
v1.8.1
v1.8.0
v1.7.0
v1.6.0
v1.5.0
v1.4.1
v1.4.0
v1.3.0
v1.2.0
v1.1.5
v1.1.4
v1.1.3
v1.1.2
v1.1.1
v1.1.0
v1.0.1
v1.0.0
Labels
Clear labels
area:bot
area:data
area:discord
area:infra
area:miniapp
area:platform
area:shared
area:web
in-progress
next-up
pending-approval
platform:discord
platform:multi
platform:telegram
priority:p0
priority:p0
priority:p1
priority:p2
priority:p3
security
type:bug
type:chore
type:feature
type:refactor
type:test
Telegram bot and worker logic
Database schema, migrations and persistence model
Discord bot service and Discord adapter
Infrastructure, runtime and deployment
Telegram Mini App dashboard
Platform-neutral abstractions and adapter boundaries
Shared domain and rendering contracts
Blazor web dashboard
В работе (issue взят агентом)
Recommended immediate backlog
Ждёт согласования плана решения
Discord-specific behavior or adapter work
Cross-platform or platform-neutral work
Telegram-specific behavior or adapter work
Critical priority
Блокирующий приоритет: задача должна быть выполнена до признания решения production-ready
High priority
Medium priority
Lower priority
Security-sensitive work
Bug fix or corrective work
Maintenance and supporting work
New product functionality
Structural change without direct feature growth
Testing and coverage work
Milestone
No items
No Milestone
Projects
Clear projects
No project
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: Toutsu/GmRelayBot#125
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Замечания из ревью PR #124
В code-review PR #124 subagent нашёл два не-блокирующих замечания, которые стоит поправить follow-up'ом:
1. Асимметрия теста
DiscordWizardStepCapacityRenderTestsСейчас в
tests/GmRelay.Bot.Tests/Discord/Wizard/DiscordWizardStepCapacityRenderTests.csесть customId assertion дляCapacity:…но симметричного теста для
PoolSlotCapacityнет — есть толькоRenderPoolSlotCapacity_ContainsNoLimitButton(проверяет label, не custom-id). Если в будущемDiscordWizardStep.ChoiceButtonCustomIdпоменяет wire-format для PoolSlotCapacity, баг не поймается.2. Brittle version-string test (pre-existing)
tests/GmRelay.Bot.Tests/Web/CampaignTemplatesNavigationTests.cs:15-19:Тест хардкодит строковый литерал версии. На каждом bump (мы уже обновили его в PR #124: 3.9.2 → 3.9.3) нужно помнить обновить ещё и этот тест. Это pre-existing — уязвимость была до PR #124, но PR #124 сделал её острее (показал, что bump без обновления теста ломает CI).
Решение: прочитать версию из
Directory.Build.propsво время теста. Этот файл уже есть в репо, и<Version>3.9.3</Version>— единственный источник правды. Тест должен резолвить версию изDirectory.Build.propsтем же путём, что и продакшн-код.Решение
Оба замечания — мелкие улучшения тестов, не требуют изменений production-кода. Версия issue: 3.9.3 → 3.9.4 (patch, потому что это изменения тестов, не bugfix в проду).
План реализации
Симметрия
PoolSlotCapacity: добавитьRenderPoolSlotCapacity_NoLimitButton_HasChoiceCustomIdForNoLimitвDiscordWizardStepCapacityRenderTests, аналогичный Capacity-тесту, с ожидаемым префиксомwizard:btn:choice:PoolSlotCapacity:no_limit.Brittle version-string test:
FindRepositoryFile(или новой утилите) добавить способ прочитать<Version>...</Version>изDirectory.Build.props.NavMenu_ShouldExposeCurrentProjectVersionпарсит версию из props и проверяет, что вNavMenu.razorестьv{resolvedVersion}.NavMenu.razorреально неправильная версия (рассинхрон сDirectory.Build.props), а не из-за забытого обновления хардкода.Локально прогнать
dotnet test, убедиться что 603/603 (включая обновлённый тест).Создать branch
fix/issue-N-test-cleanup, коммит, PR, CI, review, merge, deploy, release v3.9.4.Аудит
Этот issue не имеет корреляций с другими открытыми issue. Создаётся как follow-up к issue #123 и PR #124.
Реализовано в PR #126 и выпущено в v3.9.4.
Оба замечания закрыты:
Render_NoLimitButton_HasChoiceCustomIdForNoLimit— Theory с двумя кейсами (Capacity + PoolSlotCapacity).NavMenu_ShouldExposeCurrentProjectVersion— читает версию изDirectory.Build.propsчерезXDocument. На следующем bump тест менять не придётся.