Рефакторинг обработчиков. Часть 3 #21
This commit is contained in:
133
test/api/admins/admin_moderation_tests.erl
Normal file
133
test/api/admins/admin_moderation_tests.erl
Normal file
@@ -0,0 +1,133 @@
|
||||
%%%-------------------------------------------------------------------
|
||||
%%% @doc Тесты административного API для модерации сущностей.
|
||||
%%%
|
||||
%%% Покрывает эндпоинты:
|
||||
%%% PUT /v1/admin/:target_type/:id
|
||||
%%%
|
||||
%%% Проверяет:
|
||||
%%% - заморозку/разморозку календаря
|
||||
%%% - заморозку/разморозку события
|
||||
%%% - скрытие/раскрытие отзыва
|
||||
%%% - блокировку/разблокировку пользователя
|
||||
%%% @end
|
||||
%%%-------------------------------------------------------------------
|
||||
-module(admin_moderation_tests).
|
||||
-include_lib("eunit/include/eunit.hrl").
|
||||
|
||||
-export([test/0]).
|
||||
|
||||
%%%===================================================================
|
||||
%%% Главная тестовая функция
|
||||
%%%===================================================================
|
||||
|
||||
-spec test() -> ok.
|
||||
test() ->
|
||||
ct:pal("=== Admin Moderation Tests ==="),
|
||||
Token = api_test_runner:get_admin_token(),
|
||||
UserToken = api_test_runner:get_user_token(),
|
||||
|
||||
% Создаём календарь и событие
|
||||
CalId = api_test_runner:create_calendar(UserToken, #{title => <<"ModTestCal">>}),
|
||||
EventId = api_test_runner:create_event(UserToken, CalId, #{
|
||||
title => <<"Event to moderate">>,
|
||||
start_time => api_test_runner:future_date(),
|
||||
duration => 60
|
||||
}),
|
||||
|
||||
% Создаём пользователя для блокировки
|
||||
UserEmail = api_test_runner:unique_email(<<"moduser">>),
|
||||
UserTok = api_test_runner:register_and_login(UserEmail, <<"pass">>),
|
||||
#{<<"id">> := UserId} = api_test_runner:client_get(<<"/v1/user/me">>, UserTok),
|
||||
|
||||
% Создаём отзыв (требуется участие)
|
||||
#{<<"id">> := BookingId} = api_test_runner:client_post(
|
||||
<<"/v1/events/", EventId/binary, "/bookings">>, UserTok, #{}),
|
||||
api_test_runner:client_put(<<"/v1/bookings/", BookingId/binary>>, UserToken,
|
||||
#{action => <<"confirm">>}),
|
||||
#{<<"id">> := ReviewId} = api_test_runner:client_post(<<"/v1/reviews">>, UserTok, #{
|
||||
target_type => <<"event">>,
|
||||
target_id => EventId,
|
||||
rating => 3,
|
||||
comment => <<"Moderate me">>
|
||||
}),
|
||||
|
||||
% Тесты модерации
|
||||
test_freeze_calendar(Token, CalId),
|
||||
test_unfreeze_calendar(Token, CalId),
|
||||
test_freeze_event(Token, EventId),
|
||||
test_unfreeze_event(Token, EventId),
|
||||
test_hide_review(Token, ReviewId),
|
||||
test_unhide_review(Token, ReviewId),
|
||||
test_block_user(Token, UserId),
|
||||
test_unblock_user(Token, UserId),
|
||||
|
||||
ct:pal("=== All admin moderation tests passed ==="),
|
||||
ok.
|
||||
|
||||
%%%===================================================================
|
||||
%%% Тестовые функции
|
||||
%%%===================================================================
|
||||
|
||||
test_freeze_calendar(Token, Id) ->
|
||||
ct:pal(" TEST: Freeze calendar"),
|
||||
Path = <<"/v1/admin/calendar/", Id/binary>>,
|
||||
Body = #{<<"action">> => <<"freeze">>, <<"reason">> => <<"Test">>},
|
||||
Resp = api_test_runner:admin_put(Path, Token, Body),
|
||||
?assertEqual(<<"frozen">>, maps:get(<<"status">>, Resp)),
|
||||
ct:pal(" OK").
|
||||
|
||||
test_unfreeze_calendar(Token, Id) ->
|
||||
ct:pal(" TEST: Unfreeze calendar"),
|
||||
Path = <<"/v1/admin/calendar/", Id/binary>>,
|
||||
Body = #{<<"action">> => <<"unfreeze">>, <<"reason">> => <<"Test">>},
|
||||
Resp = api_test_runner:admin_put(Path, Token, Body),
|
||||
?assertEqual(<<"active">>, maps:get(<<"status">>, Resp)),
|
||||
ct:pal(" OK").
|
||||
|
||||
test_freeze_event(Token, Id) ->
|
||||
ct:pal(" TEST: Freeze event"),
|
||||
Path = <<"/v1/admin/event/", Id/binary>>,
|
||||
Body = #{<<"action">> => <<"freeze">>, <<"reason">> => <<"Test">>},
|
||||
Resp = api_test_runner:admin_put(Path, Token, Body),
|
||||
?assertEqual(<<"frozen">>, maps:get(<<"status">>, Resp)),
|
||||
ct:pal(" OK").
|
||||
|
||||
test_unfreeze_event(Token, Id) ->
|
||||
ct:pal(" TEST: Unfreeze event"),
|
||||
Path = <<"/v1/admin/event/", Id/binary>>,
|
||||
Body = #{<<"action">> => <<"unfreeze">>, <<"reason">> => <<"Test">>},
|
||||
Resp = api_test_runner:admin_put(Path, Token, Body),
|
||||
?assertEqual(<<"active">>, maps:get(<<"status">>, Resp)),
|
||||
ct:pal(" OK").
|
||||
|
||||
test_hide_review(Token, ReviewId) ->
|
||||
ct:pal(" TEST: Hide review"),
|
||||
Path = <<"/v1/admin/review/", ReviewId/binary>>,
|
||||
Body = #{<<"action">> => <<"hide">>, <<"reason">> => <<"Test">>},
|
||||
Resp = api_test_runner:admin_put(Path, Token, Body),
|
||||
?assertEqual(<<"hidden">>, maps:get(<<"status">>, Resp)),
|
||||
ct:pal(" OK").
|
||||
|
||||
test_unhide_review(Token, ReviewId) ->
|
||||
ct:pal(" TEST: Unhide review"),
|
||||
Path = <<"/v1/admin/review/", ReviewId/binary>>,
|
||||
Body = #{<<"action">> => <<"unhide">>, <<"reason">> => <<"Test">>},
|
||||
Resp = api_test_runner:admin_put(Path, Token, Body),
|
||||
?assertEqual(<<"visible">>, maps:get(<<"status">>, Resp)),
|
||||
ct:pal(" OK").
|
||||
|
||||
test_block_user(Token, UserId) ->
|
||||
ct:pal(" TEST: Block user"),
|
||||
Path = <<"/v1/admin/user/", UserId/binary>>,
|
||||
Body = #{<<"action">> => <<"block">>, <<"reason">> => <<"Test">>},
|
||||
Resp = api_test_runner:admin_put(Path, Token, Body),
|
||||
?assertEqual(<<"blocked">>, maps:get(<<"status">>, Resp)),
|
||||
ct:pal(" OK").
|
||||
|
||||
test_unblock_user(Token, UserId) ->
|
||||
ct:pal(" TEST: Unblock user"),
|
||||
Path = <<"/v1/admin/user/", UserId/binary>>,
|
||||
Body = #{<<"action">> => <<"unblock">>, <<"reason">> => <<"Test">>},
|
||||
Resp = api_test_runner:admin_put(Path, Token, Body),
|
||||
?assertEqual(<<"active">>, maps:get(<<"status">>, Resp)),
|
||||
ct:pal(" OK").
|
||||
Reference in New Issue
Block a user