def handle(): randomize.out("\ntags:") for i in range(50): Tag(name=randomize.string(20)).save() randomize.out('.') print "\nusers:", for i in range(5): user, created = User.objects.get_or_create( username='******' % i, email='*****@*****.**' % str(i), password='******', is_blog_author=True, first_name=u'Иван%s' % str(i), second_name=u'Иванович%s' % str(i), last_name=u'Иванов%s' % str(i), ) if created: user.save() print "\nposts" for j in range(50): post = Post( author=user, title='Post%s' % str(i), text='Post text %s' % str(i), published=True, enable_comments=True, ) post.save() if randomize.boolean(): post.tags = Tag.objects.order_by('?')[:randomize.integer(1, 6)] randomize.out('.') randomize.out('.')
def test_post(self): post = Post() post.save() self.validate_response( method="post", url=f"/blog/post/{post.pk}/", expected_status_code=405, expected_view=BlogPostView, expected_template="blog/post.html", expected_view_name="blog:post", content_filters=(lambda _c: _c == b"", ), )
def test_get(self): post = Post() post.save() user = self.create_user() client = Client() client.login(username=user.username, password=user.username) self.validate_response( client=client, url=f"/blog/post/{post.pk}/comment/", expected_status_code=405, expected_view=BlogPostView, expected_view_name="blog:post", # не проверяет тк код 405 content_filters=(lambda _c: _c == b"", ), )
def test_get_existing_anon(self): placeholder = urandom(4).hex() post = Post(title=f"t_{placeholder}", content=f"c_{placeholder}") post.save() self.validate_response( url=f"/blog/post/{post.pk}/", expected_view=BlogPostView, expected_template="blog/post.html", expected_view_name="blog:post", content_filters=( lambda _c: f"t_{placeholder}".encode() in _c, lambda _c: f"c_{placeholder}".encode() in _c, lambda _c: b"<form" not in _c, ), )
class PostAPITests(LoggedUserAPITestCase): def setUp(self) -> None: super().setUp() self.tag = Tag(name='new tag') self.tag.save() self.post = Post(title='admin', body='*****@*****.**', author=self.current_user) self.post.save() self.post.tags.add(self.tag) self.post.save() def tearDown(self) -> None: super().tearDown() self.tag.delete() self.post.delete() def get_posts(self, **kwargs): url = reverse_lazy('post-list') return self.client.get(url, kwargs, format='json') def get_post(self, slug, **kwargs): url = reverse_lazy('post-detail', kwargs={'slug': slug}) return self.client.get(url, kwargs, format='json') def post_new_post(self, title, body, tags): url = reverse_lazy('post-list') data = {"title": title, "body": body, "tags": tags} response = self.client.post(url, data, format='json') return response def test_post_new_post_with_valid_data(self): response = self.post_new_post('post title', 'post body', [self.tag.pk]) assert response.status_code == status.HTTP_201_CREATED def test_get_posts(self): response = self.get_posts() assert response.status_code == status.HTTP_200_OK def test_get_post_with_valid_slug(self): response = self.get_post(self.post.slug) assert response.status_code == status.HTTP_200_OK def test_get_post_with_fake_slug(self): response = self.get_post('fake-slug') # fake slug assert response.status_code == status.HTTP_404_NOT_FOUND
def test_anon(self): placeholder = urandom(4).hex() post = Post(title=f"t_{placeholder}", content=f"c_{placeholder}") post.save() self.assertEqual(0, post.comments.count()) self.validate_response( method="post", url=f"/blog/post/{post.pk}/comment/", expected_view=SignInView, expected_view_name="onboarding:sign_in", content_filters=( lambda _c: f"t_{placeholder}".encode() not in _c, lambda _c: f"c_{placeholder}".encode() not in _c, ), ) self.assertEqual(0, post.comments.count())
def test_get_existing_authed(self): placeholder = urandom(4).hex() user = self.create_user(placeholder) client = Client() client.login(username=user.username, password=placeholder) post = Post(title=f"t_{placeholder}", content=f"c_{placeholder}") post.save() self.validate_response( client=client, url=f"/blog/post/{post.pk}/", expected_view=BlogPostView, expected_template="blog/post.html", expected_view_name="blog:post", content_filters=( lambda _c: f"t_{placeholder}".encode() in _c, lambda _c: f"c_{placeholder}".encode() in _c, lambda _c: b"<form" in _c, ), )
def handle ( ): randomize.out("\ntags:") for i in range( 50 ): Tag( name = randomize.string(20) ).save() randomize.out('.') print "\nusers:", for i in range( 5 ): user, created = User.objects.get_or_create( username = '******' % i , email = '*****@*****.**' % str( i ), password = '******', is_blog_author = True, first_name = u'Иван%s' % str( i ), second_name = u'Иванович%s' % str( i ), last_name = u'Иванов%s' % str ( i ), ) if created: user.save () print "\nposts" for j in range ( 50 ): post=Post ( author = user, title = 'Post%s' % str ( i ), text = 'Post text %s' % str ( i ), published = True, enable_comments = True, ) post.save () if randomize.boolean(): post.tags = Tag.objects.order_by('?')[:randomize.integer(1, 6)] randomize.out('.') randomize.out ( '.' )
def test_post(self): placeholder = urandom(4).hex() user = self.create_user(placeholder) client = Client() client.login(username=user.username, password=user.username) post = Post(title=f"t_{placeholder}", content=f"c_{placeholder}") post.save() self.assertEqual(0, post.comments.count()) self.validate_response( client=client, method="post", url=f"/blog/post/{post.pk}/comment/", form_data={ "message": f"m_{placeholder}", "author": user.pk, "post": post.pk, }, expected_view=BlogPostView, expected_view_name="blog:post", content_filters=( lambda _c: b"<form" in _c, lambda _c: f"c_{placeholder}".encode() in _c, lambda _c: f"m_{placeholder}".encode() in _c, lambda _c: f"t_{placeholder}".encode() in _c, ), ) self.assertEqual(1, post.comments.count()) comment = post.comments.first() self.assertEqual(user, comment.author) self.assertEqual(post, comment.post) self.assertEqual(f"m_{placeholder}", comment.message)
# -*- coding: utf-8 -*- import os import codecs from datetime import datetime import sys sys.path.append('../') from apps.blog.models import Post project_root = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) fixture = eval(codecs.open(os.path.join(project_root, 'templates/content/new_blog_fixture.json'), 'r', encoding='utf-8').read()) for obj in fixture: post = Post( title=unicode(obj['title'], 'utf-8'), content=unicode(obj['content'], 'utf-8'), pub_date=datetime.strptime(obj['pub_date'], '%Y-%m-%d %H:%M:%S') ) post.save(safe=True) print 'added %s' % obj['title']