feat(calendar): validate org defaults in calendar.settings
CI / test (push) Successful in 7m30s
CI / deploy-ift (push) Successful in 3m46s
CI / e2e-ift (push) Successful in 1m28s
CI / deploy-stage (push) Successful in 2m11s
CI / e2e-stage (push) Successful in 1m15s

Documented keys default_location, default_duration_minutes,
default_recurrence; unknown keys (week_patterns) passthrough;
invalid known shape returns 400.

Refs EventHub/EventHubBack#63
This commit is contained in:
2026-07-29 22:50:31 +03:00
parent 4c480f1c43
commit 4986baf006
4 changed files with 191 additions and 19 deletions
+16 -2
View File
@@ -62,7 +62,7 @@ test_update_calendar(Token, CalId) ->
ct:pal(" OK").
test_update_calendar_settings(Token, CalId) ->
ct:pal(" TEST: Persist calendar.settings.week_patterns"),
ct:pal(" TEST: Persist calendar.settings week_patterns + org defaults"),
Path = <<"/v1/calendars/", CalId/binary>>,
Settings = #{
<<"week_patterns">> => [
@@ -73,12 +73,26 @@ test_update_calendar_settings(Token, CalId) ->
#{<<"weekday">> => 1, <<"time">> => <<"10:00">>, <<"duration">> => 60, <<"title">> => <<"Open">>}
]
}
]
],
<<"default_location">> => #{
<<"address">> => <<"ул. Пример, 1">>,
<<"lat">> => 55.75,
<<"lon">> => 37.61
},
<<"default_duration_minutes">> => 60,
<<"default_recurrence">> => #{
<<"enabled">> => true,
<<"freq">> => <<"WEEKLY">>,
<<"interval">> => 1
}
},
Updated = api_test_runner:client_put(Path, Token, #{settings => Settings}),
?assertEqual(Settings, maps:get(<<"settings">>, Updated)),
Got = api_test_runner:client_get(Path, Token),
?assertEqual(Settings, maps:get(<<"settings">>, Got)),
Bad = api_test_runner:client_request(put, Path, Token,
jsx:encode(#{settings => #{default_location => #{address => <<"">>}}})),
?assertMatch({ok, 400, _, _}, Bad),
ct:pal(" OK").
test_update_calendar_forbidden(OtherToken, CalId) ->