5
5
use Carbon \Carbon ;
6
6
use Illuminate \Support \Str ;
7
7
use Jenssegers \Mongodb \Queue \Failed \MongoFailedJobProvider ;
8
+ use Jenssegers \Mongodb \Queue \MongoQueue ;
8
9
9
10
class QueueTest extends TestCase
10
11
{
@@ -107,10 +108,11 @@ public function testIncrementAttempts(): void
107
108
108
109
public function testJobRelease (): void
109
110
{
110
- $ job_id = Queue::push ('test ' , ['action ' => 'QueueJobExpired ' ], 'test ' );
111
+ $ queue = 'test ' ;
112
+ $ job_id = Queue::push ($ queue , ['action ' => 'QueueJobRelease ' ], 'test ' );
111
113
$ this ->assertNotNull ($ job_id );
112
114
113
- $ job = Queue::pop (' test ' );
115
+ $ job = Queue::pop ($ queue );
114
116
$ job ->release ();
115
117
116
118
$ jobs = Queue::getDatabase ()
@@ -119,23 +121,58 @@ public function testJobRelease(): void
119
121
120
122
$ this ->assertCount (1 , $ jobs );
121
123
$ this ->assertEquals (1 , $ jobs [0 ]['attempts ' ]);
122
- $ this ->assertNotEquals ($ job_id , $ jobs [0 ]['_id ' ]);
123
124
}
124
125
125
- public function testQueueDeleteAndRelease (): void
126
+ public function testQueueDeleteReserved (): void
126
127
{
127
128
$ queue = 'test ' ;
128
- $ job_id = Queue::push ($ queue , ['action ' => 'QueueJobExpired ' ], 'test ' );
129
-
130
- $ job = Queue::pop ('test ' );
131
- Queue::deleteAndRelease ($ queue , $ job , 0 );
129
+ $ job_id = Queue::push ($ queue , ['action ' => 'QueueDeleteReserved ' ], 'test ' );
132
130
131
+ Queue::deleteReserved ($ queue , $ job_id , 0 );
133
132
$ jobs = Queue::getDatabase ()
134
133
->table (Config::get ('queue.connections.database.table ' ))
135
134
->get ();
136
135
137
- $ this ->assertCount (1 , $ jobs );
138
- $ this ->assertEquals (1 , $ jobs [0 ]['attempts ' ]);
139
- $ this ->assertNotEquals ($ job_id , $ jobs [0 ]['_id ' ]);
136
+ $ this ->assertCount (0 , $ jobs );
137
+ }
138
+
139
+ public function testQueueRelease (): void
140
+ {
141
+ Carbon::setTestNow ();
142
+ $ queue = 'test ' ;
143
+ $ delay = 123 ;
144
+ Queue::push ($ queue , ['action ' => 'QueueRelease ' ], 'test ' );
145
+
146
+ $ job = Queue::pop ($ queue );
147
+ $ released_job_id = Queue::release ($ queue , $ job ->getJobRecord (), $ delay );
148
+
149
+ $ released_job = Queue::getDatabase ()
150
+ ->table (Config::get ('queue.connections.database.table ' ))
151
+ ->where ('_id ' , $ released_job_id )
152
+ ->first ();
153
+
154
+ $ this ->assertEquals ($ queue , $ released_job ['queue ' ]);
155
+ $ this ->assertEquals (1 , $ released_job ['attempts ' ]);
156
+ $ this ->assertNull ($ released_job ['reserved_at ' ]);
157
+ $ this ->assertEquals (
158
+ Carbon::now ()->addRealSeconds ($ delay )->getTimestamp (),
159
+ $ released_job ['available_at ' ]
160
+ );
161
+ $ this ->assertEquals (Carbon::now ()->getTimestamp (), $ released_job ['created_at ' ]);
162
+ $ this ->assertEquals ($ job ->getRawBody (), $ released_job ['payload ' ]);
163
+ }
164
+
165
+ public function testQueueDeleteAndRelease (): void
166
+ {
167
+ $ queue = 'test ' ;
168
+ $ delay = 123 ;
169
+ Queue::push ($ queue , ['action ' => 'QueueDeleteAndRelease ' ], 'test ' );
170
+ $ job = Queue::pop ($ queue );
171
+
172
+ $ mock = Mockery::mock (MongoQueue::class)->makePartial ();
173
+ $ mock ->expects ('deleteReserved ' )->once ()->with ($ queue , $ job ->getJobId ());
174
+ $ mock ->expects ('release ' )->once ()->with ($ queue , $ job ->getJobRecord (), $ delay );
175
+
176
+ $ mock ->deleteAndRelease ($ queue , $ job , $ delay );
140
177
}
141
178
}
0 commit comments