[tests] Test cases for Item and Warehouse renaming and merging
diff --git a/erpnext/stock/doctype/item/test_item.py b/erpnext/stock/doctype/item/test_item.py
index aceefc0..52cf10d 100644
--- a/erpnext/stock/doctype/item/test_item.py
+++ b/erpnext/stock/doctype/item/test_item.py
@@ -9,6 +9,9 @@
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 @@
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 @@
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 2232584..c9c4b5f 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 @@
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