Рефакторинг обработчиков. Часть 3 #21
This commit is contained in:
75
test/api/users/user_my_reviews_tests.erl
Normal file
75
test/api/users/user_my_reviews_tests.erl
Normal file
@@ -0,0 +1,75 @@
|
||||
%%%-------------------------------------------------------------------
|
||||
%%% @doc Тесты клиентского API для получения своих отзывов.
|
||||
%%%
|
||||
%%% Покрывает эндпоинты:
|
||||
%%% GET /v1/user/reviews
|
||||
%%%
|
||||
%%% Проверяет:
|
||||
%%% - получение списка отзывов текущего пользователя
|
||||
%%% - наличие созданного отзыва в ответе
|
||||
%%% - ошибку 401 при отсутствии токена
|
||||
%%% @end
|
||||
%%%-------------------------------------------------------------------
|
||||
-module(user_my_reviews_tests).
|
||||
-include_lib("eunit/include/eunit.hrl").
|
||||
|
||||
-export([test/0]).
|
||||
|
||||
%%%===================================================================
|
||||
%%% Главная тестовая функция
|
||||
%%%===================================================================
|
||||
|
||||
-spec test() -> ok.
|
||||
test() ->
|
||||
ct:pal("=== User My Reviews Tests ==="),
|
||||
OwnerToken = api_test_runner:get_user_token(),
|
||||
ParticipantEmail = api_test_runner:unique_email(<<"myreviewer">>),
|
||||
ParticipantToken = api_test_runner:register_and_login(ParticipantEmail, <<"pass">>),
|
||||
|
||||
% Создаём календарь и событие
|
||||
CalId = api_test_runner:create_calendar(OwnerToken, #{title => <<"MyRevTest">>}),
|
||||
#{<<"id">> := EventId} = api_test_runner:client_post(
|
||||
<<"/v1/calendars/", CalId/binary, "/events">>, OwnerToken,
|
||||
#{title => <<"Event for my review">>,
|
||||
start_time => <<"2026-06-01T10:00:00Z">>,
|
||||
duration => 60}),
|
||||
|
||||
% Бронируем, подтверждаем, оставляем отзыв
|
||||
#{<<"id">> := BookingId} = api_test_runner:client_post(
|
||||
<<"/v1/events/", EventId/binary, "/bookings">>, ParticipantToken, #{}),
|
||||
api_test_runner:client_put(<<"/v1/bookings/", BookingId/binary>>, OwnerToken,
|
||||
#{action => <<"confirm">>}),
|
||||
#{<<"id">> := ReviewId} = api_test_runner:client_post(
|
||||
<<"/v1/reviews">>, ParticipantToken,
|
||||
#{target_type => <<"event">>,
|
||||
target_id => EventId,
|
||||
rating => 4,
|
||||
comment => <<"Nice event!">>}),
|
||||
|
||||
test_get_my_reviews(ParticipantToken, ReviewId),
|
||||
test_get_my_reviews_unauthorized(),
|
||||
|
||||
ct:pal("=== All user my reviews tests passed ==="),
|
||||
ok.
|
||||
|
||||
%%%===================================================================
|
||||
%%% Тестовые функции
|
||||
%%%===================================================================
|
||||
|
||||
%% @doc Успешное получение своих отзывов: 200 OK, содержит отзыв.
|
||||
-spec test_get_my_reviews(binary(), binary()) -> ok.
|
||||
test_get_my_reviews(Token, ExpectedReviewId) ->
|
||||
ct:pal(" TEST: Get my reviews"),
|
||||
Reviews = api_test_runner:client_get(<<"/v1/user/reviews">>, Token),
|
||||
?assert(is_list(Reviews)),
|
||||
?assert(length(Reviews) >= 1),
|
||||
?assert(lists:any(fun(R) -> maps:get(<<"id">>, R) =:= ExpectedReviewId end, Reviews)),
|
||||
ct:pal(" OK: review ~s found in list", [ExpectedReviewId]).
|
||||
|
||||
%% @doc Запрос без токена: 401 Unauthorized.
|
||||
-spec test_get_my_reviews_unauthorized() -> ok.
|
||||
test_get_my_reviews_unauthorized() ->
|
||||
ct:pal(" TEST: Get my reviews without token"),
|
||||
Resp = api_test_runner:client_request(get, <<"/v1/user/reviews">>, <<>>),
|
||||
?assertMatch({ok, 401, _, _}, Resp),
|
||||
ct:pal(" OK: got 401").
|
||||
Reference in New Issue
Block a user