diff --git a/erpnext/stock/doctype/item/test_item.py b/erpnext/stock/doctype/item/test_item.py index aceefc0ce5f..52cf10dfce0 100644 --- a/erpnext/stock/doctype/item/test_item.py +++ b/erpnext/stock/doctype/item/test_item.py @@ -9,6 +9,9 @@ from frappe.test_runner import make_test_records from erpnext.controllers.item_variant import (create_variant, ItemVariantExistsError, InvalidItemAttributeValueError) +from frappe.model.rename_doc import rename_doc +from erpnext.stock.doctype.stock_entry.stock_entry_utils import make_stock_entry + test_ignore = ["BOM"] test_dependencies = ["Warehouse"] @@ -164,11 +167,32 @@ class TestItem(unittest.TestCase): variant.item_name = "_Test Numeric Variant Large 1.1m" self.assertRaises(InvalidItemAttributeValueError, variant.save) - variant = create_variant("_Test Numeric Template Item", {"Test Size": "Large", "Test Item Length": 1.5}) + variant = create_variant("_Test Numeric Template Item", + {"Test Size": "Large", "Test Item Length": 1.5}) self.assertEquals(variant.item_code, None) variant.item_code = "_Test Numeric Variant-L-1.5" variant.item_name = "_Test Numeric Variant Large 1.5m" variant.save() + + def test_item_merging(self): + create_item("Test Item for Merging 1") + create_item("Test Item for Merging 2") + + make_stock_entry(item_code="Test Item for Merging 1", target="_Test Warehouse - _TC", + qty=1, rate=100) + make_stock_entry(item_code="Test Item for Merging 2", target="_Test Warehouse 1 - _TC", + qty=1, rate=100) + + rename_doc("Item", "Test Item for Merging 1", "Test Item for Merging 2", merge=True) + + self.assertFalse(frappe.db.exists("Item", "Test Item for Merging 1")) + + self.assertTrue(frappe.db.get_value("Bin", + {"item_code": "Test Item for Merging 2", "warehouse": "_Test Warehouse - _TC"})) + + self.assertTrue(frappe.db.get_value("Bin", + {"item_code": "Test Item for Merging - 2", "warehouse": "_Test Warehouse 1 - _TC"})) + def make_item_variant(): if not frappe.db.exists("Item", "_Test Variant Item-S"): @@ -184,3 +208,14 @@ def get_total_projected_qty(item): return total_qty[0].projected_qty if total_qty else 0.0 test_records = frappe.get_test_records('Item') + +def create_item(item_code, is_stock_item=None): + if not frappe.db.exists("Item", item_code): + item = frappe.new_doc("Item") + item.item_code = item_code + item.item_name = item_code + item.description = item_code + item.item_group = "All Item Groups" + item.is_stock_item = is_stock_item or 1 + item.save() + \ No newline at end of file diff --git a/erpnext/stock/doctype/warehouse/test_warehouse.py b/erpnext/stock/doctype/warehouse/test_warehouse.py index 223258430f4..c9c4b5f9d2b 100644 --- a/erpnext/stock/doctype/warehouse/test_warehouse.py +++ b/erpnext/stock/doctype/warehouse/test_warehouse.py @@ -1,7 +1,9 @@ # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors # License: GNU General Public License v3. See license.txt from __future__ import unicode_literals - +from frappe.model.rename_doc import rename_doc +from erpnext.stock.doctype.stock_entry.stock_entry_utils import make_stock_entry +from frappe.utils import cint import frappe import unittest @@ -21,5 +23,66 @@ class TestWarehouse(unittest.TestCase): for child_warehouse in child_warehouses: self.assertEquals(p_warehouse.name, child_warehouse.parent_warehouse) self.assertEquals(child_warehouse.is_group, 0) + + def test_warehouse_renaming(self): + create_warehouse("Test Warehouse for Renaming 1") + self.assertTrue(frappe.db.exists("Account", "Test Warehouse for Renaming 1 - _TC")) + self.assertTrue(frappe.db.get_value("Account", + filters={"warehouse": "Test Warehouse for Renaming 1 - _TC"})) + # Rename with abbr + rename_doc("Warehouse", "Test Warehouse for Renaming 1 - _TC", "Test Warehouse for Renaming 2 - _TC") + + self.assertTrue(frappe.db.exists("Account", "Test Warehouse for Renaming 2 - _TC")) + self.assertTrue(frappe.db.get_value("Account", + filters={"warehouse": "Test Warehouse for Renaming 2 - _TC"})) + + # Rename without abbr + rename_doc("Warehouse", "Test Warehouse for Renaming 2 - _TC", "Test Warehouse for Renaming 3") + + self.assertTrue(frappe.db.exists("Account", "Test Warehouse for Renaming 3 - _TC")) + self.assertTrue(frappe.db.get_value("Account", + filters={"warehouse": "Test Warehouse for Renaming 3 - _TC"})) + + def test_warehouse_merging(self): + create_warehouse("Test Warehouse for Merging 1") + create_warehouse("Test Warehouse for Merging 2") + + make_stock_entry(item_code="_Test Item", target="Test Warehouse for Merging 1 - _TC", + qty=1, rate=100) + make_stock_entry(item_code="_Test Item", target="Test Warehouse for Merging 2 - _TC", + qty=1, rate=100) + + existing_bin_qty = ( + cint(frappe.db.get_value("Bin", + {"item_code": "_Test Item", "warehouse": "Test Warehouse for Merging 1 - _TC"}, "actual_qty")) + + cint(frappe.db.get_value("Bin", + {"item_code": "_Test Item", "warehouse": "Test Warehouse for Merging 2 - _TC"}, "actual_qty")) + ) + + rename_doc("Warehouse", "Test Warehouse for Merging 1 - _TC", + "Test Warehouse for Merging 2 - _TC", merge=True) + + self.assertFalse(frappe.db.exists("Warehouse", "Test Warehouse for Merging 1 - _TC")) + + bin_qty = frappe.db.get_value("Bin", + {"item_code": "_Test Item", "warehouse": "Test Warehouse for Merging 2 - _TC"}, "actual_qty") + + self.assertEqual(bin_qty, existing_bin_qty) + + self.assertFalse(frappe.db.exists("Account", "Test Warehouse for Merging 1 - _TC")) + self.assertTrue(frappe.db.exists("Account", "Test Warehouse for Merging 2 - _TC")) + self.assertTrue(frappe.db.get_value("Account", + filters={"warehouse": "Test Warehouse for Merging 2 - _TC"})) + + +def create_warehouse(warehouse_name): + if not frappe.db.exists("Warehouse", warehouse_name + " - _TC"): + w = frappe.new_doc("Warehouse") + w.warehouse_name = warehouse_name + w.parent_warehouse = "_Test Warehouse Group - _TC" + w.company = "_Test Company" + w.save() + + \ No newline at end of file