72 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			72 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| import json
 | |
| import unittest
 | |
| 
 | |
| import frappe
 | |
| 
 | |
| from erpnext.controllers.item_variant import copy_attributes_to_variant, make_variant_item_code
 | |
| from erpnext.stock.doctype.item.test_item import set_item_variant_settings
 | |
| from erpnext.stock.doctype.quality_inspection.test_quality_inspection import (
 | |
| 	create_quality_inspection_parameter,
 | |
| )
 | |
| 
 | |
| 
 | |
| class TestItemVariant(unittest.TestCase):
 | |
| 	def test_tables_in_template_copied_to_variant(self):
 | |
| 		fields = [{"field_name": "quality_inspection_template"}]
 | |
| 		set_item_variant_settings(fields)
 | |
| 		variant = make_item_variant()
 | |
| 		self.assertEqual(variant.get("quality_inspection_template"), "_Test QC Template")
 | |
| 
 | |
| 
 | |
| def create_variant_with_tables(item, args):
 | |
| 	if isinstance(args, str):
 | |
| 		args = json.loads(args)
 | |
| 
 | |
| 	qc_name = make_quality_inspection_template()
 | |
| 	template = frappe.get_doc("Item", item)
 | |
| 	template.quality_inspection_template = qc_name
 | |
| 	template.save()
 | |
| 
 | |
| 	variant = frappe.new_doc("Item")
 | |
| 	variant.variant_based_on = "Item Attribute"
 | |
| 	variant_attributes = []
 | |
| 
 | |
| 	for d in template.attributes:
 | |
| 		variant_attributes.append({"attribute": d.attribute, "attribute_value": args.get(d.attribute)})
 | |
| 
 | |
| 	variant.set("attributes", variant_attributes)
 | |
| 	copy_attributes_to_variant(template, variant)
 | |
| 	make_variant_item_code(template.item_code, template.item_name, variant)
 | |
| 
 | |
| 	return variant
 | |
| 
 | |
| 
 | |
| def make_item_variant():
 | |
| 	frappe.delete_doc_if_exists("Item", "_Test Variant Item-XSL", force=1)
 | |
| 	variant = create_variant_with_tables("_Test Variant Item", '{"Test Size": "Extra Small"}')
 | |
| 	variant.item_code = "_Test Variant Item-XSL"
 | |
| 	variant.item_name = "_Test Variant Item-XSL"
 | |
| 	variant.save()
 | |
| 	return variant
 | |
| 
 | |
| 
 | |
| def make_quality_inspection_template():
 | |
| 	qc_template = "_Test QC Template"
 | |
| 	if frappe.db.exists("Quality Inspection Template", qc_template):
 | |
| 		return qc_template
 | |
| 
 | |
| 	qc = frappe.new_doc("Quality Inspection Template")
 | |
| 	qc.quality_inspection_template_name = qc_template
 | |
| 
 | |
| 	create_quality_inspection_parameter("Moisture")
 | |
| 	qc.append(
 | |
| 		"item_quality_inspection_parameter",
 | |
| 		{
 | |
| 			"specification": "Moisture",
 | |
| 			"value": "< 5%",
 | |
| 		},
 | |
| 	)
 | |
| 
 | |
| 	qc.insert()
 | |
| 	return qc.name
 |