97 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			97 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| from django.test import TestCase
 | |
| from django.core.exceptions import ValidationError
 | |
| 
 | |
| from ..models import Customer, Product, Sale, SaleLine
 | |
| 
 | |
| 
 | |
| class ConfiaoTest(TestCase):
 | |
|     def setUp(self):
 | |
|         self.product = Product()
 | |
|         self.product.name = "Pepino"
 | |
|         self.product.price = 5000
 | |
|         self.product.save()
 | |
| 
 | |
|         self.customer = Customer()
 | |
|         self.customer.name = "Don Confiao Gonzalez"
 | |
|         self.customer.address = "Patio Bonito"
 | |
|         self.customer.save()
 | |
| 
 | |
|     def test_create_sale(self):
 | |
|         sale = Sale()
 | |
|         sale.customer = self.customer
 | |
|         sale.date = "2024-06-22 12:05:00"
 | |
|         sale.phone = '666666666'
 | |
|         sale.description = "Description"
 | |
|         sale.save()
 | |
| 
 | |
|         self.assertIsInstance(sale, Sale)
 | |
| 
 | |
|     def test_can_create_sale_without_payment_method(self):
 | |
|         sale = Sale()
 | |
|         sale.customer = self.customer
 | |
|         sale.date = "2024-06-22 12:05:00"
 | |
|         sale.phone = '666666666'
 | |
|         sale.description = "Description"
 | |
|         sale.payment_method = ''
 | |
| 
 | |
|         with self.assertRaises(ValidationError):
 | |
|             sale.full_clean()
 | |
| 
 | |
|     def test_create_sale_line(self):
 | |
|         sale = Sale()
 | |
|         sale.customer = self.customer
 | |
|         sale.date = "2024-06-22"
 | |
|         sale.phone = '666666666'
 | |
|         sale.description = "Description"
 | |
| 
 | |
|         line = SaleLine()
 | |
|         line.sale = sale
 | |
|         line.product = self.product
 | |
|         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 = self.customer
 | |
|         sale.date = "2024-06-22"
 | |
|         sale.phone = '666666666'
 | |
|         sale.description = "Description"
 | |
| 
 | |
|         line1 = SaleLine()
 | |
|         line1.sale = sale
 | |
|         line1.product = self.product
 | |
|         line1.quantity = 2
 | |
|         line1.unit_price = 2500
 | |
|         line1.amount = 5000
 | |
| 
 | |
|         line2 = SaleLine()
 | |
|         line2.sale = sale
 | |
|         line2.product = self.product
 | |
|         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 = self.customer
 | |
|         sale.date = "2024-06-22"
 | |
|         sale.phone = '666666666'
 | |
|         sale.description = None
 | |
|         sale.save()
 | |
| 
 | |
|         self.assertEqual(len(Sale.objects.all()), 1)
 |