Rewrite and expand EUnit suite; run unit tests in CI from shared test image. Refs EventHub/EventHubBack#36 [skip ci]

This commit is contained in:
2026-07-17 15:16:46 +03:00
parent 9d2780fef4
commit 4fa802702f
54 changed files with 4240 additions and 2281 deletions
+35 -65
View File
@@ -2,100 +2,70 @@
-include_lib("eunit/include/eunit.hrl").
-include("records.hrl").
-define(TABLES, [report]).
setup() ->
mnesia:start(),
mnesia:create_table(report, [
{attributes, record_info(fields, report)},
{ram_copies, [node()]}
]),
eh_test_support:start_mnesia(),
eh_test_support:ensure_tables(?TABLES),
ok.
cleanup(_) ->
mnesia:delete_table(report),
mnesia:stop(),
eh_test_support:delete_tables(?TABLES),
eh_test_support:stop_mnesia(),
ok.
core_report_test_() ->
{foreach,
fun setup/0,
fun cleanup/1,
[
{"Create report test", fun test_create_report/0},
{"Get report by id test", fun test_get_by_id/0},
{"List reports by target test", fun test_list_by_target/0},
{"List reports by reporter test", fun test_list_by_reporter/0},
{"Update report status test", fun test_update_status/0},
{"Get count by target test", fun test_get_count_by_target/0}
]}.
{foreach, fun setup/0, fun cleanup/1, [
{"Create report test", fun test_create_report/0},
{"Get report by id test", fun test_get_by_id/0},
{"List reports by target test", fun test_list_by_target/0},
{"List reports by reporter test", fun test_list_by_reporter/0},
{"Update report status test", fun test_update_status/0},
{"Get count by target test", fun test_get_count_by_target/0}
]}.
test_create_report() ->
ReporterId = <<"user123">>,
TargetType = event,
TargetId = <<"event123">>,
Reason = <<"Inappropriate content">>,
{ok, Report} = core_report:create(ReporterId, TargetType, TargetId, Reason),
?assertEqual(ReporterId, Report#report.reporter_id),
?assertEqual(TargetType, Report#report.target_type),
?assertEqual(TargetId, Report#report.target_id),
?assertEqual(Reason, Report#report.reason),
{ok, Report} = core_report:create(<<"user123">>, event, <<"event123">>,
<<"Inappropriate content">>),
?assertEqual(<<"user123">>, Report#report.reporter_id),
?assertEqual(event, Report#report.target_type),
?assertEqual(<<"event123">>, Report#report.target_id),
?assertEqual(<<"Inappropriate content">>, Report#report.reason),
?assertEqual(pending, Report#report.status),
?assertEqual(undefined, Report#report.resolved_at),
?assertEqual(undefined, Report#report.resolved_by),
?assert(is_binary(Report#report.id)).
test_get_by_id() ->
ReporterId = <<"user123">>,
{ok, Report} = core_report:create(ReporterId, event, <<"ev1">>, <<"Bad">>),
{ok, Report} = core_report:create(<<"user123">>, event, <<"ev1">>, <<"Bad">>),
{ok, Found} = core_report:get_by_id(Report#report.id),
?assertEqual(Report#report.id, Found#report.id),
{error, not_found} = core_report:get_by_id(<<"nonexistent">>).
test_list_by_target() ->
User1 = <<"user1">>,
User2 = <<"user2">>,
EventId = <<"event123">>,
{ok, _} = core_report:create(User1, event, EventId, <<"Reason 1">>),
{ok, _} = core_report:create(User2, event, EventId, <<"Reason 2">>),
{ok, _} = core_report:create(User1, calendar, <<"cal1">>, <<"Reason 3">>),
{ok, Reports} = core_report:list_by_target(event, EventId),
{ok, _} = core_report:create(<<"user1">>, event, EventId, <<"Reason 1">>),
{ok, _} = core_report:create(<<"user2">>, event, EventId, <<"Reason 2">>),
{ok, _} = core_report:create(<<"user1">>, calendar, <<"cal1">>, <<"Reason 3">>),
Reports = core_report:list_by_target(event, EventId),
?assertEqual(2, length(Reports)).
test_list_by_reporter() ->
User1 = <<"user1">>,
User2 = <<"user2">>,
{ok, _} = core_report:create(User1, event, <<"ev1">>, <<"">>),
{ok, _} = core_report:create(User1, event, <<"ev2">>, <<"">>),
{ok, _} = core_report:create(User2, event, <<"ev3">>, <<"">>),
{ok, Reports} = core_report:list_by_reporter(User1),
{ok, _} = core_report:create(<<"user1">>, event, <<"ev1">>, <<"">>),
{ok, _} = core_report:create(<<"user1">>, event, <<"ev2">>, <<"">>),
{ok, _} = core_report:create(<<"user2">>, event, <<"ev3">>, <<"">>),
Reports = core_report:list_by_reporter(<<"user1">>),
?assertEqual(2, length(Reports)).
test_update_status() ->
ReporterId = <<"user123">>,
AdminId = <<"admin123">>,
{ok, Report} = core_report:create(ReporterId, event, <<"ev1">>, <<"">>),
{ok, Updated} = core_report:update_status(Report#report.id, reviewed, AdminId),
{ok, Report} = core_report:create(<<"user123">>, event, <<"ev1">>, <<"">>),
{ok, Updated} = core_report:update_status(Report#report.id, reviewed, <<"admin123">>),
?assertEqual(reviewed, Updated#report.status),
?assertEqual(AdminId, Updated#report.resolved_by),
?assertEqual(<<"admin123">>, Updated#report.resolved_by),
?assert(Updated#report.resolved_at =/= undefined).
test_get_count_by_target() ->
User1 = <<"user1">>,
User2 = <<"user2">>,
EventId = <<"event123">>,
?assertEqual(0, core_report:get_count_by_target(event, EventId)),
{ok, _} = core_report:create(User1, event, EventId, <<"">>),
{ok, _} = core_report:create(<<"user1">>, event, EventId, <<"">>),
?assertEqual(1, core_report:get_count_by_target(event, EventId)),
{ok, _} = core_report:create(User2, event, EventId, <<"">>),
?assertEqual(2, core_report:get_count_by_target(event, EventId)).
{ok, _} = core_report:create(<<"user2">>, event, EventId, <<"">>),
?assertEqual(2, core_report:get_count_by_target(event, EventId)).