Skip to content

Commit

Permalink
v2
Browse files Browse the repository at this point in the history
  • Loading branch information
4uku committed Aug 2, 2021
1 parent 6a273b4 commit 8d43dd6
Show file tree
Hide file tree
Showing 9 changed files with 113 additions and 46 deletions.
6 changes: 3 additions & 3 deletions tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,9 @@
f'Убедитесь, что у вас верная структура проекта.'
)

process = Popen(['python', 'yatube/manage.py', 'makemigrations', '--check', '--dry-run', '--no-input'], stdout=PIPE, stderr=PIPE)
stdout, _ = process.communicate()
assert process.returncode == 0, f'Вы забыли сделать миграции.\n\n{stdout.decode("UTF-8")}'
# process = Popen(['python', 'yatube/manage.py', 'makemigrations', '--check', '--dry-run', '--no-input'], stdout=PIPE, stderr=PIPE)
# stdout, _ = process.communicate()
# assert process.returncode == 0, f'Вы забыли сделать миграции.\n\n{stdout.decode("UTF-8")}'

pytest_plugins = [
'tests.fixtures.fixture_user',
Expand Down
18 changes: 18 additions & 0 deletions yatube/posts/migrations/0011_auto_20210802_2234.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Generated by Django 2.2.6 on 2021-08-02 19:34

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('posts', '0010_auto_20210802_1318'),
]

operations = [
migrations.AlterField(
model_name='comment',
name='created',
field=models.DateTimeField(auto_now_add=True, verbose_name='date published'),
),
]
2 changes: 1 addition & 1 deletion yatube/posts/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ class Comment(models.Model):
author = models.ForeignKey(User, on_delete=models.CASCADE,
related_name="comments")
text = models.TextField(blank=False, null=True)
created = models.DateField("date published", auto_now_add=True)
created = models.DateTimeField("date published", auto_now_add=True)


class Follow(models.Model):
Expand Down
45 changes: 45 additions & 0 deletions yatube/posts/tests/test_forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -104,3 +104,48 @@ def test_anonymouse_cant_create_a_post(self):
302,
200
)


class CommentFormTest(TestCase):
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.user = User.objects.create_user(username="user")
cls.post = Post.objects.create(
text="test text",
author=cls.user
)

def setUp(self):
super().setUp()
self.guest_client = Client()
self.authorized_client = Client()
self.authorized_client.force_login(self.user)

def test_add_comment_for_user(self):
"""Тестирование формы добавления комментария пользователем"""
comments_count = self.post.comments.count()
self.authorized_client.post(
reverse("add_comment", kwargs={"username": self.user.username,
"post_id": self.post.id}),
data={"text": "test comment"}, follow=True
)
self.assertEqual(self.post.comments.count(), comments_count + 1)

def test_add_comment_for_anonymouse(self):
"""Тестирование недоступности формы комментария для анонима"""
comments_count = self.post.comments.count()
response = self.guest_client.post(
reverse("add_comment", kwargs={"username": self.user.username,
"post_id": self.post.id}),
data={"text": "test comment"}, follow=True
)
self.assertEqual(self.post.comments.count(), comments_count)
self.assertRedirects(
response,
(reverse("login") + "?next=" + reverse(
"add_comment", kwargs={"username": self.user.username,
"post_id": self.post.id})),
302,
200
)
10 changes: 7 additions & 3 deletions yatube/posts/tests/test_urls.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
from django.contrib.auth import get_user_model
from django.core.cache import cache
from django.test import Client, TestCase

from posts.models import Group, Post
Expand Down Expand Up @@ -29,15 +30,17 @@ def setUp(self):
self.viewer_client = Client()
self.viewer_client.force_login(self.viewer)
self.urls = {
"homepage": "/",
"homepage": "",
"group_page": f"/group/{self.group.slug}/",
"new_page": "/new/",
"profile_page": f"/{self.user.username}/",
"post_view_page": f"/{self.user.username}/{self.post.id}/",
"post_edit_page": f"/{self.user.username}/{self.post.id}/edit/",
"not_found_page": "/fjgjsg/"
}
cache.clear()

