how to test if deleted post has been removed from blog

43 Views Asked by At

as I'm new in Django I've tried to write a simple program for blog posts to add, update and delete a post. Now I want to test if my deleted post has been removed from my blog list by assertNotContains code and I got an assertion error. I added part of my code related to my question please feel free for more information. thanks in advance.

views.py
def post_delete(request,pk):
    post = get_object_or_404(Post,pk=pk)
    if request.method == 'POST':
        post.delete()
        return redirect('blog_list')
    return render(request,"blog/post_delete.html",{"post":post})

urls.py
urlpatterns=[
    path("",views.blog_list,name="blog_list"),
    path("<int:pk>/",views.post_details,name="post_detail"),
    path("create/",views.create_new_post,name="post_create"),
    path('<int:pk>/update/', views.post_update ,name='post_update'),
    path('<int:pk>/delete/', views.post_delete , name='post_delete'),
]

models.py
class Post(models.Model):
    STATUS_CHOICES=(
        ('pub','published'),
        ('drf','draft'),
    )
    title=models.CharField(max_length=100)
    text=models.TextField()
    status=models.CharField(max_length=3,choices=STATUS_CHOICES)
    created_datetime=models.DateTimeField(auto_now_add=True)
    modified_datetime=models.DateTimeField(auto_now=True)
    author=models.ForeignKey(User, on_delete=models.CASCADE) 

test.py
class TestBlogPost(TestCase):
    @classmethod
    def setUpTestData(cls):
        cls.user=User.objects.create(username="user1")
        cls.post1=Post.objects.create(
            title="post1",
            text="this is post1",
            status=Post.STATUS_CHOICES[1][0],
            author=cls.user
        )
    def test_delete_post_view_url(self):
        response = self.client.post(reverse("post_delete",args=[self.post1.id]))
        self.assertEqual(response.status_code,302)
       ** self.assertNotContains(response, self.post1.title)
**
**error I got:
AssertionError: 302 != 200 : Couldn't retrieve content: Response code was 302 (expected 200)
**



0

There are 0 best solutions below