Exemplo n.º 1
0
 def setUp(self):
     self.client = Client()
     self.user = User.objects.create_user(
         'user', '*****@*****.**', '123456'
     )
     self.list_url = reverse('blog:post_api')
     self.posts = mommy.make(Post, user=self.user, _quantity=20)
     self.detail_url = reverse('blog:post_api', args=[self.posts[0].pk])
     self.file_obj = BytesIO()
     image = Image.new('RGBA', size=(50, 50), color=(256, 0, 0))
     image.save(self.file_obj, 'PNG')
     self.file_obj.name = 'test.jpg'
     self.file_obj.seek(0)
     self.client.login(username='******', password='******')
Exemplo n.º 2
0
 def setUp(self):
     self.client = Client()
     self.user = User.objects.create_user(
         'user', '*****@*****.**', '123456'
     )
     self.post = mommy.make(Post, user=self.user)
     self.comments = mommy.make(
         Comment, post=self.post, user=self.user, _quantity=20
     )
     self.list_url = reverse('blog:comment_api', args=[self.post.pk])
     self.detail_url = reverse(
         'blog:comment_api', args=[self.post.pk, self.comments[0].pk]
     )
     self.client.login(username='******', password='******')
Exemplo n.º 3
0
class TestPostAPIView(TestCase):

    def setUp(self):
        self.client = Client()
        self.user = User.objects.create_user(
            'user', '*****@*****.**', '123456'
        )
        self.list_url = reverse('blog:post_api')
        self.posts = mommy.make(Post, user=self.user, _quantity=20)
        self.detail_url = reverse('blog:post_api', args=[self.posts[0].pk])
        self.file_obj = BytesIO()
        image = Image.new('RGBA', size=(50, 50), color=(256, 0, 0))
        image.save(self.file_obj, 'PNG')
        self.file_obj.name = 'test.jpg'
        self.file_obj.seek(0)
        self.client.login(username='******', password='******')

    def tearDown(self):
        for post in Post.objects.all():
            post.image.delete()
            post.delete()

    def test_list(self):
        self.client.logout()
        response = self.client.get(self.list_url)
        data = json.loads(response.content.decode())
        self.assertEqual(len(data['data']), 10)
        self.assertEqual(response.status_code, status.HTTP_200_OK)

        response = self.client.get(self.list_url, {'page': 'invalid'})
        data = json.loads(response.content.decode())
        self.assertEqual(len(data['data']), 10)
        self.assertEqual(response.status_code, status.HTTP_200_OK)

        response = self.client.get(self.list_url, {'page': 100})
        data = json.loads(response.content.decode())
        self.assertEqual(len(data['data']), 10)
        self.assertEqual(response.status_code, status.HTTP_200_OK)

    def test_detail(self):
        self.client.logout()
        response = self.client.get(self.detail_url)
        data = json.loads(response.content.decode())
        self.assertEqual(data['id'], self.posts[0].pk)
        self.assertEqual(response.status_code, status.HTTP_200_OK)

        self.posts[0].delete()
        response = self.client.get(self.detail_url)
        data = json.loads(response.content.decode())
        self.assertEqual(data['error'], 'Resource Not Found')
        self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)

    def test_create(self):
        response = self.client.post(self.list_url, {})
        data = json.loads(response.content.decode())
        self.assertEqual(data['error']['body'][0], 'This field is required.')
        self.assertEqual(data['error']['image'][0], 'This field is required.')
        self.assertEqual(data['error']['slug'][0], 'This field is required.')
        self.assertEqual(data['error']['title'][0], 'This field is required.')
        self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)

        response = self.client.post(
            self.list_url,
            {
                'title': 'my post',
                'slug': 'my-post',
                'body': 'my body',
                'image': self.file_obj
            }
        )
        data = json.loads(response.content.decode())
        self.assertEqual(data['title'], 'my post')
        self.assertEqual(data['slug'], 'my-post')
        self.assertEqual(data['body'], 'my body')
        self.assertEqual(data['user']['id'], self.user.pk)
        self.assertEqual(response.status_code, status.HTTP_201_CREATED)

    def test_update(self):
        response = self.client.put(self.detail_url, {})
        data = json.loads(response.content.decode())
        self.assertEqual(data['error']['body'][0], 'This field is required.')
        self.assertEqual(data['error']['slug'][0], 'This field is required.')
        self.assertEqual(data['error']['title'][0], 'This field is required.')
        self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)

        response = self.client.put(
            self.detail_url,
            {
                'title': 'my post',
                'slug': 'my-post',
                'body': 'my body',
                'image': self.file_obj
            },
        )
        data = json.loads(response.content.decode())
        self.assertEqual(data['title'], 'my post')
        self.assertEqual(data['slug'], 'my-post')
        self.assertEqual(data['body'], 'my body')
        self.assertEqual(data['user']['id'], self.user.pk)
        self.assertEqual(response.status_code, status.HTTP_200_OK)

    def test_partial_update(self):
        post = self.posts[0]

        response = self.client.patch(
            self.detail_url,
            {
                'title': 'my post',
            },
        )
        data = json.loads(response.content.decode())
        self.assertEqual(data['title'], 'my post')
        self.assertEqual(data['slug'], post.slug)
        self.assertEqual(data['body'], post.body)
        self.assertEqual(data['user']['id'], post.user.pk)
        self.assertEqual(response.status_code, status.HTTP_200_OK)

    def test_destroy(self):
        post = self.posts[0]
        response = self.client.delete(self.detail_url)
        self.assertFalse(Post.objects.filter(pk=post.pk).exists())
        self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)

        response = self.client.delete(self.detail_url)
        data = json.loads(response.content.decode())
        self.assertEqual(data['error'], 'Resource Not Found')
        self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
