Compare commits
No commits in common. "c962886504c2cc5570056e18895819d3fc73a07d" and "ca33960c443318a7289fe9aa7cf4bc69b65d4c8d" have entirely different histories.
c962886504
...
ca33960c44
5 changed files with 5 additions and 82 deletions
|
|
@ -5,19 +5,13 @@ from django.core.files import File
|
|||
|
||||
from django.contrib.auth import get_user_model
|
||||
|
||||
from django.test import Client
|
||||
|
||||
from django.urls import reverse
|
||||
|
||||
from django.conf import settings
|
||||
|
||||
from .models import Post, Collection
|
||||
|
||||
|
||||
# Create your tests here.
|
||||
|
||||
|
||||
class ModelTests(TestCase):
|
||||
class TestModelTests(TestCase):
|
||||
def setUp(self):
|
||||
self.user = get_user_model().objects.create(email="someone@example.com")
|
||||
with open(
|
||||
|
|
@ -42,67 +36,3 @@ class ModelTests(TestCase):
|
|||
title="A collection", description="foobar", user=self.user
|
||||
)
|
||||
self.assertIn("A collection", str(col))
|
||||
|
||||
|
||||
class PostViewsTests(TestCase):
|
||||
def setUp(self):
|
||||
self.user = get_user_model().objects.create_user(
|
||||
email="someone@example.com",
|
||||
username="someone",
|
||||
password="secret",
|
||||
)
|
||||
with open(
|
||||
os.path.join(os.path.dirname(__file__), "test_data", "test_img.png"),
|
||||
mode="rb",
|
||||
) as f:
|
||||
self.post = Post.objects.create(
|
||||
img=File(f, "somefile.png"),
|
||||
title="Foobar",
|
||||
body="Some file",
|
||||
user=self.user,
|
||||
)
|
||||
|
||||
def tearDown(self):
|
||||
self.post.img.delete()
|
||||
|
||||
def test_anon_cant_see_post(self):
|
||||
c = Client()
|
||||
url = reverse("posts:post_detail", kwargs={"pk": self.post.pk})
|
||||
with self.settings(LOGIN_URL="/loginurl/"):
|
||||
response = c.get(url)
|
||||
self.assertRedirects(
|
||||
response, f"/loginurl/?next={url}", fetch_redirect_response=False
|
||||
)
|
||||
|
||||
def test_logged_in_other_user_cant_see_post(self):
|
||||
get_user_model().objects.create_user(
|
||||
email="someone2@example.com",
|
||||
username="foobar",
|
||||
password="secret",
|
||||
)
|
||||
c = Client()
|
||||
c.login(username="foobar", password="secret")
|
||||
url = reverse("posts:post_detail", kwargs={"pk": self.post.pk})
|
||||
response = c.get(url)
|
||||
self.assertEqual(response.status_code, 404)
|
||||
|
||||
def test_loggin_in_user_can_see_own_posts(self):
|
||||
c = Client()
|
||||
c.login(username="someone", password="secret")
|
||||
url = reverse("posts:post_detail", kwargs={"pk": self.post.pk})
|
||||
response = c.get(url)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
def test_can_post_a_comment(self):
|
||||
c = Client()
|
||||
c.login(username="someone", password="secret")
|
||||
url = reverse("posts:post_detail", kwargs={"pk": self.post.pk})
|
||||
c.post(url, {"comment": "some comment"})
|
||||
self.assertTrue(self.post.comments.filter(comment="some comment").exists())
|
||||
|
||||
def test_posting_a_comment_requires_a_comment(self):
|
||||
c = Client()
|
||||
c.login(username="someone", password="secret")
|
||||
url = reverse("posts:post_detail", kwargs={"pk": self.post.pk})
|
||||
c.post(url, {"comment": ""})
|
||||
self.assertFalse(self.post.comments.all().exists())
|
||||
|
|
|
|||
|
|
@ -2,7 +2,6 @@ from django.urls import path
|
|||
|
||||
from . import views
|
||||
|
||||
app_name = "posts"
|
||||
urlpatterns = [
|
||||
path("post/<int:pk>", views.PostDetailView.as_view(), name="post_detail"),
|
||||
path("post/<int:pk>", views.PostDetailView.as_view()),
|
||||
]
|
||||
|
|
|
|||
|
|
@ -1,16 +1,14 @@
|
|||
from django.views.generic import DetailView
|
||||
from django.views.generic import DetailView, CreateView
|
||||
from django.views.generic.edit import ModelFormMixin
|
||||
from django.forms import modelform_factory
|
||||
from django.http import HttpResponseRedirect
|
||||
|
||||
from django.contrib.auth.mixins import LoginRequiredMixin
|
||||
|
||||
# Create your views here.
|
||||
|
||||
from .models import Post, Comment
|
||||
|
||||
|
||||
class PostDetailView(LoginRequiredMixin, DetailView, ModelFormMixin):
|
||||
class PostDetailView(DetailView, ModelFormMixin):
|
||||
model = Post
|
||||
form_class = modelform_factory(Comment, fields=("comment",))
|
||||
success_url = "#"
|
||||
|
|
@ -22,13 +20,10 @@ class PostDetailView(LoginRequiredMixin, DetailView, ModelFormMixin):
|
|||
comment.save()
|
||||
return HttpResponseRedirect(self.get_success_url())
|
||||
|
||||
def get_queryset(self):
|
||||
return Post.objects.filter(user=self.request.user)
|
||||
|
||||
def post(self, request, *args, **kwargs):
|
||||
self.object = self.get_object()
|
||||
form = self.form_class(request.POST)
|
||||
if form.is_valid():
|
||||
if form.is_valid:
|
||||
return self.form_valid(form)
|
||||
else:
|
||||
return self.form_invalid(form)
|
||||
|
|
|
|||
|
|
@ -21,7 +21,6 @@ from django.conf.urls.static import static
|
|||
|
||||
urlpatterns = [
|
||||
path("admin/", admin.site.urls),
|
||||
path("accounts/", include("django.contrib.auth.urls")),
|
||||
path("posts/", include("flangr.posts.urls")),
|
||||
]
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue