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)
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)
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))
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)