from django.test import TestCase
from .models import Sale, SaleLine


class ConfiaoTest(TestCase):

    def test_create_sale(self):
        sale = Sale()
        sale.customer = "Alejandro"
        sale.date = "2024-06-22"
        sale.phone = '666666666'
        sale.description = "Description"
        sale.save()

        self.assertIsInstance(sale, Sale)

    def test_create_sale_line(self):
        sale = Sale()
        sale.customer = "Alejandro"
        sale.date = "2024-06-22"
        sale.phone = '666666666'
        sale.description = "Description"

        line = SaleLine()
        line.sale = sale
        line.product = 'papaya'
        line.quantity = 2
        line.unit_price = 2500
        line.amount = 5000
        sale.save()
        line.save()
        self.assertEqual(SaleLine.objects.all()[0].quantity, 2)

    def test_create_sale_with_lines(self):
        sale = Sale()
        sale.customer = "Alejandro"
        sale.date = "2024-06-22"
        sale.phone = '666666666'
        sale.description = "Description"

        line1 = SaleLine()
        line1.sale = sale
        line1.product = 'papaya'
        line1.quantity = 2
        line1.unit_price = 2500
        line1.amount = 5000

        line2 = SaleLine()
        line2.sale = sale
        line2.product = 'papaya'
        line2.quantity = 2
        line2.unit_price = 2500
        line2.amount = 5000

        sale.save()
        line1.save()
        line2.save()

        self.assertEqual(len(SaleLine.objects.all()), 2)
        self.assertEqual(
            Sale.objects.all()[0].saleline_set.all()[0].quantity,
            2
        )

    def test_allow_sale_without_description(self):
        sale = Sale()
        sale.customer = "Alejandro"
        sale.date = "2024-06-22"
        sale.phone = '666666666'
        sale.description = None
        sale.save()

        self.assertEqual(len(Sale.objects.all()), 1)