精度ボーナスの上限をテストで固定し定数と式の重複を解消 - #6993
Conversation
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KuvCXLRytCryvexood76po
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KuvCXLRytCryvexood76po
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Essentials Run ID: 📒 Files selected for processing (3)
Included review availability: 0 reviews are currently available. Your included PR review attempts over the past 7 days set your current allowance at 2 reviews per hour. 📝 WalkthroughWalkthrough精度ボーナスの上限定数を非公開化しました。精度ボーナスの境界値テストを更新しました。ETA補助テストは共有関数 Changes精度ボーナス計算
Priority: ⬇️ Low Estimated code review effort: 2 (Simple) | ~10 minutes Change: Refactor Merge Risk: ⚪ Minimal · up to The refactor preserves accuracy-bonus behavior while removing duplicated test logic, so no merge-blocking risk remains. 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
うさぎは跳ねて、共有関数へ Comment |
概要
#6990 で
useRefreshStationから切り出した精度ボーナス(src/utils/accuracyBonus.ts)について、値を固定できていないテストと、リポジトリに残っていた定数・式の重複を解消する。アプリの挙動は変更していない。
変更の種類
変更内容
1. 上限値をテストで固定する
変更前の
accuracyBonus.test.tsは、関数の出力をその関数自身が使っている定数と突き合わせていた。これは上限を 150m から動かしても通るトートロジーで、値を固定できていない。リテラルでアサートし、頭打ちの境界(精度 300m → 150)とその手前(299m → 149.5)も併せて固定した。
定数を
150 → 300に改変すると新しいテストは落ちる(Expected: 150 / Received: 300)。変更前のテストはこの改変で通っていた。2. 定数の公開をやめる
MAX_ACCURACY_BONUSのexportを外し、#6990以前(useRefreshStationのファイル private)と同じ可視性に戻した。上の 1 により外から突き合わせる用途が無くなったため。3. GPX テストの写しを共有関数へ置き換える
src/store/atoms/location.gpxEtaAssist.test.tsが定数の手写し(const MAX_ACCURACY_BONUS = 150;)と式の再実装(Math.min(accuracy * 0.5, MAX_ACCURACY_BONUS))を持っていたので、getAccuracyBonus()の呼び出しへ置き換えた。このテストが使う精度は 30 / 60 / 250 / 600m の正値のみで、
getAccuracyBonusが写しの式と異なるのは null・NaN・非正値のときだけなので、判定結果は同一。これで
MAX_ACCURACY_BONUSはリポジトリ全体でaccuracyBonus.tsの 1 箇所だけになった。テスト
npm run lintが通ることnpm testが通ることnpm run typecheckが通ることnpm run lint(771 ファイル・エラーなし)/npm test(289 suites・3165 tests 全件成功)/npm run typecheck(エラーなし)。location.gpxEtaAssist.test.ts(ETA 補助を有効にしても走行結果が変わらないことを実 GPX で確かめる回帰)も 5 件すべて pass。実機・シミュレータでの動作確認は未実施(差分はテストと定数の可視性のみで、アプリの挙動は変わらないため)。
関連Issue
スクリーンショット(任意)
UI 変更なし: 変更は
src/utils/accuracyBonus.tsと 2 つのテストファイルのみで、画面に影響する差分はない。🤖 Generated with Claude Code
https://claude.ai/code/session_01KuvCXLRytCryvexood76po
Generated by Claude Code
Summary by CodeRabbit