예제 #1
0
파일: randomdb.py 프로젝트: HiPiH/life
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('.')
예제 #2
0
    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"", ),
        )
예제 #3
0
    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"", ),
        )
예제 #4
0
    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,
            ),
        )
예제 #5
0
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
예제 #6
0
    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())
예제 #7
0
    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,
            ),
        )
예제 #8
0
파일: randomdb.py 프로젝트: HiPiH/life
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 ( '.' )
예제 #9
0
    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)
예제 #10
0
# -*- 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']