feat: profile/settings (rest timer toggle)
Settings infrastructure + one working preference: - New user_settings table (JSON blob per user, so adding future keys needs no migration). - db.get_settings / update_settings helpers (merge semantics). - GET/PUT /api/settings endpoints. - New Settings tab in the Mini App with a rest-timer on/off toggle. Setting is loaded on init and written through on change; the rest-timer display now respects it. Units (kg/lb) and language are intentionally left unwired for now — each needs end-to-end display/input changes and deserve focused passes. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
9636d6870e
commit
6d1de53b2e
6 changed files with 181 additions and 2 deletions
|
|
@ -309,6 +309,40 @@ class TestEvents:
|
|||
assert result == -1
|
||||
|
||||
|
||||
# ── user settings ────────────────────────────────────────────────
|
||||
|
||||
|
||||
class TestSettings:
|
||||
def test_default_empty(self, tmp_db):
|
||||
assert db.get_settings(1) == {}
|
||||
|
||||
def test_update_creates(self, tmp_db):
|
||||
result = db.update_settings(1, {"rest_timer": False})
|
||||
assert result == {"rest_timer": False}
|
||||
assert db.get_settings(1) == {"rest_timer": False}
|
||||
|
||||
def test_update_merges(self, tmp_db):
|
||||
db.update_settings(1, {"rest_timer": False})
|
||||
result = db.update_settings(1, {"units": "lb"})
|
||||
assert result == {"rest_timer": False, "units": "lb"}
|
||||
|
||||
def test_update_overwrites_key(self, tmp_db):
|
||||
db.update_settings(1, {"rest_timer": False})
|
||||
db.update_settings(1, {"rest_timer": True})
|
||||
assert db.get_settings(1)["rest_timer"] is True
|
||||
|
||||
def test_settings_are_per_user(self, tmp_db):
|
||||
db.update_settings(1, {"rest_timer": False})
|
||||
db.update_settings(2, {"rest_timer": True})
|
||||
assert db.get_settings(1) == {"rest_timer": False}
|
||||
assert db.get_settings(2) == {"rest_timer": True}
|
||||
|
||||
def test_patch_must_be_dict(self, tmp_db):
|
||||
import pytest
|
||||
with pytest.raises(TypeError):
|
||||
db.update_settings(1, "not a dict")
|
||||
|
||||
|
||||
# ── update_workout ───────────────────────────────────────────────
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue