9
9
class Resque_Tests_EventTest extends Resque_Tests_TestCase
10
10
{
11
11
private $ callbacksHit = array ();
12
-
12
+
13
13
public function setUp ()
14
14
{
15
15
Test_Job::$ called = false ;
16
-
16
+
17
17
// Register a worker to test with
18
18
$ this ->worker = new Resque_Worker ('jobs ' );
19
19
$ this ->worker ->setLogger (new Resque_Log ());
@@ -38,7 +38,7 @@ public function getEventTestJob()
38
38
$ job ->worker = $ this ->worker ;
39
39
return $ job ;
40
40
}
41
-
41
+
42
42
public function eventCallbackProvider ()
43
43
{
44
44
return array (
@@ -47,7 +47,7 @@ public function eventCallbackProvider()
47
47
array ('afterFork ' , 'afterForkEventCallback ' ),
48
48
);
49
49
}
50
-
50
+
51
51
/**
52
52
* @dataProvider eventCallbackProvider
53
53
*/
@@ -58,10 +58,10 @@ public function testEventCallbacksFire($event, $callback)
58
58
$ job = $ this ->getEventTestJob ();
59
59
$ this ->worker ->perform ($ job );
60
60
$ this ->worker ->work (0 );
61
-
61
+
62
62
$ this ->assertContains ($ callback , $ this ->callbacksHit , $ event . ' callback ( ' . $ callback .') was not called ' );
63
63
}
64
-
64
+
65
65
public function testBeforeForkEventCallbackFires ()
66
66
{
67
67
$ event = 'beforeFork ' ;
@@ -76,6 +76,18 @@ public function testBeforeForkEventCallbackFires()
76
76
$ this ->assertContains ($ callback , $ this ->callbacksHit , $ event . ' callback ( ' . $ callback .') was not called ' );
77
77
}
78
78
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
+
79
91
public function testBeforePerformEventCanStopWork ()
80
92
{
81
93
$ callback = 'beforePerformEventDontPerformCallback ' ;
@@ -87,23 +99,35 @@ public function testBeforePerformEventCanStopWork()
87
99
$ this ->assertContains ($ callback , $ this ->callbacksHit , $ callback . ' callback was not called ' );
88
100
$ this ->assertFalse (Test_Job::$ called , 'Job was still performed though Resque_Job_DontPerform was thrown ' );
89
101
}
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
+
91
115
public function testAfterEnqueueEventCallbackFires ()
92
116
{
93
117
$ callback = 'afterEnqueueEventCallback ' ;
94
- $ event = 'afterEnqueue ' ;
95
-
118
+ $ event = 'afterEnqueue ' ;
119
+
96
120
Resque_Event::listen ($ event , array ($ this , $ callback ));
97
121
Resque::enqueue ('jobs ' , 'Test_Job ' , array (
98
122
'somevar '
99
- ));
123
+ ));
100
124
$ this ->assertContains ($ callback , $ this ->callbacksHit , $ event . ' callback ( ' . $ callback .') was not called ' );
101
125
}
102
126
103
127
public function testStopListeningRemovesListener ()
104
128
{
105
129
$ callback = 'beforePerformEventCallback ' ;
106
- $ event = 'beforePerform ' ;
130
+ $ event = 'beforePerform ' ;
107
131
108
132
Resque_Event::listen ($ event , array ($ this , $ callback ));
109
133
Resque_Event::stopListening ($ event , array ($ this , $ callback ));
@@ -112,18 +136,23 @@ public function testStopListeningRemovesListener()
112
136
$ this ->worker ->perform ($ job );
113
137
$ this ->worker ->work (0 );
114
138
115
- $ this ->assertNotContains ($ callback , $ this ->callbacksHit ,
139
+ $ this ->assertNotContains ($ callback , $ this ->callbacksHit ,
116
140
$ event . ' callback ( ' . $ callback .') was called though Resque_Event::stopListening was called '
117
141
);
118
142
}
119
143
120
-
121
144
public function beforePerformEventDontPerformCallback ($ instance )
122
145
{
123
146
$ this ->callbacksHit [] = __FUNCTION__ ;
124
147
throw new Resque_Job_DontPerform ;
125
148
}
126
-
149
+
150
+ public function beforeEnqueueEventDontCreateCallback ($ queue , $ class , $ args , $ track = false )
151
+ {
152
+ $ this ->callbacksHit [] = __FUNCTION__ ;
153
+ throw new Resque_Job_DontCreate ;
154
+ }
155
+
127
156
public function assertValidEventCallback ($ function , $ job )
128
157
{
129
158
$ this ->callbacksHit [] = $ function ;
@@ -133,7 +162,7 @@ public function assertValidEventCallback($function, $job)
133
162
$ args = $ job ->getArguments ();
134
163
$ this ->assertEquals ($ args [0 ], 'somevar ' );
135
164
}
136
-
165
+
137
166
public function afterEnqueueEventCallback ($ class , $ args )
138
167
{
139
168
$ this ->callbacksHit [] = __FUNCTION__ ;
@@ -142,12 +171,17 @@ public function afterEnqueueEventCallback($class, $args)
142
171
'somevar ' ,
143
172
), $ args );
144
173
}
145
-
174
+
175
+ public function beforeEnqueueEventCallback ($ job )
176
+ {
177
+ $ this ->callbacksHit [] = __FUNCTION__ ;
178
+ }
179
+
146
180
public function beforePerformEventCallback ($ job )
147
181
{
148
182
$ this ->assertValidEventCallback (__FUNCTION__ , $ job );
149
183
}
150
-
184
+
151
185
public function afterPerformEventCallback ($ job )
152
186
{
153
187
$ this ->assertValidEventCallback (__FUNCTION__ , $ job );
@@ -157,7 +191,7 @@ public function beforeForkEventCallback($job)
157
191
{
158
192
$ this ->assertValidEventCallback (__FUNCTION__ , $ job );
159
193
}
160
-
194
+
161
195
public function afterForkEventCallback ($ job )
162
196
{
163
197
$ this ->assertValidEventCallback (__FUNCTION__ , $ job );
0 commit comments