From d9a18b8206e6ffac0a08262c5b81270ca720de9d Mon Sep 17 00:00:00 2001 From: tol1an Date: Sat, 20 Jan 2024 20:53:47 +0300 Subject: [PATCH] broken tests --- dump.rdb | Bin 0 -> 92 bytes news/tests.py | 87 +++++++++++++++++++++++++++++++++++++++++++++- projects/tests.py | 2 +- pytest.ini | 2 ++ 4 files changed, 89 insertions(+), 2 deletions(-) create mode 100644 dump.rdb create mode 100644 pytest.ini diff --git a/dump.rdb b/dump.rdb new file mode 100644 index 0000000000000000000000000000000000000000..6afe13d732cfc78eb722e0522a8f1a41d08762c5 GIT binary patch literal 92 zcmWG?b@2=~Ffg$E#aWb^l3A= literal 0 HcmV?d00001 diff --git a/news/tests.py b/news/tests.py index 05362bdb..2439b67e 100644 --- a/news/tests.py +++ b/news/tests.py @@ -1,5 +1,90 @@ from django.test import TestCase +from rest_framework.test import APIRequestFactory, force_authenticate + +from tests.constants import USER_CREATE_DATA + +from industries.models import Industry +from news.models import News +from news.views import NewsList +from users.models import CustomUser +from users.views import UserList +from projects.models import Project +from projects.views import ProjectList class NewsTestCase(TestCase): - pass + def setUp(self): + self.factory = APIRequestFactory() + self.news_list_view = NewsList.as_view() + self.user_list_view = UserList.as_view() + self.project_list_view = ProjectList.as_view() + self.project_create_data = { + "name": "Test Project", + "description": "Test Description", + "industry": Industry.objects.create(name="Test Industry").id, + "step": 1, + } + self.user = self.user_create() + self.project = self.create_project(self.user, self.project_create_data) + self.news = self.create_news(self.user, self.project, {"title": "Test News", "content": "Test Content"}) + + def test_news_creation(self): + news_data = { + "title": "Test News", + "content": "Test Content", + "project": self.project.pk, + } + + request = self.factory.post("news/", news_data) + force_authenticate(request, user=self.user) + + response = self.news_list_view(request) + self.assertEqual(response.status_code, 201) + self.assertEqual(response.data["title"], "Test News") + self.assertEqual(response.data["content"], "Test Content") + self.assertEqual(response.data["project"], self.project.pk) + + def test_news_creation_with_wrong_data(self): + news_data = { + "title": "T" * 257, + "content": "Test Content", + "project": self.project.pk, + } + + request = self.factory.post("news/", news_data) + force_authenticate(request, user=self.user) + + response = self.news_list_view(request) + self.assertEqual(response.status_code, 400) + + def test_news_deletion(self): + request = self.factory.delete(f"news/{self.news.pk}/") + force_authenticate(request, user=self.user) + + response = self.news_list_view(request) + self.assertEqual(response.status_code, 204) + + def create_project(self, user, project_data): + request = self.factory.post("projects/", project_data) + force_authenticate(request, user=user) + + response = self.project_list_view(request) + project_id = response.data["id"] + return Project.objects.get(id=project_id) + + def create_news(self, user, project, news_data): + request = self.factory.post("news/", news_data) + force_authenticate(request, user=user) + + response = self.news_list_view(request) + news_id = response.data["id"] + return News.objects.get(id=news_id) + + def user_create(self): + request = self.factory.post("auth/users/", USER_CREATE_DATA) + response = self.user_list_view(request) + user_id = response.data["id"] + user = CustomUser.objects.get(id=user_id) + user.is_active = True + user.save() + return user diff --git a/projects/tests.py b/projects/tests.py index ff30af9d..47948db1 100644 --- a/projects/tests.py +++ b/projects/tests.py @@ -71,4 +71,4 @@ def user_create(self): user = CustomUser.objects.get(id=user_id) user.is_active = True user.save() - return user + return user \ No newline at end of file diff --git a/pytest.ini b/pytest.ini new file mode 100644 index 00000000..ce56e919 --- /dev/null +++ b/pytest.ini @@ -0,0 +1,2 @@ +[pytest] +DJANGO_SETTINGS_MODULE = procollab.settings