This commit is contained in:
2026-08-31 15:11:52 +03:30
parent 236002a87c
commit 463b812e3e
63 changed files with 3254 additions and 1476 deletions
+51
View File
@@ -0,0 +1,51 @@
import datetime
from django.test import TestCase
from django.urls import reverse
from apps.landing.models import Article
def _make_article(**overrides):
defaults = {
"slug": "test-article",
"title": "عنوان تست",
"excerpt": "خلاصه تست",
"content_html": "<p>متن تست</p>",
"published_at": datetime.date(2020, 1, 1),
"is_published": True,
}
defaults.update(overrides)
return Article.objects.create(**defaults)
class ArticlePublishScheduleTests(TestCase):
"""published_at یک gate واقعی است — مقاله‌ی is_published=True با تاریخِ
آینده نباید تا رسیدن آن تاریخ در سایت دیده شود (انتشار پلکانی/زمان‌بندی‌شده)."""
def test_past_dated_article_appears_in_list(self):
_make_article(slug="past-one", published_at=datetime.date(2020, 1, 1))
response = self.client.get(reverse("landing:article_list"))
self.assertContains(response, "عنوان تست")
def test_future_dated_article_hidden_from_list(self):
future = datetime.date.today() + datetime.timedelta(days=10)
_make_article(slug="future-one", published_at=future)
response = self.client.get(reverse("landing:article_list"))
self.assertNotContains(response, "عنوان تست")
def test_future_dated_article_detail_is_404(self):
future = datetime.date.today() + datetime.timedelta(days=10)
article = _make_article(slug="future-two", published_at=future)
response = self.client.get(reverse("landing:article_detail", args=[article.slug]))
self.assertEqual(response.status_code, 404)
def test_unpublished_article_hidden_regardless_of_date(self):
_make_article(slug="draft-one", is_published=False, published_at=datetime.date(2020, 1, 1))
response = self.client.get(reverse("landing:article_list"))
self.assertNotContains(response, "عنوان تست")
def test_today_dated_article_is_visible(self):
_make_article(slug="today-one", published_at=datetime.date.today())
response = self.client.get(reverse("landing:article_list"))
self.assertContains(response, "عنوان تست")