from decimal import Decimal

from django.test import TestCase

from products.models import PricingRule, Product


class ProductModelTests(TestCase):
    def test_product_str_falls_back_to_shopify_product_id(self):
        product = Product.objects.create(shopify_product_id="sp-1", title="")
        self.assertEqual(str(product), "sp-1")

    def test_new_default_pricing_rule_unsets_previous_default(self):
        product = Product.objects.create(shopify_product_id="sp-2", title="Demo")
        first = PricingRule.objects.create(
            product=product,
            quantity=1,
            unit_price=Decimal("19.99"),
            is_default=True,
        )
        second = PricingRule.objects.create(
            product=product,
            quantity=2,
            unit_price=Decimal("17.99"),
            is_default=True,
        )

        first.refresh_from_db()
        second.refresh_from_db()

        self.assertFalse(first.is_default)
        self.assertTrue(second.is_default)
