108 lines
3.2 KiB
Erlang
108 lines
3.2 KiB
Erlang
-module(logic_notification_tests).
|
|
-include_lib("eunit/include/eunit.hrl").
|
|
-include("records.hrl").
|
|
|
|
setup() ->
|
|
pg:start_link(),
|
|
mnesia:start(),
|
|
mnesia:create_table(booking, [{attributes, record_info(fields, booking)}, {ram_copies, [node()]}]),
|
|
mnesia:create_table(calendar, [{attributes, record_info(fields, calendar)}, {ram_copies, [node()]}]),
|
|
mnesia:create_table(event, [{attributes, record_info(fields, event)}, {ram_copies, [node()]}]),
|
|
ok.
|
|
|
|
cleanup(_) ->
|
|
mnesia:delete_table(event),
|
|
mnesia:delete_table(calendar),
|
|
mnesia:delete_table(booking),
|
|
mnesia:stop(),
|
|
ok.
|
|
|
|
logic_notification_test_() ->
|
|
{foreach,
|
|
fun setup/0,
|
|
fun cleanup/1,
|
|
[
|
|
{"Notify booking", fun test_notify_booking/0},
|
|
{"Notify calendar update", fun test_notify_calendar_update/0},
|
|
{"Notify event update", fun test_notify_event_update/0},
|
|
{"Notify admin", fun test_notify_admin/0}
|
|
]}.
|
|
|
|
create_test_booking() ->
|
|
Booking = #booking{
|
|
id = base64:encode(crypto:strong_rand_bytes(16), #{mode => urlsafe, padding => false}),
|
|
event_id = <<"event123">>,
|
|
user_id = <<"user123">>,
|
|
status = pending,
|
|
confirmed_at = undefined,
|
|
created_at = calendar:universal_time(),
|
|
updated_at = calendar:universal_time()
|
|
},
|
|
mnesia:dirty_write(Booking),
|
|
Booking.
|
|
|
|
create_test_calendar() ->
|
|
Calendar = #calendar{
|
|
id = base64:encode(crypto:strong_rand_bytes(16), #{mode => urlsafe, padding => false}),
|
|
owner_id = <<"owner123">>,
|
|
title = <<"Test Calendar">>,
|
|
description = <<"">>,
|
|
tags = [],
|
|
type = personal,
|
|
confirmation = manual,
|
|
rating_avg = 0.0,
|
|
rating_count = 0,
|
|
status = active,
|
|
created_at = calendar:universal_time(),
|
|
updated_at = calendar:universal_time()
|
|
},
|
|
mnesia:dirty_write(Calendar),
|
|
Calendar.
|
|
|
|
create_test_event() ->
|
|
Event = #event{
|
|
id = base64:encode(crypto:strong_rand_bytes(16), #{mode => urlsafe, padding => false}),
|
|
calendar_id = <<"cal123">>,
|
|
title = <<"Test Event">>,
|
|
description = <<"">>,
|
|
event_type = single,
|
|
start_time = {{2026, 6, 1}, {10, 0, 0}},
|
|
duration = 60,
|
|
recurrence_rule = undefined,
|
|
master_id = undefined,
|
|
is_instance = false,
|
|
specialist_id = undefined,
|
|
location = undefined,
|
|
tags = [],
|
|
capacity = undefined,
|
|
online_link = undefined,
|
|
status = active,
|
|
rating_avg = 0.0,
|
|
rating_count = 0,
|
|
created_at = calendar:universal_time(),
|
|
updated_at = calendar:universal_time()
|
|
},
|
|
mnesia:dirty_write(Event),
|
|
Event.
|
|
|
|
test_notify_booking() ->
|
|
Booking = create_test_booking(),
|
|
UserId = <<"user123">>,
|
|
|
|
% Функция возвращает список пидов (может быть пустым)
|
|
Result = logic_notification:notify_booking(UserId, Booking),
|
|
?assert(is_list(Result)).
|
|
|
|
test_notify_calendar_update() ->
|
|
Calendar = create_test_calendar(),
|
|
Result = logic_notification:notify_calendar_update(Calendar),
|
|
?assert(is_list(Result)).
|
|
|
|
test_notify_event_update() ->
|
|
Event = create_test_event(),
|
|
Result = logic_notification:notify_event_update(Event),
|
|
?assert(is_list(Result)).
|
|
|
|
test_notify_admin() ->
|
|
Result = logic_notification:notify_admin(report_created, #{report_id => <<"rep123">>}),
|
|
?assertEqual(ok, Result). |