Test cron scheduler detail view with various scenarios.
(self)
| 178 | self.client.login(username=self.user.username, password='pass') |
| 179 | |
| 180 | def test_cron_scheduler_detail_view(self): |
| 181 | """Test cron scheduler detail view with various scenarios.""" |
| 182 | # Create a real scheduler and register it |
| 183 | scheduler = DjangoCronScheduler(name='test-scheduler') |
| 184 | scheduler.register( |
| 185 | say_hello, |
| 186 | "default", |
| 187 | interval=60, |
| 188 | args=("hello",), |
| 189 | kwargs={"target": "world"}, |
| 190 | meta={"source": "test"}, |
| 191 | job_timeout=20, |
| 192 | result_ttl=500, |
| 193 | ttl=60, |
| 194 | failure_ttl=120, |
| 195 | ) |
| 196 | scheduler.register(say_hello, "default", cron="*/5 * * * *") |
| 197 | scheduler.register_birth() |
| 198 | |
| 199 | for prefix in ('admin:django_rq_', 'django_rq:'): |
| 200 | # Test 1: Successful view of existing scheduler |
| 201 | connection_index = scheduler.connection_index |
| 202 | url = reverse(f'{prefix}cron_scheduler_detail', args=[connection_index, 'test-scheduler']) |
| 203 | response = self.client.get(url) |
| 204 | self.assertEqual(response.status_code, 200) |
| 205 | self.assertEqual(response.context['scheduler'].name, 'test-scheduler') |
| 206 | self.assertEqual(len(response.context['cron_jobs']), 2) |
| 207 | first_cron_job = response.context['cron_jobs'][0] |
| 208 | self.assertEqual(first_cron_job['func_name'], 'tests.fixtures.say_hello') |
| 209 | self.assertEqual(first_cron_job['queue_name'], 'default') |
| 210 | self.assertEqual(first_cron_job['schedule'], 'every 60 seconds') |
| 211 | self.assertContains(response, 'test-scheduler') |
| 212 | self.assertContains(response, 'Cron Jobs') |
| 213 | self.assertContains(response, 'tests.fixtures.say_hello') |
| 214 | self.assertContains(response, 'default') |
| 215 | self.assertContains(response, 'every 60 seconds') |
| 216 | self.assertContains(response, 'cron: */5 * * * *') |
| 217 | self.assertContains(response, 'hello') |
| 218 | self.assertContains(response, 'world') |
| 219 | self.assertContains(response, 'source') |
| 220 | self.assertContains(response, 'job_timeout=20') |
| 221 | self.assertContains(response, 'result_ttl=500') |
| 222 | self.assertContains(response, 'ttl=60') |
| 223 | self.assertContains(response, 'failure_ttl=120') |
| 224 | |
| 225 | # Test 2: Non-existent scheduler returns 404 |
| 226 | url = reverse(f'{prefix}cron_scheduler_detail', args=[connection_index, 'nonexistent-scheduler']) |
| 227 | response = self.client.get(url) |
| 228 | self.assertEqual(response.status_code, 404) |
| 229 | |
| 230 | # Test 3: Invalid connection index returns 404 |
| 231 | url = reverse(f'{prefix}cron_scheduler_detail', args=[999, 'test-scheduler']) |
| 232 | response = self.client.get(url) |
| 233 | self.assertEqual(response.status_code, 404) |
| 234 | |
| 235 | # Clean up |
| 236 | scheduler.register_death() |
| 237 |
nothing calls this directly
no test coverage detected