Exemplo n.º 4
0
class TestCommentAPIView(TestCase):

    def setUp(self):
        self.client = Client()
        self.user = User.objects.create_user(
            'user', '*****@*****.**', '123456'
        )
        self.post = mommy.make(Post, user=self.user)
        self.comments = mommy.make(
            Comment, post=self.post, user=self.user, _quantity=20
        )
        self.list_url = reverse('blog:comment_api', args=[self.post.pk])
        self.detail_url = reverse(
            'blog:comment_api', args=[self.post.pk, self.comments[0].pk]
        )
        self.client.login(username='******', password='******')

    def test_list(self):
        self.client.logout()
        response = self.client.get(self.list_url)
        data = json.loads(response.content.decode())
        self.assertEqual(len(data['data']), 10)
        self.assertEqual(response.status_code, status.HTTP_200_OK)

        response = self.client.get(self.list_url, {'page': 'invalid'})
        data = json.loads(response.content.decode())
        self.assertEqual(len(data['data']), 10)
        self.assertEqual(response.status_code, status.HTTP_200_OK)

        response = self.client.get(self.list_url, {'page': 100})
        data = json.loads(response.content.decode())
        self.assertEqual(len(data['data']), 10)
        self.assertEqual(response.status_code, status.HTTP_200_OK)

    def test_detail(self):
        self.client.logout()
        response = self.client.get(self.detail_url)
        data = json.loads(response.content.decode())
        self.assertEqual(data['id'], self.comments[0].pk)
        self.assertEqual(response.status_code, status.HTTP_200_OK)

        self.comments[0].delete()
        response = self.client.get(self.detail_url)
        data = json.loads(response.content.decode())
        self.assertEqual(data['error'], 'Resource Not Found')
        self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)

    def test_create(self):
        response = self.client.post(self.list_url, {})
        data = json.loads(response.content.decode())
        self.assertEqual(
            data['error']['comment'][0], 'This field is required.'
        )
        self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)

        response = self.client.post(
            self.list_url,
            {
                'comment': 'my comment'
            }
        )
        data = json.loads(response.content.decode())
        self.assertEqual(data['post'], self.post.pk)
        self.assertEqual(data['comment'], 'my comment')
        self.assertEqual(data['user']['id'], self.user.pk)
        self.assertEqual(response.status_code, status.HTTP_201_CREATED)

    def test_update(self):
        response = self.client.put(self.detail_url, {})
        data = json.loads(response.content.decode())
        self.assertEqual(
            data['error']['comment'][0], 'This field is required.'
        )
        self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)

        response = self.client.put(
            self.detail_url,
            {
                'comment': 'my comment'
            },
        )
        data = json.loads(response.content.decode())
        self.assertEqual(data['post'], self.post.pk)
        self.assertEqual(data['comment'], 'my comment')
        self.assertEqual(data['user']['id'], self.user.pk)
        self.assertEqual(response.status_code, status.HTTP_200_OK)

    def test_partial_update(self):
        comment = self.comments[0]

        response = self.client.patch(
            self.detail_url,
            {
                'comment': 'my comment',
            },
        )
        data = json.loads(response.content.decode())
        self.assertEqual(data['id'], comment.pk)
        self.assertEqual(data['post'], self.post.pk)
        self.assertEqual(data['comment'], 'my comment')
        self.assertEqual(data['user']['id'], self.user.pk)
        self.assertEqual(response.status_code, status.HTTP_200_OK)

    def test_destroy(self):
        comment = self.comments[0]
        response = self.client.delete(self.detail_url)
        self.assertFalse(Comment.objects.filter(pk=comment.pk).exists())
        self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)

        response = self.client.delete(self.detail_url)
        data = json.loads(response.content.decode())
        self.assertEqual(data['error'], 'Resource Not Found')
        self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)