/test/org/robotlegs/v2/extensions/mediatorMap/utilities/triggers/RL1AndRL2MediatorTriggerTest.as

https://github.com/justinjmoses/robotlegs-framework · ActionScript · 256 lines · 194 code · 44 blank · 18 comment · 0 complexity · 87c0d7fce85ba908f0f3ea0e9e8677c9 MD5 · raw file

  1. //------------------------------------------------------------------------------
  2. // Copyright (c) 2011 the original author or authors. All Rights Reserved.
  3. //
  4. // NOTICE: You are permitted to use, modify, and distribute this file
  5. // in accordance with the terms of the license agreement accompanying it.
  6. //------------------------------------------------------------------------------
  7. package org.robotlegs.v2.extensions.mediatorMap.utilities.triggers
  8. {
  9. import flash.display.DisplayObject;
  10. import flash.display.Sprite;
  11. import mockolate.received;
  12. import mockolate.runner.MockolateRule;
  13. import mockolate.runner.MockolateRunner;
  14. import org.flexunit.asserts.*;
  15. import org.hamcrest.assertThat;
  16. import org.hamcrest.object.strictlyEqualTo;
  17. import org.hamcrest.object.equalTo;
  18. import org.robotlegs.core.IMediator;
  19. import org.robotlegs.v2.extensions.mediatorMap.utilities.triggers.support.DuckTypedRL1Mediator;
  20. import org.robotlegs.v2.extensions.mediatorMap.api.IMediator;
  21. public class RL1AndRL2MediatorTriggerTest
  22. {
  23. [Rule]
  24. public var mocks:MockolateRule = new MockolateRule();
  25. [Mock]
  26. public var rl1Mediator:org.robotlegs.core.IMediator;
  27. [Mock]
  28. public var rl2Mediator:org.robotlegs.v2.extensions.mediatorMap.api.IMediator;
  29. private var strictInstance:RL1AndRL2MediatorTrigger;
  30. private var notStrictInstance:RL1AndRL2MediatorTrigger;
  31. private const VIEW:DisplayObject = new Sprite();
  32. private var _callbackRun:Function;
  33. private const duckMediator:DuckTypedRL1Mediator = new DuckTypedRL1Mediator();
  34. [Before]
  35. public function setUp():void
  36. {
  37. strictInstance = new RL1AndRL2MediatorTrigger(true);
  38. notStrictInstance = new RL1AndRL2MediatorTrigger(false);
  39. }
  40. [After]
  41. public function tearDown():void
  42. {
  43. strictInstance = null;
  44. notStrictInstance = null;
  45. }
  46. [Test]
  47. public function can_be_instantiated():void
  48. {
  49. assertTrue("strictInstance is RL1AndRL2MediatorTrigger", strictInstance is RL1AndRL2MediatorTrigger);
  50. }
  51. [Test]
  52. public function test_failure_seen():void
  53. {
  54. assertTrue("Failing test", true);
  55. }
  56. [Test(expects="Error")]
  57. public function startup_throws_error_in_strict_mode_when_passed_a_duckTyped_mediator():void
  58. {
  59. strictInstance.startup(duckMediator,new Sprite());
  60. }
  61. [Test(expects="Error")]
  62. public function shutdown_throws_error_in_strict_mode_when_passed_a_duckTyped_mediator():void
  63. {
  64. strictInstance.shutdown(duckMediator,new Sprite(), benignCallback);
  65. }
  66. [Test]
  67. public function startup_throws_no_error_in_not_strict_mode_when_passed_a_duckTyped_mediator():void
  68. {
  69. notStrictInstance.startup(duckMediator,new Sprite());
  70. }
  71. [Test]
  72. public function shutdown_throws_no_error_in_not_strict_mode_when_passed_a_duckTyped_mediator():void
  73. {
  74. notStrictInstance.shutdown(duckMediator,new Sprite(), benignCallback);
  75. }
  76. /* -------------------------
  77. RL1 Style mediators
  78. ---------------------------*/
  79. [Test]
  80. public function shutdown_calls_callback_in_nonStrictMode_with_RL1Mediator():void
  81. {
  82. notStrictInstance.shutdown(rl1Mediator, VIEW, expectantCallbackForRL1Mediator);
  83. assertEquals(expectantCallbackForRL1Mediator, _callbackRun);
  84. }
  85. [Test]
  86. public function shutdown_calls_callback_in_strictMode_with_RL1Mediator():void
  87. {
  88. strictInstance.shutdown(rl1Mediator, VIEW, expectantCallbackForRL1Mediator);
  89. assertEquals(expectantCallbackForRL1Mediator, _callbackRun);
  90. }
  91. [Test]
  92. public function shutdown_calls_preRemove_on_RL1Mediator_in_not_strict_mode():void
  93. {
  94. notStrictInstance.shutdown(rl1Mediator, VIEW, benignCallback);
  95. assertThat(rl1Mediator, received().method('preRemove'));
  96. }
  97. [Test]
  98. public function shutdown_calls_preRemove_on_RL1Mediator_in_strict_mode():void
  99. {
  100. strictInstance.shutdown(rl1Mediator, VIEW, benignCallback);
  101. assertThat(rl1Mediator, received().method('preRemove'));
  102. }
  103. [Test]
  104. public function startup_calls_preRegister_on_RL1Mediator_in_not_strict_mode():void
  105. {
  106. notStrictInstance.startup(rl1Mediator, VIEW);
  107. assertThat(rl1Mediator, received().method('preRegister'));
  108. }
  109. [Test]
  110. public function startup_calls_preRegister_on_RL1Mediator_in_strict_mode():void
  111. {
  112. strictInstance.startup(rl1Mediator, VIEW);
  113. assertThat(rl1Mediator, received().method('preRegister'));
  114. }
  115. [Test]
  116. public function startup_calls_setViewComponent_on_RL1Mediator_in_not_strict_mode():void
  117. {
  118. notStrictInstance.startup(rl1Mediator, VIEW);
  119. assertThat(rl1Mediator, received().method('setViewComponent').args(strictlyEqualTo(VIEW)));
  120. }
  121. [Test]
  122. public function startup_calls_setViewComponent_on_RL1Mediator_in_strict_mode():void
  123. {
  124. strictInstance.startup(rl1Mediator, VIEW);
  125. assertThat(rl1Mediator, received().method('setViewComponent').args(strictlyEqualTo(VIEW)));
  126. }
  127. /* -------------------------
  128. RL2 Style mediators
  129. ---------------------------*/
  130. [Test]
  131. public function shutdown_calls_callback_in_nonStrictMode_with_RL2Mediator():void
  132. {
  133. notStrictInstance.shutdown(rl2Mediator, VIEW, expectantCallbackForRL2Mediator);
  134. assertEquals(expectantCallbackForRL2Mediator, _callbackRun);
  135. }
  136. [Test]
  137. public function shutdown_calls_callback_in_strictMode_with_RL2Mediator():void
  138. {
  139. strictInstance.shutdown(rl2Mediator, VIEW, expectantCallbackForRL2Mediator);
  140. assertEquals(expectantCallbackForRL2Mediator, _callbackRun);
  141. }
  142. [Test]
  143. public function shutdown_calls_destroy_on_RL2Mediator_in_not_strict_mode():void
  144. {
  145. notStrictInstance.shutdown(rl2Mediator, VIEW, benignCallback);
  146. assertThat(rl2Mediator, received().method('destroy'));
  147. }
  148. [Test]
  149. public function shutdown_calls_destroy_on_RL2Mediator_in_strict_mode():void
  150. {
  151. strictInstance.shutdown(rl2Mediator, VIEW, benignCallback);
  152. assertThat(rl2Mediator, received().method('destroy'));
  153. }
  154. [Test]
  155. public function startup_calls_initialize_on_RL2Mediator_in_not_strict_mode():void
  156. {
  157. notStrictInstance.startup(rl2Mediator, VIEW);
  158. assertThat(rl2Mediator, received().method('initialize'));
  159. }
  160. [Test]
  161. public function startup_calls_initialize_on_RL2Mediator_in_strict_mode():void
  162. {
  163. strictInstance.startup(rl2Mediator, VIEW);
  164. assertThat(rl2Mediator, received().method('initialize'));
  165. }
  166. [Test]
  167. public function startup_calls_setViewComponent_on_RL2Mediator_in_not_strict_mode():void
  168. {
  169. notStrictInstance.startup(rl2Mediator, VIEW);
  170. assertThat(rl2Mediator, received().method('setViewComponent').args(strictlyEqualTo(VIEW)));
  171. }
  172. [Test]
  173. public function startup_calls_setViewComponent_on_RL2Mediator_in_strict_mode():void
  174. {
  175. strictInstance.startup(rl2Mediator, VIEW);
  176. assertThat(rl2Mediator, received().method('setViewComponent').args(strictlyEqualTo(VIEW)));
  177. }
  178. [Test]
  179. public function startup_sets_destroyed_to_false_on_RL2Mediator():void
  180. {
  181. strictInstance.startup(rl2Mediator, VIEW);
  182. assertThat(rl2Mediator, received().setter("destroyed").args(equalTo(false)));
  183. }
  184. [Test]
  185. public function shutdown_sets_destroyed_to_true_on_RL2Mediator():void
  186. {
  187. strictInstance.shutdown(rl2Mediator, VIEW, benignCallback);
  188. assertThat(rl2Mediator, received().setter("destroyed").args(equalTo(true)));
  189. }
  190. /* PROTECTED FUNCS */
  191. protected function benignCallback(mediator:*, view:DisplayObject):void
  192. {
  193. // do nothing
  194. }
  195. protected function expectantCallbackForRL1Mediator(mediator:*, view:DisplayObject):void
  196. {
  197. assertEquals(VIEW, view);
  198. assertEquals(rl1Mediator, mediator);
  199. _callbackRun = expectantCallbackForRL1Mediator;
  200. }
  201. protected function expectantCallbackForRL2Mediator(mediator:*, view:DisplayObject):void
  202. {
  203. assertEquals(VIEW, view);
  204. assertEquals(rl2Mediator, mediator);
  205. _callbackRun = expectantCallbackForRL2Mediator;
  206. }
  207. }
  208. }