This commit is contained in:
2026-07-16 15:09:54 +02:00
parent cda8b4067b
commit a0bd6f0e28
5 changed files with 109 additions and 9 deletions

View File

@@ -82,6 +82,62 @@ class PurchaseTradeTestCase(ModuleTestCase):
self.assertEqual([line.sample.reference for line in ordered], ['A', 'R'])
def test_coffee_line_attributes_name_uses_quality_fields(self):
'coffee line attribute name is built from coffee quality fields'
line = SimpleNamespace(
coffee_origin='Brazil',
coffee_type='arabica',
coffee_process='natural',
coffee_variety='Bourbon',
coffee_crop_year='26/27',
coffee_screen_size='17/18',
coffee_moisture_max=Decimal('11.50'),
coffee_defect_max=12,
coffee_cup_score_min=Decimal('82.00'))
self.assertEqual(
coffee_module.CoffeeLineMixin._coffee_attributes_name(line),
'Brazil | Arabica | Natural | Bourbon | 26/27 | 17/18 | '
'11.50 | 12 | 82.00')
def test_coffee_line_attributes_name_ignores_empty_quality_fields(self):
'empty coffee quality fields keep the standard product attributes name'
line = SimpleNamespace(
coffee_origin='',
coffee_type=None,
coffee_process=None,
coffee_variety=None,
coffee_crop_year=None,
coffee_screen_size=None,
coffee_moisture_max=None,
coffee_defect_max=None,
coffee_cup_score_min=None)
self.assertIsNone(
coffee_module.CoffeeLineMixin._coffee_attributes_name(line))
def test_purchase_line_attributes_name_prefers_coffee_quality(self):
'purchase line attributes name uses coffee quality when available'
line = SimpleNamespace(
_coffee_attributes_name=lambda: 'Brazil | Arabica',
product=None,
attributes=None)
self.assertEqual(
purchase_module.Line.on_change_with_attributes_name(line),
'Brazil | Arabica')
def test_sale_line_attributes_name_prefers_coffee_quality(self):
'sale line attributes name uses coffee quality when available'
line = SimpleNamespace(
_coffee_attributes_name=lambda: 'Brazil | Arabica',
product=None,
attributes=None)
self.assertEqual(
sale_module.SaleLine.on_change_with_attributes_name(line),
'Brazil | Arabica')
def test_coffee_lab_analysis_compliance_uses_line_targets(self):
'coffee lab analysis compliance checks sample line targets'
line = SimpleNamespace(
@@ -2111,10 +2167,12 @@ class PurchaseTradeTestCase(ModuleTestCase):
self.assertEqual(values[0]['amount'], Decimal('-200.00'))
self.assertEqual(values[0]['base_amount'], Decimal('-200'))
self.assertEqual(values[0]['date'], today)
self.assertIsNone(values[0]['mtm_price'])
self.assertIsNone(values[0]['mtm'])
self.assertEqual(values[1]['amount'], Decimal('200.00'))
self.assertEqual(values[1]['base_amount'], Decimal('200'))
self.assertEqual(values[1]['date'], today)
self.assertIsNone(values[1]['mtm_price'])
self.assertIsNone(values[1]['mtm'])
@@ -2154,6 +2212,7 @@ class PurchaseTradeTestCase(ModuleTestCase):
values = Valuation.create_pnl_der_from_sale_line(sale_line)
self.assertEqual(values[0]['price'], Decimal('100.0000'))
self.assertEqual(values[0]['date'], today)
self.assertEqual(values[0]['amount'], Decimal('200.00'))
self.assertEqual(values[0]['base_amount'], Decimal('200'))
self.assertIsNone(values[0]['mtm_price'])