|
@@ -394,3 +394,35 @@ class DeleteViewTests(TestCase):
|
|
|
msg = 'No URL to redirect to. Provide a success_url.'
|
|
|
with self.assertRaisesMessage(ImproperlyConfigured, msg):
|
|
|
self.client.post('/edit/author/%d/delete/naive/' % self.author.pk)
|
|
|
+
|
|
|
+ def test_delete_with_form_as_post(self):
|
|
|
+ res = self.client.get('/edit/author/%d/delete/form/' % self.author.pk)
|
|
|
+ self.assertEqual(res.status_code, 200)
|
|
|
+ self.assertEqual(res.context['object'], self.author)
|
|
|
+ self.assertEqual(res.context['author'], self.author)
|
|
|
+ self.assertTemplateUsed(res, 'generic_views/author_confirm_delete.html')
|
|
|
+ res = self.client.post(
|
|
|
+ '/edit/author/%d/delete/form/' % self.author.pk, data={'confirm': True}
|
|
|
+ )
|
|
|
+ self.assertEqual(res.status_code, 302)
|
|
|
+ self.assertRedirects(res, '/list/authors/')
|
|
|
+ self.assertSequenceEqual(Author.objects.all(), [])
|
|
|
+
|
|
|
+ def test_delete_with_form_as_post_with_validation_error(self):
|
|
|
+ res = self.client.get('/edit/author/%d/delete/form/' % self.author.pk)
|
|
|
+ self.assertEqual(res.status_code, 200)
|
|
|
+ self.assertEqual(res.context['object'], self.author)
|
|
|
+ self.assertEqual(res.context['author'], self.author)
|
|
|
+ self.assertTemplateUsed(res, 'generic_views/author_confirm_delete.html')
|
|
|
+
|
|
|
+ res = self.client.post('/edit/author/%d/delete/form/' % self.author.pk)
|
|
|
+ self.assertEqual(res.status_code, 200)
|
|
|
+ self.assertEqual(len(res.context_data['form'].errors), 2)
|
|
|
+ self.assertEqual(
|
|
|
+ res.context_data['form'].errors['__all__'],
|
|
|
+ ['You must confirm the delete.'],
|
|
|
+ )
|
|
|
+ self.assertEqual(
|
|
|
+ res.context_data['form'].errors['confirm'],
|
|
|
+ ['This field is required.'],
|
|
|
+ )
|