示例#1
0
    def test_alert(self):
        user1 = ProfileFactory().user
        reaction = ReactionFactory(article=self.article,
                                   author=user1,
                                   position=1)
        login_check = self.client.login(username=self.user.username,
                                        password='******')
        self.assertEqual(login_check, True)
        # signal reaction
        result = self.client.post(reverse('zds.article.views.edit_reaction') +
                                  '?message={0}'.format(reaction.pk), {
                                      'signal_text': 'Troll',
                                      'signal_message': 'Confirmer',
                                  },
                                  follow=False)
        self.assertEqual(result.status_code, 302)
        self.assertEqual(Alert.objects.all().count(), 1)

        # connect with staff
        login_check = self.client.login(username=self.staff.username,
                                        password='******')
        self.assertEqual(login_check, True)
        # solve alert
        result = self.client.post(reverse('zds.article.views.solve_alert'), {
            'alert_pk': Alert.objects.first().pk,
            'text': 'Ok',
            'delete_message': 'Resoudre',
        },
                                  follow=False)
        self.assertEqual(result.status_code, 302)
        self.assertEqual(Alert.objects.all().count(), 0)
        self.assertEqual(
            PrivateTopic.objects.filter(author=self.user).count(), 1)
        self.assertEquals(len(mail.outbox), 0)
示例#2
0
    def test_add_reaction(self):
        """To test add reaction for article."""
        user1 = ProfileFactory().user
        self.client.login(username=user1.username, password='******')

        # add empty reaction
        result = self.client.post(reverse('zds.article.views.answer') +
                                  '?article={0}'.format(self.article.pk), {
                                      'last_reaction': '0',
                                      'text': u''
                                  },
                                  follow=False)
        self.assertEqual(result.status_code, 200)
        # check reactions's number
        self.assertEqual(Reaction.objects.all().count(), 0)

        # add reaction
        result = self.client.post(
            reverse('zds.article.views.answer') +
            '?article={0}'.format(self.article.pk), {
                'last_reaction': '0',
                'text': u'Histoire de blablater dans les comms de l\'article'
            },
            follow=False)
        self.assertEqual(result.status_code, 302)

        # check reactions's number
        self.assertEqual(Reaction.objects.all().count(), 1)

        # check values
        art = Article.objects.get(pk=self.article.pk)
        first_art = Reaction.objects.first()
        self.assertEqual(first_art.article, art)
        self.assertEqual(first_art.author.pk, user1.pk)
        self.assertEqual(first_art.position, 1)
        self.assertEqual(first_art.pk, art.last_reaction.pk)
        self.assertEqual(
            Reaction.objects.first().text,
            u'Histoire de blablater dans les comms de l\'article')

        # test antispam return 403
        result = self.client.post(reverse('zds.article.views.answer') +
                                  '?article={0}'.format(self.article.pk), {
                                      'last_reaction': art.last_reaction.pk,
                                      'text': u'Histoire de tester l\'antispam'
                                  },
                                  follow=False)
        self.assertEqual(result.status_code, 403)

        ReactionFactory(article=self.article, position=2, author=self.staff)

        # test more reaction
        result = self.client.post(
            reverse('zds.article.views.answer') +
            '?article={0}'.format(self.article.pk), {
                'last_reaction': self.article.last_reaction.pk,
                'text': u'Histoire de tester l\'antispam'
            },
            follow=False)
        self.assertEqual(result.status_code, 302)
示例#3
0
def load_comment_article(cli, size, fake):
    """
    Load article's comments
    """
    nb_avg_posts = size * 20
    cli.stdout.write(
        u"Nombres de messages à poster en moyenne dans un article : {}".format(
            nb_avg_posts))
    tps1 = time.time()
    nb_articles = Article.objects.filter(sha_public__isnull=False).count()
    articles = list(Article.objects.filter(sha_public__isnull=False).all())
    nb_users = User.objects.count()
    profiles = list(Profile.objects.all())
    for i in range(0, nb_articles):
        nb = randint(0, nb_avg_posts * 2)
        for j in range(0, nb):
            post = ReactionFactory(article=articles[i],
                                   author=profiles[j % nb_users].user,
                                   position=j + 1)
            post.text = fake.paragraph(nb_sentences=5,
                                       variable_nb_sentences=True)
            post.text_html = emarkdown(post.text)
            post.save()
            sys.stdout.write(" Article {}/{}  \tComment {}/{}  \r".format(
                i + 1, nb_articles, j + 1, nb))
            sys.stdout.flush()
    tps2 = time.time()
    cli.stdout.write(u"\nFait en {} sec".format(tps2 - tps1))
