Add JSON API support for timezone update (#2806)

* Add JSON API support for timezone update

* Simplify timezone controller to just head :no_content

* Use PUT instead of PATCH in timezone tests to match docs

* Use PATCH instead of PUT for timezone endpoint

Reverts tests to use patch and updates docs heading to PATCH
for consistency.
This commit is contained in:
Rob Zolkos
2026-04-08 08:41:34 -04:00
committed by GitHub
parent 6a71856b3d
commit d08aa11bfb
3 changed files with 28 additions and 0 deletions
@@ -1,6 +1,7 @@
class My::TimezonesController < ApplicationController
def update
Current.user.settings.update!(timezone_name: timezone_param)
head :no_content
end
private
+20
View File
@@ -44,3 +44,23 @@ __Response:__
]
}
```
## `PATCH /my/timezone`
Updates the current user's timezone. This affects how times are displayed in notification emails.
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `timezone_name` | string | Yes | IANA timezone identifier (e.g. `America/New_York`, `Europe/London`, `Asia/Tokyo`) |
__Request:__
```json
{
"timezone_name": "America/New_York"
}
```
__Response:__
Returns `204 No Content` on success.
@@ -12,4 +12,11 @@ class My::TimezonesControllerTest < ActionDispatch::IntegrationTest
patch my_timezone_path, params: { timezone_name: "America/New_York" }
assert_equal time_zone, users(:kevin).reload.timezone
end
test "update as JSON" do
assert_not_equal ActiveSupport::TimeZone["America/Chicago"], users(:kevin).timezone
patch my_timezone_path, params: { timezone_name: "America/Chicago" }, as: :json
assert_response :no_content
assert_equal ActiveSupport::TimeZone["America/Chicago"], users(:kevin).reload.timezone
end
end