mirror of
https://github.com/frappe/erpnext.git
synced 2026-05-22 14:39:19 +00:00
refactor(test): make sales order deterministic
This commit is contained in:
@@ -56,7 +56,6 @@ class TestSalesOrder(AccountsTestMixin, ERPNextTestSuite):
|
|||||||
|
|
||||||
def tearDown(self):
|
def tearDown(self):
|
||||||
frappe.db.rollback()
|
frappe.db.rollback()
|
||||||
frappe.set_user("Administrator")
|
|
||||||
|
|
||||||
@IntegrationTestCase.change_settings(
|
@IntegrationTestCase.change_settings(
|
||||||
"Stock Settings",
|
"Stock Settings",
|
||||||
@@ -145,7 +144,7 @@ class TestSalesOrder(AccountsTestMixin, ERPNextTestSuite):
|
|||||||
so.reload()
|
so.reload()
|
||||||
self.assertEqual(so.status, "Completed")
|
self.assertEqual(so.status, "Completed")
|
||||||
|
|
||||||
@IntegrationTestCase.change_settings("Selling Settings", {"allow_negative_rates_for_items": 1})
|
@ERPNextTestSuite.change_settings("Selling Settings", {"allow_multiple_items": 1, "allow_negative_rates_for_items": 1})
|
||||||
def test_sales_order_with_negative_rate(self):
|
def test_sales_order_with_negative_rate(self):
|
||||||
"""
|
"""
|
||||||
Test if negative rate is allowed in Sales Order via doc submission and update items
|
Test if negative rate is allowed in Sales Order via doc submission and update items
|
||||||
@@ -175,6 +174,7 @@ class TestSalesOrder(AccountsTestMixin, ERPNextTestSuite):
|
|||||||
)
|
)
|
||||||
update_child_qty_rate("Sales Order", trans_item, so.name)
|
update_child_qty_rate("Sales Order", trans_item, so.name)
|
||||||
|
|
||||||
|
@ERPNextTestSuite.change_settings("Selling Settings", {"allow_multiple_items": 1})
|
||||||
def test_sales_order_qty(self):
|
def test_sales_order_qty(self):
|
||||||
so = make_sales_order(qty=1, do_not_save=True)
|
so = make_sales_order(qty=1, do_not_save=True)
|
||||||
|
|
||||||
@@ -823,6 +823,7 @@ class TestSalesOrder(AccountsTestMixin, ERPNextTestSuite):
|
|||||||
# reserved qty in packed item should increase after changing bundle item uom
|
# reserved qty in packed item should increase after changing bundle item uom
|
||||||
self.assertEqual(get_reserved_qty("_Packed Item"), existing_reserved_qty + 8)
|
self.assertEqual(get_reserved_qty("_Packed Item"), existing_reserved_qty + 8)
|
||||||
|
|
||||||
|
@ERPNextTestSuite.change_settings("Selling Settings", {"allow_multiple_items": 1})
|
||||||
def test_update_child_with_tax_template(self):
|
def test_update_child_with_tax_template(self):
|
||||||
"""
|
"""
|
||||||
Test Action: Create a SO with one item having its tax account head already in the SO.
|
Test Action: Create a SO with one item having its tax account head already in the SO.
|
||||||
@@ -1485,6 +1486,7 @@ class TestSalesOrder(AccountsTestMixin, ERPNextTestSuite):
|
|||||||
si.insert()
|
si.insert()
|
||||||
self.assertTrue(si.get("payment_schedule"))
|
self.assertTrue(si.get("payment_schedule"))
|
||||||
|
|
||||||
|
@ERPNextTestSuite.change_settings("Selling Settings", {"allow_multiple_items": 1})
|
||||||
def test_make_work_order(self):
|
def test_make_work_order(self):
|
||||||
from erpnext.selling.doctype.sales_order.sales_order import get_work_order_items
|
from erpnext.selling.doctype.sales_order.sales_order import get_work_order_items
|
||||||
|
|
||||||
@@ -1826,7 +1828,7 @@ class TestSalesOrder(AccountsTestMixin, ERPNextTestSuite):
|
|||||||
from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_sales_invoice
|
from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_sales_invoice
|
||||||
|
|
||||||
so = make_sales_order(uom="Nos", do_not_save=1)
|
so = make_sales_order(uom="Nos", do_not_save=1)
|
||||||
so.items[0].rate = 0
|
so.items[0].rate = so.items[0].price_list_rate = 0
|
||||||
so.save()
|
so.save()
|
||||||
so.submit()
|
so.submit()
|
||||||
|
|
||||||
@@ -2384,7 +2386,7 @@ class TestSalesOrder(AccountsTestMixin, ERPNextTestSuite):
|
|||||||
|
|
||||||
frappe.db.set_single_value("Stock Settings", "auto_insert_price_list_rate_if_missing", 1)
|
frappe.db.set_single_value("Stock Settings", "auto_insert_price_list_rate_if_missing", 1)
|
||||||
so = make_sales_order(
|
so = make_sales_order(
|
||||||
item_code=item.name, currency="USD", qty=1, rate=100, price_list_rate=100, do_not_submit=True
|
item_code=item.name, currency="INR", qty=1, rate=100, price_list_rate=100, do_not_submit=True
|
||||||
)
|
)
|
||||||
so.save()
|
so.save()
|
||||||
|
|
||||||
@@ -2392,7 +2394,7 @@ class TestSalesOrder(AccountsTestMixin, ERPNextTestSuite):
|
|||||||
self.assertEqual(item_price, 100)
|
self.assertEqual(item_price, 100)
|
||||||
|
|
||||||
so = make_sales_order(
|
so = make_sales_order(
|
||||||
item_code=item.name, currency="USD", qty=1, rate=200, price_list_rate=100, do_not_submit=True
|
item_code=item.name, currency="INR", qty=1, rate=200, price_list_rate=100, do_not_submit=True
|
||||||
)
|
)
|
||||||
so.save()
|
so.save()
|
||||||
|
|
||||||
@@ -2401,7 +2403,7 @@ class TestSalesOrder(AccountsTestMixin, ERPNextTestSuite):
|
|||||||
|
|
||||||
frappe.db.set_single_value("Stock Settings", "update_existing_price_list_rate", 1)
|
frappe.db.set_single_value("Stock Settings", "update_existing_price_list_rate", 1)
|
||||||
so = make_sales_order(
|
so = make_sales_order(
|
||||||
item_code=item.name, currency="USD", qty=1, rate=200, price_list_rate=200, do_not_submit=True
|
item_code=item.name, currency="INR", qty=1, rate=200, price_list_rate=200, do_not_submit=True
|
||||||
)
|
)
|
||||||
so.save()
|
so.save()
|
||||||
|
|
||||||
|
|||||||
@@ -233,6 +233,7 @@ class ERPNextTestSuite(unittest.TestCase):
|
|||||||
cls.make_asset_maintenance_team()
|
cls.make_asset_maintenance_team()
|
||||||
cls.make_asset_category()
|
cls.make_asset_category()
|
||||||
cls._make_item()
|
cls._make_item()
|
||||||
|
cls.make_product_bundle()
|
||||||
cls.make_location()
|
cls.make_location()
|
||||||
cls.make_price_list()
|
cls.make_price_list()
|
||||||
cls.make_item_price()
|
cls.make_item_price()
|
||||||
@@ -2170,6 +2171,40 @@ class ERPNextTestSuite(unittest.TestCase):
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def make_product_bundle(cls):
|
||||||
|
records = [
|
||||||
|
{
|
||||||
|
"doctype": "Product Bundle",
|
||||||
|
"new_item_code": "_Test Product Bundle Item",
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"doctype": "Product Bundle Item",
|
||||||
|
"item_code": "_Test Item",
|
||||||
|
"parentfield": "items",
|
||||||
|
"qty": 5.0,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"doctype": "Product Bundle Item",
|
||||||
|
"item_code": "_Test Item Home Desktop 100",
|
||||||
|
"parentfield": "items",
|
||||||
|
"qty": 2.0,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
}
|
||||||
|
]
|
||||||
|
cls.product_bundle = []
|
||||||
|
for x in records:
|
||||||
|
if not frappe.db.exists("Product Bundle", {"new_item_code": x.get("new_item_code")}):
|
||||||
|
cls.product_bundle.append(frappe.get_doc(x).insert())
|
||||||
|
else:
|
||||||
|
cls.product_bundle.append(
|
||||||
|
frappe.get_doc(
|
||||||
|
"Product Bundle",
|
||||||
|
{"new_item_code": x.get("new_item_code")},
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def make_test_account(cls):
|
def make_test_account(cls):
|
||||||
records = [
|
records = [
|
||||||
|
|||||||
Reference in New Issue
Block a user