示例#4
0
    def test_migrate_zep12(self):
        private_mini_tuto = MiniTutorialFactory(title="Private Mini tuto")
        private_mini_tuto.authors.add(self.user_author)
        private_mini_tuto.save()
        multi_author_tuto = MiniTutorialFactory(title="Multi User Tuto")
        multi_author_tuto.authors.add(self.user_author)
        multi_author_tuto.authors.add(self.staff)
        multi_author_tuto.save()
        public_mini_tuto = PublishedMiniTutorial(title="Public Mini Tuto")
        public_mini_tuto.authors.add(self.user_author)
        public_mini_tuto.save()
        OldTutoValidation(
            tutorial=public_mini_tuto,
            version=public_mini_tuto.sha_public,
            date_proposition=datetime.datetime.now(),
            comment_authors=u"La vie est belle, le destin s'en écarte.",
            comment_validator=u"Personne ne joue avec les mêmes cartes.",
            validator=self.staff,
            status="ACCEPT",
            date_reserve=datetime.datetime.now(),
            date_validation=datetime.datetime.now()).save()
        staff_note = NoteFactory(tutorial=public_mini_tuto,
                                 position=1,
                                 author=self.staff)
        liked_note = NoteFactory(tutorial=public_mini_tuto,
                                 position=2,
                                 author=self.user_author)
        t_read = TutorialRead()
        t_read.tutorial = public_mini_tuto
        t_read.user = self.staff
        t_read.note = staff_note
        t_read.save()
        like = CommentLike()
        like.comments = liked_note
        like.user = self.staff
        like.save()
        big_tuto = BigTutorialFactory(title="Big tuto")
        big_tuto.authors.add(self.user_author)
        big_tuto.save()
        public_big_tuto = PublishedBigTutorial(light=False,
                                               title="Public Big Tuto")
        public_big_tuto.authors.add(self.user_author)
        public_big_tuto.save()
        private_article = ArticleFactory(title="Private Article")
        private_article.authors.add(self.user_author)
        private_article.save()
        multi_author_article = ArticleFactory(title="Multi Author Article")
        multi_author_article.authors.add(self.user_author)
        multi_author_article.authors.add(self.staff)
        multi_author_article.save()
        public_article = PublishedArticleFactory(title="Public Article")
        public_article.authors.add(self.user_author)
        public_article.save()
        OldArticleValidation(
            article=public_article,
            version=public_article.sha_public,
            date_proposition=datetime.datetime.now(),
            comment_authors=u"Pourquoi fortune et infortune?",
            comment_validator=u"Pourquoi suis-je né les poches vides?",
            validator=self.staff,
            status="ACCEPT",
            date_reserve=datetime.datetime.now(),
            date_validation=datetime.datetime.now()).save()
        staff_note = ReactionFactory(article=public_article,
                                     position=1,
                                     author=self.staff)
        liked_reaction = ReactionFactory(article=public_article,
                                         position=2,
                                         author=self.user_author)
        a_read = ArticleRead()
        a_read.article = public_article
        a_read.user = self.staff
        a_read.reaction = staff_note
        a_read.save()
        like = CommentLike()
        like.comments = liked_reaction
        like.user = self.staff
        like.save()
        category1 = CategoryFactory(position=1)
        forum11 = ForumFactory(category=category1, position_in_category=1)
        beta_tuto = BetaMiniTutorialFactory(title=u"Beta Tuto",
                                            forum=forum11,
                                            author=self.user_author)
        beta_tuto.authors.add(self.user_author)
        beta_tuto.save()
        call_command('migrate_to_zep12')
        # 1 tuto in setup, 4 mini tutos, 1 big tuto, 3 articles
        self.assertEqual(
            PublishableContent.objects.filter(
                authors__pk__in=[self.user_author.pk]).count(), 10)
        # if we had n published content we must have 2 * n PublishedContent entities to handle redirections.
        self.assertEqual(
            PublishedContent.objects.filter(
                content__authors__pk__in=[self.user_author.pk]).count(), 2 * 3)
        self.assertEqual(
            ContentReaction.objects.filter(author__pk=self.staff.pk).count(),
            2)
        migrated_pulished_article = PublishableContent.objects.filter(
            authors__in=[self.user_author],
            title=public_article.title,
            type="ARTICLE").first()
        self.assertIsNotNone(migrated_pulished_article)
        self.assertIsNotNone(migrated_pulished_article.last_note)
        self.assertEqual(
            2,
            ContentReaction.objects.filter(
                related_content=migrated_pulished_article).count())
        self.assertEqual(
            1,
            ContentRead.objects.filter(
                content=migrated_pulished_article).count())
        self.assertTrue(
            migrated_pulished_article.is_public(
                migrated_pulished_article.sha_public))
        self.assertTrue(
            migrated_pulished_article.load_version(
                migrated_pulished_article.sha_public).has_extracts())
        self.assertEqual(
            len(
                migrated_pulished_article.load_version(
                    migrated_pulished_article.sha_public).children), 2)

        migrated_pulished_tuto = PublishableContent.objects.filter(
            authors__in=[self.user_author],
            title=public_mini_tuto.title,
            type="TUTORIAL").first()
        self.assertIsNotNone(migrated_pulished_tuto)
        self.assertIsNotNone(migrated_pulished_tuto.last_note)
        self.assertEqual(
            2,
            ContentReaction.objects.filter(
                related_content=migrated_pulished_tuto).count())
        self.assertEqual(
            1,
            ContentRead.objects.filter(content=migrated_pulished_tuto).count())
        self.assertTrue(
            migrated_pulished_tuto.is_public(
                migrated_pulished_tuto.sha_public))
        beta_content = PublishableContent.objects.filter(
            title=beta_tuto.title).first()
        self.assertIsNotNone(beta_content)
        self.assertEqual(beta_content.sha_beta, beta_tuto.sha_beta)
        self.assertEqual(
            Topic.objects.filter(key=beta_tuto.pk).first().pk,
            beta_content.beta_topic.pk)

        multi_author_content = PublishableContent.objects.filter(type="TUTORIAL", title=multi_author_tuto.title)\
            .first()
        self.assertIsNotNone(multi_author_content)
        self.assertEqual(multi_author_content.authors.count(),
                         multi_author_tuto.authors.count())
        multi_author_content = PublishableContent.objects.filter(type="ARTICLE", title=multi_author_article.title)\
            .first()
        self.assertIsNotNone(multi_author_content)
        self.assertEqual(multi_author_content.authors.count(),
                         multi_author_article.authors.count())
        old_tutorial_module_prefix = "oldtutoriels"
        old_article_module_prefix = "oldarticles"
        new_tutorial_module_prefix = "tutoriels"
        new_article_module_prefix = "articles"
        public_article_url = public_article.get_absolute_url_online()\
            .replace(old_article_module_prefix, new_article_module_prefix)
        public_tutorial_url = public_mini_tuto.get_absolute_url_online()\
            .replace(old_tutorial_module_prefix, new_tutorial_module_prefix)
        self.assertEqual(301, self.client.get(public_article_url).status_code)
        self.assertEqual(301, self.client.get(public_tutorial_url).status_code)
        public_chapter = Chapter.objects.filter(
            part__tutorial__pk=public_big_tuto.pk).first()
        self.assertIsNotNone(public_chapter)
        public_chapter_url = public_chapter.get_absolute_url_online()
        public_chapter_url = public_chapter_url.replace(
            old_tutorial_module_prefix, new_tutorial_module_prefix)

        self.assertEqual(301, self.client.get(public_chapter_url).status_code)
        self.assertEqual(
            200,
            self.client.get(public_chapter_url, follow=True).status_code)
        self.assertEqual(
            200,
            self.client.get(public_article_url, follow=True).status_code)
        self.assertEqual(
            200,
            self.client.get(public_tutorial_url, follow=True).status_code)
        tuto_validation = Validation.objects.filter(
            content__pk=migrated_pulished_tuto.pk).first()
        self.assertIsNotNone(tuto_validation)
        self.assertEqual(tuto_validation.status, "ACCEPT")
        self.assertEqual(tuto_validation.validator.pk, self.staff.pk)
        article_validation = Validation.objects.filter(
            content__pk=migrated_pulished_article.pk).first()
        self.assertIsNotNone(article_validation)
        self.assertEqual(article_validation.status, "ACCEPT")
        self.assertEqual(article_validation.validator.pk, self.staff.pk)