mirror of
https://github.com/frappe/erpnext.git
synced 2026-05-25 16:04:46 +00:00
refactor(test): make inventory dimension deterministic
fixed flaky test 'test_inventory_dimension' use '3' precision for test_opening_balnace
This commit is contained in:
@@ -23,7 +23,6 @@ from erpnext.tests.utils import ERPNextTestSuite
|
|||||||
class TestInventoryDimension(ERPNextTestSuite):
|
class TestInventoryDimension(ERPNextTestSuite):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
prepare_test_data()
|
prepare_test_data()
|
||||||
create_store_dimension()
|
|
||||||
|
|
||||||
def test_validate_inventory_dimension(self):
|
def test_validate_inventory_dimension(self):
|
||||||
# Can not be child doc
|
# Can not be child doc
|
||||||
@@ -556,144 +555,27 @@ def get_voucher_sl_entries(voucher_no, fields):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def create_store_dimension():
|
|
||||||
if not frappe.db.exists("DocType", "Store"):
|
|
||||||
frappe.get_doc(
|
|
||||||
{
|
|
||||||
"doctype": "DocType",
|
|
||||||
"name": "Store",
|
|
||||||
"module": "Stock",
|
|
||||||
"custom": 1,
|
|
||||||
"naming_rule": "By fieldname",
|
|
||||||
"autoname": "field:store_name",
|
|
||||||
"fields": [{"label": "Store Name", "fieldname": "store_name", "fieldtype": "Data"}],
|
|
||||||
"permissions": [
|
|
||||||
{
|
|
||||||
"role": "System Manager",
|
|
||||||
"permlevel": 0,
|
|
||||||
"read": 1,
|
|
||||||
"write": 1,
|
|
||||||
"create": 1,
|
|
||||||
"delete": 1,
|
|
||||||
}
|
|
||||||
],
|
|
||||||
}
|
|
||||||
).insert(ignore_permissions=True)
|
|
||||||
|
|
||||||
for store in ["Store 1", "Store 2"]:
|
|
||||||
if not frappe.db.exists("Store", store):
|
|
||||||
frappe.get_doc({"doctype": "Store", "store_name": store}).insert(ignore_permissions=True)
|
|
||||||
|
|
||||||
|
|
||||||
def prepare_test_data():
|
def prepare_test_data():
|
||||||
if not frappe.db.exists("DocType", "Shelf"):
|
|
||||||
frappe.get_doc(
|
|
||||||
{
|
|
||||||
"doctype": "DocType",
|
|
||||||
"name": "Shelf",
|
|
||||||
"module": "Stock",
|
|
||||||
"custom": 1,
|
|
||||||
"naming_rule": "By fieldname",
|
|
||||||
"autoname": "field:shelf_name",
|
|
||||||
"fields": [{"label": "Shelf Name", "fieldname": "shelf_name", "fieldtype": "Data"}],
|
|
||||||
"permissions": [
|
|
||||||
{
|
|
||||||
"role": "System Manager",
|
|
||||||
"permlevel": 0,
|
|
||||||
"read": 1,
|
|
||||||
"write": 1,
|
|
||||||
"create": 1,
|
|
||||||
"delete": 1,
|
|
||||||
}
|
|
||||||
],
|
|
||||||
}
|
|
||||||
).insert(ignore_permissions=True)
|
|
||||||
|
|
||||||
for shelf in ["Shelf 1", "Shelf 2"]:
|
for shelf in ["Shelf 1", "Shelf 2"]:
|
||||||
if not frappe.db.exists("Shelf", shelf):
|
if not frappe.db.exists("Shelf", shelf):
|
||||||
frappe.get_doc({"doctype": "Shelf", "shelf_name": shelf}).insert(ignore_permissions=True)
|
frappe.get_doc({"doctype": "Shelf", "shelf_name": shelf}).insert(ignore_permissions=True)
|
||||||
|
|
||||||
create_warehouse("Shelf Warehouse")
|
create_warehouse("Shelf Warehouse")
|
||||||
|
|
||||||
if not frappe.db.exists("DocType", "Rack"):
|
|
||||||
frappe.get_doc(
|
|
||||||
{
|
|
||||||
"doctype": "DocType",
|
|
||||||
"name": "Rack",
|
|
||||||
"module": "Stock",
|
|
||||||
"custom": 1,
|
|
||||||
"naming_rule": "By fieldname",
|
|
||||||
"autoname": "field:rack_name",
|
|
||||||
"fields": [{"label": "Rack Name", "fieldname": "rack_name", "fieldtype": "Data"}],
|
|
||||||
"permissions": [
|
|
||||||
{
|
|
||||||
"role": "System Manager",
|
|
||||||
"permlevel": 0,
|
|
||||||
"read": 1,
|
|
||||||
"write": 1,
|
|
||||||
"create": 1,
|
|
||||||
"delete": 1,
|
|
||||||
}
|
|
||||||
],
|
|
||||||
}
|
|
||||||
).insert(ignore_permissions=True)
|
|
||||||
|
|
||||||
for rack in ["Rack 1", "Rack 2"]:
|
for rack in ["Rack 1", "Rack 2"]:
|
||||||
if not frappe.db.exists("Rack", rack):
|
if not frappe.db.exists("Rack", rack):
|
||||||
frappe.get_doc({"doctype": "Rack", "rack_name": rack}).insert(ignore_permissions=True)
|
frappe.get_doc({"doctype": "Rack", "rack_name": rack}).insert(ignore_permissions=True)
|
||||||
|
|
||||||
create_warehouse("Rack Warehouse")
|
create_warehouse("Rack Warehouse")
|
||||||
|
|
||||||
if not frappe.db.exists("DocType", "Pallet"):
|
|
||||||
frappe.get_doc(
|
|
||||||
{
|
|
||||||
"doctype": "DocType",
|
|
||||||
"name": "Pallet",
|
|
||||||
"module": "Stock",
|
|
||||||
"custom": 1,
|
|
||||||
"naming_rule": "By fieldname",
|
|
||||||
"autoname": "field:pallet_name",
|
|
||||||
"fields": [{"label": "Pallet Name", "fieldname": "pallet_name", "fieldtype": "Data"}],
|
|
||||||
"permissions": [
|
|
||||||
{
|
|
||||||
"role": "System Manager",
|
|
||||||
"permlevel": 0,
|
|
||||||
"read": 1,
|
|
||||||
"write": 1,
|
|
||||||
"create": 1,
|
|
||||||
"delete": 1,
|
|
||||||
}
|
|
||||||
],
|
|
||||||
}
|
|
||||||
).insert(ignore_permissions=True)
|
|
||||||
|
|
||||||
if not frappe.db.exists("DocType", "Inv Site"):
|
|
||||||
frappe.get_doc(
|
|
||||||
{
|
|
||||||
"doctype": "DocType",
|
|
||||||
"name": "Inv Site",
|
|
||||||
"module": "Stock",
|
|
||||||
"custom": 1,
|
|
||||||
"naming_rule": "By fieldname",
|
|
||||||
"autoname": "field:site_name",
|
|
||||||
"fields": [{"label": "Site Name", "fieldname": "site_name", "fieldtype": "Data"}],
|
|
||||||
"permissions": [
|
|
||||||
{
|
|
||||||
"role": "System Manager",
|
|
||||||
"permlevel": 0,
|
|
||||||
"read": 1,
|
|
||||||
"write": 1,
|
|
||||||
"create": 1,
|
|
||||||
"delete": 1,
|
|
||||||
}
|
|
||||||
],
|
|
||||||
}
|
|
||||||
).insert(ignore_permissions=True)
|
|
||||||
|
|
||||||
for site in ["Site 1", "Site 2"]:
|
for site in ["Site 1", "Site 2"]:
|
||||||
if not frappe.db.exists("Inv Site", site):
|
if not frappe.db.exists("Inv Site", site):
|
||||||
frappe.get_doc({"doctype": "Inv Site", "site_name": site}).insert(ignore_permissions=True)
|
frappe.get_doc({"doctype": "Inv Site", "site_name": site}).insert(ignore_permissions=True)
|
||||||
|
|
||||||
|
for store in ["Store 1", "Store 2"]:
|
||||||
|
if not frappe.db.exists("Store", store):
|
||||||
|
frappe.get_doc({"doctype": "Store", "store_name": store}).insert(ignore_permissions=True)
|
||||||
|
|
||||||
|
|
||||||
def create_inventory_dimension(**args):
|
def create_inventory_dimension(**args):
|
||||||
args = frappe._dict(args)
|
args = frappe._dict(args)
|
||||||
|
|||||||
@@ -106,6 +106,7 @@ class TestStockBalance(ERPNextTestSuite):
|
|||||||
)
|
)
|
||||||
self.assertInvariants(rows)
|
self.assertInvariants(rows)
|
||||||
|
|
||||||
|
@ERPNextTestSuite.change_settings("System Settings", {"float_precision": 3, "currency_precision": 3})
|
||||||
def test_opening_balance(self):
|
def test_opening_balance(self):
|
||||||
self.generate_stock_ledger(
|
self.generate_stock_ledger(
|
||||||
self.item.name,
|
self.item.name,
|
||||||
|
|||||||
@@ -263,6 +263,10 @@ class ERPNextTestSuite(unittest.TestCase):
|
|||||||
|
|
||||||
frappe.db.commit()
|
frappe.db.commit()
|
||||||
|
|
||||||
|
# custom doctype
|
||||||
|
# DDL commands have implicit commit
|
||||||
|
cls.make_custom_doctype()
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def update_system_settings(cls):
|
def update_system_settings(cls):
|
||||||
system_settings = frappe.get_doc("System Settings")
|
system_settings = frappe.get_doc("System Settings")
|
||||||
@@ -3164,6 +3168,123 @@ class ERPNextTestSuite(unittest.TestCase):
|
|||||||
frappe.get_doc("Finance Book", {"finance_book_name": x.get("finance_book_name")})
|
frappe.get_doc("Finance Book", {"finance_book_name": x.get("finance_book_name")})
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def make_custom_doctype(cls):
|
||||||
|
if not frappe.db.exists("DocType", "Shelf"):
|
||||||
|
frappe.get_doc(
|
||||||
|
{
|
||||||
|
"doctype": "DocType",
|
||||||
|
"name": "Shelf",
|
||||||
|
"module": "Stock",
|
||||||
|
"custom": 1,
|
||||||
|
"naming_rule": "By fieldname",
|
||||||
|
"autoname": "field:shelf_name",
|
||||||
|
"fields": [{"label": "Shelf Name", "fieldname": "shelf_name", "fieldtype": "Data"}],
|
||||||
|
"permissions": [
|
||||||
|
{
|
||||||
|
"role": "System Manager",
|
||||||
|
"permlevel": 0,
|
||||||
|
"read": 1,
|
||||||
|
"write": 1,
|
||||||
|
"create": 1,
|
||||||
|
"delete": 1,
|
||||||
|
}
|
||||||
|
],
|
||||||
|
}
|
||||||
|
).insert(ignore_permissions=True)
|
||||||
|
|
||||||
|
if not frappe.db.exists("DocType", "Rack"):
|
||||||
|
frappe.get_doc(
|
||||||
|
{
|
||||||
|
"doctype": "DocType",
|
||||||
|
"name": "Rack",
|
||||||
|
"module": "Stock",
|
||||||
|
"custom": 1,
|
||||||
|
"naming_rule": "By fieldname",
|
||||||
|
"autoname": "field:rack_name",
|
||||||
|
"fields": [{"label": "Rack Name", "fieldname": "rack_name", "fieldtype": "Data"}],
|
||||||
|
"permissions": [
|
||||||
|
{
|
||||||
|
"role": "System Manager",
|
||||||
|
"permlevel": 0,
|
||||||
|
"read": 1,
|
||||||
|
"write": 1,
|
||||||
|
"create": 1,
|
||||||
|
"delete": 1,
|
||||||
|
}
|
||||||
|
],
|
||||||
|
}
|
||||||
|
).insert(ignore_permissions=True)
|
||||||
|
|
||||||
|
if not frappe.db.exists("DocType", "Pallet"):
|
||||||
|
frappe.get_doc(
|
||||||
|
{
|
||||||
|
"doctype": "DocType",
|
||||||
|
"name": "Pallet",
|
||||||
|
"module": "Stock",
|
||||||
|
"custom": 1,
|
||||||
|
"naming_rule": "By fieldname",
|
||||||
|
"autoname": "field:pallet_name",
|
||||||
|
"fields": [{"label": "Pallet Name", "fieldname": "pallet_name", "fieldtype": "Data"}],
|
||||||
|
"permissions": [
|
||||||
|
{
|
||||||
|
"role": "System Manager",
|
||||||
|
"permlevel": 0,
|
||||||
|
"read": 1,
|
||||||
|
"write": 1,
|
||||||
|
"create": 1,
|
||||||
|
"delete": 1,
|
||||||
|
}
|
||||||
|
],
|
||||||
|
}
|
||||||
|
).insert(ignore_permissions=True)
|
||||||
|
|
||||||
|
if not frappe.db.exists("DocType", "Inv Site"):
|
||||||
|
frappe.get_doc(
|
||||||
|
{
|
||||||
|
"doctype": "DocType",
|
||||||
|
"name": "Inv Site",
|
||||||
|
"module": "Stock",
|
||||||
|
"custom": 1,
|
||||||
|
"naming_rule": "By fieldname",
|
||||||
|
"autoname": "field:site_name",
|
||||||
|
"fields": [{"label": "Site Name", "fieldname": "site_name", "fieldtype": "Data"}],
|
||||||
|
"permissions": [
|
||||||
|
{
|
||||||
|
"role": "System Manager",
|
||||||
|
"permlevel": 0,
|
||||||
|
"read": 1,
|
||||||
|
"write": 1,
|
||||||
|
"create": 1,
|
||||||
|
"delete": 1,
|
||||||
|
}
|
||||||
|
],
|
||||||
|
}
|
||||||
|
).insert(ignore_permissions=True)
|
||||||
|
|
||||||
|
if not frappe.db.exists("DocType", "Store"):
|
||||||
|
frappe.get_doc(
|
||||||
|
{
|
||||||
|
"doctype": "DocType",
|
||||||
|
"name": "Store",
|
||||||
|
"module": "Stock",
|
||||||
|
"custom": 1,
|
||||||
|
"naming_rule": "By fieldname",
|
||||||
|
"autoname": "field:store_name",
|
||||||
|
"fields": [{"label": "Store Name", "fieldname": "store_name", "fieldtype": "Data"}],
|
||||||
|
"permissions": [
|
||||||
|
{
|
||||||
|
"role": "System Manager",
|
||||||
|
"permlevel": 0,
|
||||||
|
"read": 1,
|
||||||
|
"write": 1,
|
||||||
|
"create": 1,
|
||||||
|
"delete": 1,
|
||||||
|
}
|
||||||
|
],
|
||||||
|
}
|
||||||
|
).insert(ignore_permissions=True)
|
||||||
|
|
||||||
@contextmanager
|
@contextmanager
|
||||||
def set_user(self, user: str):
|
def set_user(self, user: str):
|
||||||
try:
|
try:
|
||||||
|
|||||||
Reference in New Issue
Block a user