Skip to content

Commit

Permalink
added new hooks
Browse files Browse the repository at this point in the history
  • Loading branch information
HernanRivasAcosta committed Aug 31, 2016
1 parent 456730c commit ca2bfb5
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 14 deletions.
10 changes: 6 additions & 4 deletions src/bo_server.erl
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,8 @@ handle_call({signup, Data}, _From, State) when not is_binary(Data) ->
handle_call({signup, PlayerName}, {From, _}, State) ->
Node = node(From),
try bo_players_repo:signup(PlayerName, Node) of
Player -> {reply, task(Player), State}
Player -> ok = bo_hooks:execute(signedup, [Player]),
{reply, task(Player), State}
catch
_:conflict -> {reply, {error, conflict}, State}
end;
Expand All @@ -81,8 +82,7 @@ handle_call({submit, PlayerName, Solution}, {From, _} = Caller, State) ->
handle_call({skip, PlayerName}, {From, _}, State) ->
case check_player_and_task(PlayerName, From) of
{error, Error} -> {reply, {error, Error}, State};
Player -> ok = bo_hooks:execute(player_skipped_task, [PlayerName]),
{reply, advance(Player, skip), State}
Player -> {reply, advance(Player, skip), State}
end.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Expand Down Expand Up @@ -144,7 +144,9 @@ task(Player) -> {ok, bo_task:describe(bo_players:task(Player))}.

advance(Player, Action) ->
NewPlayer = bo_players_repo:advance(Player, Action),
ok = bo_hooks:execute(advanced, [Action, Player]),
case bo_players:task(NewPlayer) of
undefined -> the_end;
undefined -> ok = bo_hooks:execute(finished, [Player]),
the_end;
Task -> {ok, bo_task:describe(Task)}
end.
22 changes: 12 additions & 10 deletions test/bo_hooks_SUITE.erl
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
-export([hooks/1]).

%% Hooks
-export([start/0, skipped1/1, skipped2/1]).
-export([start/0, advanced1/2, advanced2/2]).

-type config() :: proplists:proplist().

Expand Down Expand Up @@ -41,7 +41,9 @@ hooks(_Config) ->
{ok, _Task2} = bo_test_client:skip(Client, <<"userName">>),

EtsContents = lists:sort(ets:tab2list(hooks_SUITE_ets)),
[{skipped1, <<"userName">>}, {skipped2, <<"userName">>}] = EtsContents,
[ {advanced1, skip, _}
, {advanced2, skip, _}
] = EtsContents,

ok
after
Expand All @@ -58,16 +60,16 @@ start() ->
% The table will be destroyed after 500ms no matter what
timer:sleep(500).

-spec skipped1(any()) -> true.
skipped1(PlayerName) ->
ets:insert(hooks_SUITE_ets, {skipped1, PlayerName}).
-spec advanced1(any(), any()) -> true.
advanced1(Event, Player) ->
ets:insert(hooks_SUITE_ets, {advanced1, Event, Player}).

-spec skipped2(any()) -> true.
skipped2(PlayerName) ->
ets:insert(hooks_SUITE_ets, {skipped2, PlayerName}).
-spec advanced2(any(), any()) -> true.
advanced2(Event, Player) ->
ets:insert(hooks_SUITE_ets, {advanced2, Event, Player}).

%% Utils
get_hooks() ->
#{ app_started => {?MODULE, start}
, player_skipped_task => [{?MODULE, skipped1}, {?MODULE, skipped2}]
#{ app_started => {?MODULE, start}
, advanced => [{?MODULE, advanced1}, {?MODULE, advanced2}]
}.

0 comments on commit ca2bfb5

Please sign in to comment.