PageRenderTime 29ms CodeModel.GetById 1ms app.highlight 22ms RepoModel.GetById 2ms app.codeStats 0ms

/src/support/tests/z_notifier_tests.erl

http://github.com/zotonic/zotonic
Erlang | 72 lines | 43 code | 20 blank | 9 comment | 0 complexity | adb2078d7af692c2b5e12b0196358bf8 MD5 | raw file
 1%% @author Arjan Scherpenisse <arjan@scherpenisse.net>
 2%% @hidden
 3
 4-module(z_notifier_tests).
 5
 6-include_lib("eunit/include/eunit.hrl").
 7-include_lib("zotonic.hrl").
 8
 9-export([observer1/2,
10         observer2/2
11        ]).
12
13
14observer1({test_blaat, arg1, arg2}, _Context) ->
15    observer1.
16observer2({test_blaat, arg1, arg2}, _Context) ->
17    observer2.
18
19%% @doc Test z_notifier:observe, z_notifier:get_observers, z_notifier:detach
20attach_detach_test() ->
21    Context = z_context:new(testsandbox),
22    ?assertEqual([], z_notifier:get_observers(test_blaat, Context)),
23    z_notifier:observe(test_blaat, {?MODULE, observer1}, Context),
24    ?assertEqual([{?NOTIFIER_DEFAULT_PRIORITY, {?MODULE, observer1}}],
25                 z_notifier:get_observers(test_blaat, Context)),
26    z_notifier:detach(test_blaat, {?MODULE, observer1}, Context),
27    ?assertEqual([], z_notifier:get_observers(test_blaat, Context)).
28
29
30%% @doc Test z_notifier:detach_all/2
31detach_all_test() ->
32    Context = z_context:new(testsandbox),
33    ?assertEqual([], z_notifier:get_observers(test_blaat, Context)),
34    z_notifier:observe(test_blaat, {?MODULE, observer1}, Context),
35    z_notifier:observe(test_blaat, {?MODULE, observer2}, Context),
36    ?assertEqual([{?NOTIFIER_DEFAULT_PRIORITY, {?MODULE, observer1}}, {?NOTIFIER_DEFAULT_PRIORITY, {?MODULE, observer2}}],
37                 z_notifier:get_observers(test_blaat, Context)),
38    z_notifier:detach_all(test_blaat, Context),
39    ?assertEqual([], z_notifier:get_observers(test_blaat, Context)).
40
41
42%% @doc Test receiving a message using z_notifer:first
43z_notifier_first_test() ->
44    Context = z_context:new(testsandbox),
45
46    ?assertEqual(undefined, z_notifier:first({test_blaat, arg1, arg2}, Context)),
47
48    z_notifier:observe(test_blaat, {?MODULE, observer1}, Context),
49    z_notifier:observe(test_blaat, {?MODULE, observer2}, Context),
50    ?assertEqual(observer1, z_notifier:first({test_blaat, arg1, arg2}, Context)),
51
52    z_notifier:detach_all(test_blaat, Context),
53    ?assertEqual(undefined, z_notifier:first({test_blaat, arg1, arg2}, Context)).
54
55
56%% @doc Test receiving a message using z_notifer:map
57z_notifier_map_test() ->
58    Context = z_context:new(testsandbox),
59
60    ?assertEqual([], z_notifier:map({test_blaat, arg1, arg2}, Context)),
61
62    z_notifier:observe(test_blaat, {?MODULE, observer1}, Context),
63    z_notifier:observe(test_blaat, {?MODULE, observer2}, Context),
64    ?assertEqual([observer1, observer2], z_notifier:map({test_blaat, arg1, arg2}, Context)),
65
66    z_notifier:detach_all(test_blaat, Context),
67    ?assertEqual([], z_notifier:map({test_blaat, arg1, arg2}, Context)).
68
69
70%% @todo, asynchronous messages:
71%% z_notifier:observe
72%% z_notifier:observe1