Статьи создаются админом. Аутентифицированный пользователь имеет право читать их и нравится им или не нравится им. Мне нужно проверить вид.
Модель:
class Like(models.Model):
reader = models.ForeignKey(User, on_delete = models.CASCADE)
article = models.ForeignKey(Article, on_delete = models.CASCADE)
Представление выглядит следующим образом (пользователь не должен передавать никаких параметров - ему «нравится» статья, и на основе его идентификатора создается новый реестр. идентификатор статьи):
class LikeCreate(generics.CreateAPIView):
queryset = Like.objects.all()
serializer_class = LikeSerializer
Тестовый класс:
class TestLikeViews(APITestCase):
def setUp(self):
self.factory = APIRequestFactory()
self.user = User.objects.create_user(
username='Name', email='test@company.com', password='top_secret')
self.article = Article.objects.create(
author='X', title='Title', body='Body content...')
self.like = Like.objects.create(
reader=self.user, article=self.article)
def test_like_post_user(self):
request = self.factory.post('likes/', kwargs={'reader': self.user, 'article': self.article})
request.user = self.user
response = LikeCreate.as_view()(request, reader=self.user, article=self.article)
self.assertEqual(response.status_code, 201,
f'Expected Response Code 201 - CREATED, received {response.status_code} instead.')
Я получаю следующую ошибку:
line 105, in test_like_post_user
f'Expected Response Code 201 - CREATED, received {response.status_code} instead.')
AssertionError: 400 != 201 : Expected Response Code 201 - CREATED, received 400 instead.
Строка 105 - это строка сf-строка - последняя строка. Однако, когда я запускаю сервер и проверяю эту конечную точку вручную - все работает просто отлично. Я полагаю, что проблема заключается в том, как я сформулировал тестовую функцию.
Спасибо!