/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. -module(z_notifier_tests).
  4. -include_lib("eunit/include/eunit.hrl").
  5. -include_lib("zotonic.hrl").
  6. -export([observer1/2,
  7. observer2/2
  8. ]).
  9. observer1({test_blaat, arg1, arg2}, _Context) ->
  10. observer1.
  11. observer2({test_blaat, arg1, arg2}, _Context) ->
  12. observer2.
  13. %% @doc Test z_notifier:observe, z_notifier:get_observers, z_notifier:detach
  14. attach_detach_test() ->
  15. Context = z_context:new(testsandbox),
  16. ?assertEqual([], z_notifier:get_observers(test_blaat, Context)),
  17. z_notifier:observe(test_blaat, {?MODULE, observer1}, Context),
  18. ?assertEqual([{?NOTIFIER_DEFAULT_PRIORITY, {?MODULE, observer1}}],
  19. z_notifier:get_observers(test_blaat, Context)),
  20. z_notifier:detach(test_blaat, {?MODULE, observer1}, Context),
  21. ?assertEqual([], z_notifier:get_observers(test_blaat, Context)).
  22. %% @doc Test z_notifier:detach_all/2
  23. detach_all_test() ->
  24. Context = z_context:new(testsandbox),
  25. ?assertEqual([], z_notifier:get_observers(test_blaat, Context)),
  26. z_notifier:observe(test_blaat, {?MODULE, observer1}, Context),
  27. z_notifier:observe(test_blaat, {?MODULE, observer2}, Context),
  28. ?assertEqual([{?NOTIFIER_DEFAULT_PRIORITY, {?MODULE, observer1}}, {?NOTIFIER_DEFAULT_PRIORITY, {?MODULE, observer2}}],
  29. z_notifier:get_observers(test_blaat, Context)),
  30. z_notifier:detach_all(test_blaat, Context),
  31. ?assertEqual([], z_notifier:get_observers(test_blaat, Context)).
  32. %% @doc Test receiving a message using z_notifer:first
  33. z_notifier_first_test() ->
  34. Context = z_context:new(testsandbox),
  35. ?assertEqual(undefined, z_notifier:first({test_blaat, arg1, arg2}, Context)),
  36. z_notifier:observe(test_blaat, {?MODULE, observer1}, Context),
  37. z_notifier:observe(test_blaat, {?MODULE, observer2}, Context),
  38. ?assertEqual(observer1, z_notifier:first({test_blaat, arg1, arg2}, Context)),
  39. z_notifier:detach_all(test_blaat, Context),
  40. ?assertEqual(undefined, z_notifier:first({test_blaat, arg1, arg2}, Context)).
  41. %% @doc Test receiving a message using z_notifer:map
  42. z_notifier_map_test() ->
  43. Context = z_context:new(testsandbox),
  44. ?assertEqual([], z_notifier:map({test_blaat, arg1, arg2}, Context)),
  45. z_notifier:observe(test_blaat, {?MODULE, observer1}, Context),
  46. z_notifier:observe(test_blaat, {?MODULE, observer2}, Context),
  47. ?assertEqual([observer1, observer2], z_notifier:map({test_blaat, arg1, arg2}, Context)),
  48. z_notifier:detach_all(test_blaat, Context),
  49. ?assertEqual([], z_notifier:map({test_blaat, arg1, arg2}, Context)).
  50. %% @todo, asynchronous messages:
  51. %% z_notifier:observe
  52. %% z_notifier:observe1