fix: gate calendar reviews on confirmed booking. Refs EventHub/EventHubFront#8
This commit is contained in:
Regular → Executable
+16
-1
@@ -216,7 +216,22 @@ can_review(UserId, TargetType, TargetId) ->
|
|||||||
{ok, false}
|
{ok, false}
|
||||||
end;
|
end;
|
||||||
calendar ->
|
calendar ->
|
||||||
{ok, true};
|
case core_booking:list_by_user(UserId) of
|
||||||
|
{ok, Bookings} ->
|
||||||
|
Has = lists:any(
|
||||||
|
fun(B) ->
|
||||||
|
B#booking.status =:= confirmed andalso
|
||||||
|
case core_event:get_by_id(B#booking.event_id) of
|
||||||
|
{ok, Event} -> Event#event.calendar_id =:= TargetId;
|
||||||
|
_ -> false
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
Bookings
|
||||||
|
),
|
||||||
|
{ok, Has};
|
||||||
|
_ ->
|
||||||
|
{ok, false}
|
||||||
|
end;
|
||||||
_ ->
|
_ ->
|
||||||
{ok, false}
|
{ok, false}
|
||||||
end.
|
end.
|
||||||
|
|||||||
Regular → Executable
+5
@@ -324,9 +324,14 @@ format_event(Event) ->
|
|||||||
#location{address = Addr, lat = Lat, lon = Lon} ->
|
#location{address = Addr, lat = Lat, lon = Lon} ->
|
||||||
#{address => Addr, lat => Lat, lon => Lon}
|
#{address => Addr, lat => Lat, lon => Lon}
|
||||||
end,
|
end,
|
||||||
|
CalendarTitle = case core_calendar:get_by_id(Event#event.calendar_id) of
|
||||||
|
{ok, Cal} -> Cal#calendar.title;
|
||||||
|
_ -> null
|
||||||
|
end,
|
||||||
#{
|
#{
|
||||||
id => Event#event.id,
|
id => Event#event.id,
|
||||||
calendar_id => Event#event.calendar_id,
|
calendar_id => Event#event.calendar_id,
|
||||||
|
calendar_title => CalendarTitle,
|
||||||
title => Event#event.title,
|
title => Event#event.title,
|
||||||
description => Event#event.description,
|
description => Event#event.description,
|
||||||
event_type => Event#event.event_type,
|
event_type => Event#event.event_type,
|
||||||
|
|||||||
Regular → Executable
+11
@@ -21,6 +21,7 @@ logic_review_test_() ->
|
|||||||
[
|
[
|
||||||
{"Create review for event", fun test_create_event_review/0},
|
{"Create review for event", fun test_create_event_review/0},
|
||||||
{"Create review for calendar", fun test_create_calendar_review/0},
|
{"Create review for calendar", fun test_create_calendar_review/0},
|
||||||
|
{"Cannot review calendar without booking", fun test_cannot_review_calendar_without_booking/0},
|
||||||
{"Cannot review without booking", fun test_cannot_review_without_booking/0},
|
{"Cannot review without booking", fun test_cannot_review_without_booking/0},
|
||||||
{"Cannot review twice", fun test_cannot_review_twice/0},
|
{"Cannot review twice", fun test_cannot_review_twice/0},
|
||||||
{"Update own review", fun test_update_own_review/0},
|
{"Update own review", fun test_update_own_review/0},
|
||||||
@@ -74,10 +75,20 @@ test_create_calendar_review() ->
|
|||||||
OwnerId = create_test_user(),
|
OwnerId = create_test_user(),
|
||||||
ReviewerId = create_test_user(),
|
ReviewerId = create_test_user(),
|
||||||
CalendarId = create_test_calendar(OwnerId),
|
CalendarId = create_test_calendar(OwnerId),
|
||||||
|
EventId = create_test_event(CalendarId),
|
||||||
|
create_booking(ReviewerId, EventId),
|
||||||
|
|
||||||
{ok, Review} = logic_review:create_review(ReviewerId, calendar, CalendarId, 4, <<"Nice">>),
|
{ok, Review} = logic_review:create_review(ReviewerId, calendar, CalendarId, 4, <<"Nice">>),
|
||||||
?assertEqual(4, Review#review.rating).
|
?assertEqual(4, Review#review.rating).
|
||||||
|
|
||||||
|
test_cannot_review_calendar_without_booking() ->
|
||||||
|
OwnerId = create_test_user(),
|
||||||
|
UserId = create_test_user(),
|
||||||
|
CalendarId = create_test_calendar(OwnerId),
|
||||||
|
_EventId = create_test_event(CalendarId),
|
||||||
|
|
||||||
|
{error, cannot_review} = logic_review:create_review(UserId, calendar, CalendarId, 4, <<"Nope">>).
|
||||||
|
|
||||||
test_cannot_review_without_booking() ->
|
test_cannot_review_without_booking() ->
|
||||||
OwnerId = create_test_user(),
|
OwnerId = create_test_user(),
|
||||||
UserId = create_test_user(),
|
UserId = create_test_user(),
|
||||||
|
|||||||
Reference in New Issue
Block a user