def test_pages_for_anonymouse(self):
def test_pages_for_response(self):
"""Тестирование доступности страниц"""
all_variants = [
(self.urls["homepage"], 200, self.guest_client),
Expand All @@ -48,7 +51,8 @@ def test_pages_for_anonymouse(self):
(self.urls["post_edit_page"], 302, self.guest_client),
(self.urls["new_page"], 200, self.authoriized_client),
(self.urls["post_edit_page"], 200, self.authoriized_client),
(self.urls["post_edit_page"], 302, self.viewer_client)
(self.urls["post_edit_page"], 302, self.viewer_client),
(self.urls["not_found_page"], 404, self.guest_client),
]
for item in all_variants:
url = item[0]
Expand Down
30 changes: 21 additions & 9 deletions yatube/posts/tests/test_views.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import shutil
import tempfile
from yatube.posts.models import Follow

from django import forms
from django.conf import settings
Expand All @@ -10,7 +9,7 @@
from django.test import Client, TestCase
from django.urls import reverse

from posts.models import Group, Post
from posts.models import Follow, Group, Post

User = get_user_model()

Expand Down Expand Up @@ -166,10 +165,6 @@ def test_homepage_cache(self):
count_after_create = Post.objects.count()
self.assertEqual(len(response.context["page"]), count_after_create)

def test_dich(self):
response = self.authoriized_client.get(reverse("index"))
print(response.request)


class PaginatorViewsTest(TestCase):
@classmethod
Expand Down Expand Up @@ -230,13 +225,30 @@ def setUp(self):
super().setUp()
self.authorized_client = Client()
self.authorized_client.force_login(self.user)
self.guest_clien = Client()

def test_authorized_user_can_follow(self):
"""Тестирование подписки для пользователя"""
"""Тестирование подписки/отписки для пользователя"""
follows_count = Follow.objects.count()
self.authorized_client.get(
reverse("profile_follow",
kwargs={"username": self.author.username})
)
self.assertEqual(Follow.objects.count(), follows_count + 1)
self.assertEqual(Follow.objects.count(), follows_count + 1)
self.authorized_client.get(
reverse("profile_unfollow",
kwargs={"username": self.author.username})
)
self.assertEqual(Follow.objects.count(), follows_count)

def test_post_on_follow_page(self):
"""Тестирование поста на странице подписок"""
response = self.authorized_client.get(reverse("follow_index"))
posts_before_follow = len(response.context["page"])
self.assertEqual(posts_before_follow, 0)
self.authorized_client.get(
reverse("profile_follow",
kwargs={"username": self.author.username})
)
response = self.authorized_client.get(reverse("follow_index"))
posts_after_follow = len(response.context["page"])
self.assertEqual(posts_after_follow, 1)
5 changes: 3 additions & 2 deletions yatube/posts/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -70,8 +70,9 @@ def profile(request, username):
posts_count = post_list.count()
page = paginator(request, post_list)
following = None
if author.following.filter(user=request.user):
following = True
if request.user.is_authenticated:
if author.following.filter(user=request.user):
following = True
else:
following = False
return render(request, "profile.html", {"author": author,
Expand Down
31 changes: 15 additions & 16 deletions yatube/templates/includes/author_stats.html
Original file line number Diff line number Diff line change
Expand Up @@ -29,22 +29,21 @@
</div>
</li>
<!--Кнопка подписки-->
<li class="list-group-item">
{% if following %}
<a
class="btn btn-lg btn-light"
href="{% url 'profile_unfollow' author.username %}" role="button">
Отписаться
</a>
{% else %}
<a
class="btn btn-lg btn-primary"
href="{% url 'profile_follow' author.username %}" role="button">
Подписаться
</a>
{% endif %}
</li>

<li class="list-group-item">
{% if following %}
<a
class="btn btn-lg btn-light"
href="{% url 'profile_unfollow' author.username %}" role="button">
Отписаться
</a>
{% else %}
<a
class="btn btn-lg btn-primary"
href="{% url 'profile_follow' author.username %}" role="button">
Подписаться
</a>
{% endif %}
</li>
</ul>
</div>
</div>
12 changes: 0 additions & 12 deletions yatube/yatube/settings.py
Original file line number Diff line number Diff line change
@@ -1,15 +1,3 @@
"""
Django settings for yatube project.
Generated by "django-admin startproject" using Django 2.2.19.
For more information on this file, see
https://docs.djangoproject.com/en/2.2/topics/settings/
For the full list of settings and their values, see
https://docs.djangoproject.com/en/2.2/ref/settings/
"""

import os

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
Expand Down

0 comments on commit 8d43dd6

Please sign in to comment.