Stage 6
This commit is contained in:
101
test/core_report_tests.erl
Normal file
101
test/core_report_tests.erl
Normal file
@@ -0,0 +1,101 @@
|
||||
-module(core_report_tests).
|
||||
-include_lib("eunit/include/eunit.hrl").
|
||||
-include("records.hrl").
|
||||
|
||||
setup() ->
|
||||
mnesia:start(),
|
||||
mnesia:create_table(report, [
|
||||
{attributes, record_info(fields, report)},
|
||||
{ram_copies, [node()]}
|
||||
]),
|
||||
ok.
|
||||
|
||||
cleanup(_) ->
|
||||
mnesia:delete_table(report),
|
||||
mnesia:stop(),
|
||||
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}
|
||||
]}.
|
||||
|
||||
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),
|
||||
?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, 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),
|
||||
?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),
|
||||
?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),
|
||||
?assertEqual(reviewed, Updated#report.status),
|
||||
?assertEqual(AdminId, 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, <<"">>),
|
||||
?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)).
|
||||
Reference in New Issue
Block a user