99class Resque_Tests_EventTest extends Resque_Tests_TestCase
1010{
1111 private $ callbacksHit = array ();
12-
12+
1313 public function setUp ()
1414 {
1515 Test_Job::$ called = false ;
16-
16+
1717 // Register a worker to test with
1818 $ this ->worker = new Resque_Worker ('jobs ' );
1919 $ this ->worker ->setLogger (new Resque_Log ());
@@ -38,7 +38,7 @@ public function getEventTestJob()
3838 $ job ->worker = $ this ->worker ;
3939 return $ job ;
4040 }
41-
41+
4242 public function eventCallbackProvider ()
4343 {
4444 return array (
@@ -47,7 +47,7 @@ public function eventCallbackProvider()
4747 array ('afterFork ' , 'afterForkEventCallback ' ),
4848 );
4949 }
50-
50+
5151 /**
5252 * @dataProvider eventCallbackProvider
5353 */
@@ -58,10 +58,10 @@ public function testEventCallbacksFire($event, $callback)
5858 $ job = $ this ->getEventTestJob ();
5959 $ this ->worker ->perform ($ job );
6060 $ this ->worker ->work (0 );
61-
61+
6262 $ this ->assertContains ($ callback , $ this ->callbacksHit , $ event . ' callback ( ' . $ callback .') was not called ' );
6363 }
64-
64+
6565 public function testBeforeForkEventCallbackFires ()
6666 {
6767 $ event = 'beforeFork ' ;
@@ -76,6 +76,18 @@ public function testBeforeForkEventCallbackFires()
7676 $ this ->assertContains ($ callback , $ this ->callbacksHit , $ event . ' callback ( ' . $ callback .') was not called ' );
7777 }
7878
79+ public function testBeforeEnqueueEventCallbackFires ()
80+ {
81+ $ event = 'beforeEnqueue ' ;
82+ $ callback = 'beforeEnqueueEventCallback ' ;
83+
84+ Resque_Event::listen ($ event , array ($ this , $ callback ));
85+ Resque::enqueue ('jobs ' , 'Test_Job ' , array (
86+ 'somevar '
87+ ));
88+ $ this ->assertContains ($ callback , $ this ->callbacksHit , $ event . ' callback ( ' . $ callback .') was not called ' );
89+ }
90+
7991 public function testBeforePerformEventCanStopWork ()
8092 {
8193 $ callback = 'beforePerformEventDontPerformCallback ' ;
@@ -87,23 +99,35 @@ public function testBeforePerformEventCanStopWork()
8799 $ this ->assertContains ($ callback , $ this ->callbacksHit , $ callback . ' callback was not called ' );
88100 $ this ->assertFalse (Test_Job::$ called , 'Job was still performed though Resque_Job_DontPerform was thrown ' );
89101 }
90-
102+
103+ public function testBeforeEnqueueEventStopsJobCreation ()
104+ {
105+ $ callback = 'beforeEnqueueEventDontCreateCallback ' ;
106+ Resque_Event::listen ('beforeEnqueue ' , array ($ this , $ callback ));
107+ Resque_Event::listen ('afterEnqueue ' , array ($ this , 'afterEnqueueEventCallback ' ));
108+
109+ $ result = Resque::enqueue ('test_job ' , 'TestClass ' );
110+ $ this ->assertContains ($ callback , $ this ->callbacksHit , $ callback . ' callback was not called ' );
111+ $ this ->assertNotContains ('afterEnqueueEventCallback ' , $ this ->callbacksHit , 'afterEnqueue was still called, even though it should not have been ' );
112+ $ this ->assertFalse ($ result );
113+ }
114+
91115 public function testAfterEnqueueEventCallbackFires ()
92116 {
93117 $ callback = 'afterEnqueueEventCallback ' ;
94- $ event = 'afterEnqueue ' ;
95-
118+ $ event = 'afterEnqueue ' ;
119+
96120 Resque_Event::listen ($ event , array ($ this , $ callback ));
97121 Resque::enqueue ('jobs ' , 'Test_Job ' , array (
98122 'somevar '
99- ));
123+ ));
100124 $ this ->assertContains ($ callback , $ this ->callbacksHit , $ event . ' callback ( ' . $ callback .') was not called ' );
101125 }
102126
103127 public function testStopListeningRemovesListener ()
104128 {
105129 $ callback = 'beforePerformEventCallback ' ;
106- $ event = 'beforePerform ' ;
130+ $ event = 'beforePerform ' ;
107131
108132 Resque_Event::listen ($ event , array ($ this , $ callback ));
109133 Resque_Event::stopListening ($ event , array ($ this , $ callback ));
@@ -112,18 +136,23 @@ public function testStopListeningRemovesListener()
112136 $ this ->worker ->perform ($ job );
113137 $ this ->worker ->work (0 );
114138
115- $ this ->assertNotContains ($ callback , $ this ->callbacksHit ,
139+ $ this ->assertNotContains ($ callback , $ this ->callbacksHit ,
116140 $ event . ' callback ( ' . $ callback .') was called though Resque_Event::stopListening was called '
117141 );
118142 }
119143
120-
121144 public function beforePerformEventDontPerformCallback ($ instance )
122145 {
123146 $ this ->callbacksHit [] = __FUNCTION__ ;
124147 throw new Resque_Job_DontPerform ;
125148 }
126-
149+
150+ public function beforeEnqueueEventDontCreateCallback ($ queue , $ class , $ args , $ track = false )
151+ {
152+ $ this ->callbacksHit [] = __FUNCTION__ ;
153+ throw new Resque_Job_DontCreate ;
154+ }
155+
127156 public function assertValidEventCallback ($ function , $ job )
128157 {
129158 $ this ->callbacksHit [] = $ function ;
@@ -133,7 +162,7 @@ public function assertValidEventCallback($function, $job)
133162 $ args = $ job ->getArguments ();
134163 $ this ->assertEquals ($ args [0 ], 'somevar ' );
135164 }
136-
165+
137166 public function afterEnqueueEventCallback ($ class , $ args )
138167 {
139168 $ this ->callbacksHit [] = __FUNCTION__ ;
@@ -142,12 +171,17 @@ public function afterEnqueueEventCallback($class, $args)
142171 'somevar ' ,
143172 ), $ args );
144173 }
145-
174+
175+ public function beforeEnqueueEventCallback ($ job )
176+ {
177+ $ this ->callbacksHit [] = __FUNCTION__ ;
178+ }
179+
146180 public function beforePerformEventCallback ($ job )
147181 {
148182 $ this ->assertValidEventCallback (__FUNCTION__ , $ job );
149183 }
150-
184+
151185 public function afterPerformEventCallback ($ job )
152186 {
153187 $ this ->assertValidEventCallback (__FUNCTION__ , $ job );
@@ -157,7 +191,7 @@ public function beforeForkEventCallback($job)
157191 {
158192 $ this ->assertValidEventCallback (__FUNCTION__ , $ job );
159193 }
160-
194+
161195 public function afterForkEventCallback ($ job )
162196 {
163197 $ this ->assertValidEventCallback (__FUNCTION__ , $ job );
0 commit comments