from django.test import TestCase
from django.urls import reverse

from .models import Category, ContactInquiry, Product


class CatalogFlowTests(TestCase):
    def setUp(self):
        self.category = Category.objects.create(
            name="Trauringe",
            slug="trauringe",
            description="Individuelle Ringe und Beratung.",
            sort_order=1,
        )
        self.product = Product.objects.create(
            category=self.category,
            name="Signature Trauring",
            slug="signature-trauring",
            short_description="Ein klassischer Ring mit warmem Goldton.",
            description="Ausgewählte Trauringe mit Gravuroption und persönlicher Beratung.",
            material="Gold",
            price_from="1290.00",
            is_featured=True,
        )

    def test_homepage_uses_catalog_content(self):
        response = self.client.get(reverse("home"))
        self.assertContains(response, self.product.name)
        self.assertContains(response, self.category.name)

    def test_contact_form_creates_inquiry(self):
        response = self.client.post(
            reverse("contact"),
            {
                "product": self.product.pk,
                "name": "Anna Becker",
                "email": "anna@example.com",
                "phone": "+49 123",
                "preferred_contact_method": "phone",
                "subject": "Beratung",
                "message": "Ich möchte einen Termin für Trauringe.",
            },
        )
        self.assertRedirects(response, reverse("contact_success"))
        self.assertEqual(ContactInquiry.objects.count(), 1)
        inquiry = ContactInquiry.objects.first()
        self.assertEqual(inquiry.product, self.product)
