from django.test import TestCase
from product_directory.models import Product
from .models import Stock, Warehouse, StorageLocation, StockOperation


class StockTestCase(TestCase):
    def setUp(self):
        self.product = Product.objects.create(
            name="Тестовый товар",
            barcode="1234567890123",
            shelf_life_days=365,
            dimensions="10x10x10",
            unit_of_measure="шт.",
            manufacturer="Производитель",
            category="Food",
            storage_temperature="+4C",
            promotion="1+1"
        )
        self.stock = Stock.objects.create(
            product=self.product,
            quantity=100,
            location="Основной склад"
        )

    def test_stock_creation(self):
        self.assertEqual(self.stock.quantity, 100)

    def test_stock_update(self):
        self.stock.quantity += 50
        self.stock.save()
        self.assertEqual(self.stock.quantity, 150)

class StockOperationTestCase(TestCase):
    def setUp(self):
        self.warehouse = Warehouse.objects.create(name="Основной склад", location="Москва")
        self.storage = StorageLocation.objects.create(warehouse=self.warehouse, name="Холодильник", temperature_control=True)
        self.product = Product.objects.create(
            name="Тестовый товар",
            barcode="1234567890123",
            shelf_life_days=365,
            dimensions="10x10x10",
            unit_of_measure="шт.",
            manufacturer="Производитель",
            category="Food",
            storage_temperature="+4C",
            promotion="1+1"
        )

    def test_incoming_operation(self):
        operation = StockOperation.objects.create(
            product=self.product,
            warehouse=self.warehouse,
            storage_location=self.storage,
            operation_type="Incoming",
            quantity=100
        )
        self.assertEqual(operation.quantity, 100)