def test_submit_same_report_twice(self): rf = RequestFactory() user = User(id="uid", name="name", email="*****@*****.**", weight=10) user.save() website_id = utils.hash_digest("website_name") website = Website(id=website_id, name="website_name") website.save() article_id = utils.hash_digest("article_url") article = Article(id=article_id, url="article_url", website=website) article.save() expected = HttpResponse("Created", status=201) request = rf.post( "submit_report", data=json.dumps({"object": { "url": "article_url", "report": "L" }}), content_type="application/json") response = submit_report.handler(request) self.assertEqual(str(response), str(expected)) self.assertEqual( Report.objects.get(user=user, article=article).value, Report.Values.L.name) self.assertEquals( Article.objects.get(id=article_id).get_status(), Article.Status.L) request = rf.post( "submit_report", data=json.dumps({"object": { "url": "article_url", "report": "F" }}), content_type="application/json") response = submit_report.handler(request) self.assertEqual(str(response), str(expected)) self.assertEqual( Report.objects.get(user=user, article=article).value, Report.Values.F.name) self.assertEquals( Article.objects.get(id=article_id).get_status(), Article.Status.F) request = rf.post( "submit_report", data=json.dumps({"object": { "url": "article_url", "report": "L" }}), content_type="application/json") response = submit_report.handler(request) self.assertEqual(str(response), str(expected)) self.assertEqual( Report.objects.get(user=user, article=article).value, Report.Values.L.name) self.assertEquals( Article.objects.get(id=article_id).get_status(), Article.Status.L)
def test_submit_report_change_status_legit_to_fake(self): rf = RequestFactory() user = User(id="uid", name="name", email="*****@*****.**", weight=50) user.save() user2 = User(id="uid2", name="name2", email="*****@*****.**", weight=10) user2.save() user3 = User(id="uid3", name="name3", email="*****@*****.**", weight=30) user3.save() website_id = utils.hash_digest("website_name") website = Website(id=website_id, name="website_name", legit_articles=1) website.save() article_id = utils.hash_digest("article_url") article = Article(id=article_id, url="article_url", website=website, legit_reports=30.0, fake_reports=10.0) article.save() report1 = Report(user=user2, article=article, value=Report.Values.F.name) report1.save() report2 = Report(user=user3, article=article, value=Report.Values.L.name) report2.save() expected = HttpResponse("Created", status=201) request = rf.post( "submit_report", data=json.dumps({"object": { "url": "article_url", "report": "F" }}), content_type="application/json") response = submit_report.handler(request) self.assertEqual(str(response), str(expected)) self.assertEquals( Article.objects.get(id=article_id).get_status(), Article.Status.F) self.assertEquals( Website.objects.get(id=website_id).legit_percentage(), 0.00)
def test_get_article_with_report(self): rf = RequestFactory() expected = JsonResponse({ "article": { "url": "url", "name": "article_name", "legit_reports": 0, "fake_reports": 0 }, "website": { "name": "website_name" }, "report": { "user_id": "uid", "article": "url", "value": "L" } }) website = Website(id=utils.hash_digest("website_name"), name="website_name") website.save() article = Article(id=utils.hash_digest("url"), url="url", name="article_name", website=website) article.save() user = User.objects.get(id="uid") report = Report(user=user, article=article, value=Report.Values.L.name) report.save() request = rf.post("get_article", data=json.dumps({ "object": { "url": "url", "website_name": "website_name" } }), content_type="application/json") response = get_article.handler(request) self.assertEqual(str(response), str(expected)) self.assertEquals(article.as_dict(), json.loads(response.content)["article"]) self.assertEquals(website.as_dict(), json.loads(response.content)["website"]) self.assertEquals(report.as_dict(), json.loads(response.content)["report"])
def add_article(article_id, url, website_name): """ Adds an article to the database :param article_id: the article id :param url: the article url :param website_name: the article's website name :return: the tuple (Article, Website) """ url = url article_name = utils.parse_article_name_from_url(url) website_id = utils.hash_digest(website_name) qs = Website.objects.filter(id=website_id) website = add_website(website_id, website_name) if len(qs) == 0 else qs[0] article = Article(id=article_id, url=url, name=article_name, website=website) article.save() log.info(LOGGING_TAG + "Article " + article_name + " created") return article, website
def test_get_article_already_present(self): rf = RequestFactory() expected = JsonResponse({ "article": { "url": "url", "name": "article_name", "legit_reports": 0, "fake_reports": 0 }, "website": { "name": "website_name" } }) website = Website(id=utils.hash_digest("website_name"), name="website_name") website.save() article = Article(id=utils.hash_digest("url"), url="url", name="article_name", website=website) article.save() request = rf.post("get_article", data=json.dumps({ "object": { "url": "url", "website_name": "website_name" } }), content_type="application/json") response = get_article.handler(request) self.assertEqual(str(response), str(expected)) self.assertEquals(article.as_dict(), json.loads(response.content)["article"]) self.assertEquals(website.as_dict(), json.loads(response.content)["website"])
def test_submit_report(self): rf = RequestFactory() user = User(id="uid", name="name", email="*****@*****.**") user.save() website_id = utils.hash_digest("website_name") website = Website(id=website_id, name="website_name") website.save() article_id = utils.hash_digest("article_url") article = Article(id=article_id, url="article_url", website=website) article.save() expected = HttpResponse("Created", status=201) request = rf.post( "submit_report", data=json.dumps({"object": { "url": "article_url", "report": "L" }}), content_type="application/json") response = submit_report.handler(request) self.assertEqual(str(response), str(expected))