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:
@@ -2,32 +2,16 @@
|
||||
-include_lib("eunit/include/eunit.hrl").
|
||||
-include("records.hrl").
|
||||
|
||||
-define(TABLES, [user, calendar, event, recurrence_exception]).
|
||||
|
||||
setup() ->
|
||||
mnesia:start(),
|
||||
mnesia:create_table(user, [
|
||||
{attributes, record_info(fields, user)},
|
||||
{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()]}
|
||||
]),
|
||||
mnesia:create_table(recurrence_exception, [
|
||||
{attributes, record_info(fields, recurrence_exception)},
|
||||
{ram_copies, [node()]}
|
||||
]),
|
||||
eh_test_support:start_mnesia(),
|
||||
eh_test_support:ensure_tables(?TABLES),
|
||||
ok.
|
||||
|
||||
cleanup(_) ->
|
||||
mnesia:delete_table(recurrence_exception),
|
||||
mnesia:delete_table(event),
|
||||
mnesia:delete_table(calendar),
|
||||
mnesia:delete_table(user),
|
||||
mnesia:stop(),
|
||||
eh_test_support:delete_tables(?TABLES),
|
||||
eh_test_support:stop_mnesia(),
|
||||
ok.
|
||||
|
||||
logic_event_recurring_test_() ->
|
||||
@@ -59,10 +43,14 @@ create_test_user_and_calendar() ->
|
||||
{ok, Calendar} = logic_calendar:create_calendar(UserId, <<"Test Calendar">>, <<"">>, manual),
|
||||
{UserId, Calendar#calendar.id}.
|
||||
|
||||
add_days(DateTime, Days) ->
|
||||
Sec = calendar:datetime_to_gregorian_seconds(DateTime) + Days * 86400,
|
||||
calendar:gregorian_seconds_to_datetime(Sec).
|
||||
|
||||
test_create_recurring_event() ->
|
||||
{UserId, CalendarId} = create_test_user_and_calendar(),
|
||||
Title = <<"Weekly Meeting">>,
|
||||
StartTime = {{2026, 6, 1}, {10, 0, 0}},
|
||||
StartTime = eh_test_support:future_start(),
|
||||
Duration = 60,
|
||||
RRule = #{<<"freq">> => <<"WEEKLY">>, <<"interval">> => 1},
|
||||
|
||||
@@ -75,7 +63,7 @@ test_create_recurring_event() ->
|
||||
test_create_recurring_invalid() ->
|
||||
{UserId, CalendarId} = create_test_user_and_calendar(),
|
||||
Title = <<"Invalid">>,
|
||||
StartTime = {{2026, 6, 1}, {10, 0, 0}},
|
||||
StartTime = eh_test_support:future_start(),
|
||||
Duration = 60,
|
||||
InvalidRRule = #{<<"freq">> => <<"YEARLY">>, <<"interval">> => 1},
|
||||
|
||||
@@ -85,43 +73,43 @@ test_create_recurring_invalid() ->
|
||||
|
||||
test_get_occurrences() ->
|
||||
{UserId, CalendarId} = create_test_user_and_calendar(),
|
||||
StartTime = {{2026, 6, 1}, {10, 0, 0}},
|
||||
StartTime = eh_test_support:future_start(),
|
||||
RRule = #{<<"freq">> => <<"WEEKLY">>, <<"interval">> => 1},
|
||||
|
||||
{ok, Event} = logic_event:create_recurring_event(
|
||||
UserId, CalendarId, <<"Weekly">>, StartTime, 60, RRule
|
||||
),
|
||||
|
||||
RangeEnd = {{2026, 6, 29}, {10, 0, 0}},
|
||||
RangeEnd = add_days(StartTime, 28),
|
||||
{ok, Occurrences} = logic_event:get_occurrences(UserId, Event#event.id, RangeEnd),
|
||||
|
||||
?assertEqual(5, length(Occurrences)).
|
||||
|
||||
test_cancel_occurrence() ->
|
||||
{UserId, CalendarId} = create_test_user_and_calendar(),
|
||||
StartTime = {{2026, 6, 1}, {10, 0, 0}},
|
||||
StartTime = eh_test_support:future_start(),
|
||||
RRule = #{<<"freq">> => <<"WEEKLY">>, <<"interval">> => 1},
|
||||
|
||||
{ok, Event} = logic_event:create_recurring_event(
|
||||
UserId, CalendarId, <<"Weekly">>, StartTime, 60, RRule
|
||||
),
|
||||
|
||||
CancelTime = {{2026, 6, 8}, {10, 0, 0}},
|
||||
CancelTime = add_days(StartTime, 7),
|
||||
{ok, cancelled} = logic_event:cancel_occurrence(UserId, Event#event.id, CancelTime).
|
||||
|
||||
test_occurrences_with_cancelled() ->
|
||||
{UserId, CalendarId} = create_test_user_and_calendar(),
|
||||
StartTime = {{2026, 6, 1}, {10, 0, 0}},
|
||||
StartTime = eh_test_support:future_start(),
|
||||
RRule = #{<<"freq">> => <<"WEEKLY">>, <<"interval">> => 1},
|
||||
|
||||
{ok, Event} = logic_event:create_recurring_event(
|
||||
UserId, CalendarId, <<"Weekly">>, StartTime, 60, RRule
|
||||
),
|
||||
|
||||
CancelTime = {{2026, 6, 8}, {10, 0, 0}},
|
||||
CancelTime = add_days(StartTime, 7),
|
||||
{ok, cancelled} = logic_event:cancel_occurrence(UserId, Event#event.id, CancelTime),
|
||||
|
||||
RangeEnd = {{2026, 6, 29}, {10, 0, 0}},
|
||||
RangeEnd = add_days(StartTime, 28),
|
||||
{ok, Occurrences} = logic_event:get_occurrences(UserId, Event#event.id, RangeEnd),
|
||||
|
||||
?assertEqual(4, length(Occurrences)),
|
||||
@@ -131,14 +119,14 @@ test_occurrences_with_cancelled() ->
|
||||
|
||||
test_materialize_for_booking() ->
|
||||
{UserId, CalendarId} = create_test_user_and_calendar(),
|
||||
StartTime = {{2026, 6, 1}, {10, 0, 0}},
|
||||
StartTime = eh_test_support:future_start(),
|
||||
RRule = #{<<"freq">> => <<"WEEKLY">>, <<"interval">> => 1},
|
||||
|
||||
{ok, Event} = logic_event:create_recurring_event(
|
||||
UserId, CalendarId, <<"Weekly">>, StartTime, 60, RRule
|
||||
),
|
||||
|
||||
OccurrenceStart = {{2026, 6, 8}, {10, 0, 0}},
|
||||
OccurrenceStart = add_days(StartTime, 7),
|
||||
SpecialistId = <<"specialist123">>,
|
||||
|
||||
{ok, Instance} = logic_event:materialize_for_booking(
|
||||
@@ -148,4 +136,4 @@ test_materialize_for_booking() ->
|
||||
?assertEqual(Event#event.id, Instance#event.master_id),
|
||||
?assertEqual(OccurrenceStart, Instance#event.start_time),
|
||||
?assertEqual(SpecialistId, Instance#event.specialist_id),
|
||||
?assertEqual(true, Instance#event.is_instance).
|
||||
?assertEqual(true, Instance#event.is_instance).
|
||||
|
||||
Reference in New Issue
Block a user