(self)
| 246 | self.assertEqual(state, {3: 3}) |
| 247 | |
| 248 | def test_revoke_task_instance(self): |
| 249 | state = {} |
| 250 | @self.huey.task() |
| 251 | def task_a(n): |
| 252 | state[n] = n |
| 253 | return n + 1 |
| 254 | |
| 255 | r1, r2, r3 = [task_a(i) for i in (1, 2, 3)] |
| 256 | self.assertEqual(len(self.huey), 3) |
| 257 | |
| 258 | r1.revoke() |
| 259 | r3.revoke() |
| 260 | |
| 261 | self.assertTrue(r1.is_revoked()) |
| 262 | self.assertFalse(r2.is_revoked()) |
| 263 | self.assertTrue(r3.is_revoked()) |
| 264 | |
| 265 | self.assertTrue(self.huey.is_revoked(r1)) |
| 266 | self.assertTrue(self.huey.is_revoked(r1.task.id)) |
| 267 | self.assertFalse(self.huey.is_revoked(r2)) |
| 268 | self.assertFalse(self.huey.is_revoked(r2.task.id)) |
| 269 | |
| 270 | # Task is discarded and not executed, due to being revoked. |
| 271 | t1 = self.huey.dequeue() |
| 272 | self.assertTrue(self.huey.execute(t1) is None) |
| 273 | self.assertTrue(r1.get() is None) |
| 274 | self.assertEqual(state, {}) |
| 275 | |
| 276 | # Second invocation will be executed normally. |
| 277 | t2 = self.huey.dequeue() |
| 278 | self.assertEqual(self.huey.execute(t2), 3) |
| 279 | self.assertEqual(r2.get(), 3) |
| 280 | self.assertEqual(state, {2: 2}) |
| 281 | |
| 282 | # Third invocation is also revoked, but we will restore it beforehand. |
| 283 | t3 = self.huey.dequeue() |
| 284 | r3.restore() |
| 285 | self.assertFalse(r3.is_revoked()) |
| 286 | self.assertEqual(self.huey.execute(t3), 4) |
| 287 | self.assertEqual(r3.get(), 4) |
| 288 | self.assertEqual(state, {2: 2, 3: 3}) |
| 289 | |
| 290 | # Attempting to re-enqueue and re-execute the revoked t1 will now work, |
| 291 | # as it is only revoked once by default. |
| 292 | self.assertFalse(r1.is_revoked()) |
| 293 | self.huey.enqueue(t1) |
| 294 | self.assertEqual(self.execute_next(), 2) |
| 295 | self.assertEqual(state, {1: 1, 2: 2, 3: 3}) |
| 296 | self.assertFalse(r1.is_revoked()) # Still revoked. |
| 297 | |
| 298 | def test_revoke_task_instance_persistent(self): |
| 299 | state = [] |
nothing calls this directly
no test coverage detected