Remove promo, add featured on main page
All checks were successful
Build and Push Docker Image / build (push) Successful in 54s
All checks were successful
Build and Push Docker Image / build (push) Successful in 54s
This commit is contained in:
@@ -3,6 +3,8 @@ from django.core import mail
|
||||
from django.test import SimpleTestCase, TestCase, override_settings
|
||||
from django.urls import reverse, resolve
|
||||
|
||||
from items.models import Category, Item
|
||||
|
||||
|
||||
@override_settings(EMAIL_BACKEND="django.core.mail.backends.locmem.EmailBackend", ADMINISTRATOR_EMAIL="admin@example.com")
|
||||
class FaqQuestionTests(TestCase):
|
||||
@@ -39,6 +41,50 @@ class FaqQuestionTests(TestCase):
|
||||
self.assertContains(response, "Необходимо согласие на обработку персональных данных.")
|
||||
|
||||
|
||||
class HomePopularProductsTests(TestCase):
|
||||
def setUp(self):
|
||||
self.category = Category.objects.create(name="Plumbing", slug="plumbing")
|
||||
|
||||
def test_home_page_renders_available_products(self):
|
||||
visible_item = Item.objects.create(
|
||||
name="Visible sink",
|
||||
slug="visible-sink",
|
||||
category=self.category,
|
||||
price="1600.00",
|
||||
is_available=True,
|
||||
)
|
||||
Item.objects.create(
|
||||
name="Hidden sink",
|
||||
slug="hidden-sink",
|
||||
category=self.category,
|
||||
price="1800.00",
|
||||
is_available=False,
|
||||
)
|
||||
|
||||
response = self.client.get(reverse("home"))
|
||||
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertContains(response, visible_item.name)
|
||||
self.assertContains(response, reverse("detail", args=[self.category.slug, visible_item.slug]))
|
||||
self.assertContains(response, "1600,00 руб.")
|
||||
self.assertNotContains(response, "Hidden sink")
|
||||
|
||||
def test_home_page_limits_popular_products_to_six(self):
|
||||
for index in range(7):
|
||||
Item.objects.create(
|
||||
name=f"Product {index}",
|
||||
slug=f"product-{index}",
|
||||
category=self.category,
|
||||
price="1000.00",
|
||||
is_available=True,
|
||||
)
|
||||
|
||||
response = self.client.get(reverse("home"))
|
||||
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertEqual(len(response.context["home_products"]), 6)
|
||||
|
||||
|
||||
class FaviconTests(SimpleTestCase):
|
||||
def test_favicon_route_returns_icon(self):
|
||||
response = self.client.get(reverse("favicon"))
|
||||
|
||||
@@ -2,11 +2,15 @@ import logging
|
||||
|
||||
from django.conf import settings
|
||||
from django.core.mail import send_mail
|
||||
from django.db.models import BooleanField, Case, Value, When
|
||||
from django.shortcuts import redirect, render
|
||||
from django.urls import reverse
|
||||
from django.contrib import messages
|
||||
|
||||
from favorites.services import get_user_favorite_item_ids
|
||||
from home.forms import FaqQuestionForm
|
||||
from items.models import Item
|
||||
from orders.services import get_user_cart_item_ids
|
||||
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
@@ -55,7 +59,26 @@ def index(request):
|
||||
messages.success(request, "Спасибо. Ваш вопрос отправлен, мы свяжемся с вами в ближайшее время.")
|
||||
return redirect(f"{reverse('home')}#faq-section")
|
||||
|
||||
return render(request=request, template_name='home/index.html', context={"faq_form": form})
|
||||
home_products = (
|
||||
Item.objects.filter(is_available=True)
|
||||
.select_related("category", "subcategory")
|
||||
.prefetch_related("images")
|
||||
.annotate(
|
||||
discount_sort=Case(
|
||||
When(discount_price__isnull=False, then=Value(True)),
|
||||
default=Value(False),
|
||||
output_field=BooleanField(),
|
||||
)
|
||||
)
|
||||
.order_by("-is_new", "-discount_sort", "-created_at")[:6]
|
||||
)
|
||||
|
||||
return render(request=request, template_name='home/index.html', context={
|
||||
"faq_form": form,
|
||||
"home_products": home_products,
|
||||
"favorite_item_ids": get_user_favorite_item_ids(request.user),
|
||||
"cart_item_ids": get_user_cart_item_ids(request.user),
|
||||
})
|
||||
|
||||
|
||||
def services(request):
|
||||
|
||||
Reference in New Issue
Block a user