mirror of
https://github.com/frappe/erpnext.git
synced 2026-02-15 23:54:59 +00:00
chore: Refactor test cases to use context manager for user setting
This commit is contained in:
@@ -295,22 +295,21 @@ class TestPurchaseOrder(IntegrationTestCase):
|
||||
user = "test@example.com"
|
||||
test_user = frappe.get_doc("User", user)
|
||||
test_user.add_roles("Accounts User")
|
||||
frappe.set_user(user)
|
||||
|
||||
# update qty
|
||||
trans_item = json.dumps(
|
||||
[{"item_code": "_Test Item", "rate": 200, "qty": 7, "docname": po.items[0].name}]
|
||||
)
|
||||
self.assertRaises(
|
||||
frappe.ValidationError, update_child_qty_rate, "Purchase Order", trans_item, po.name
|
||||
)
|
||||
with self.set_user(user):
|
||||
# update qty
|
||||
trans_item = json.dumps(
|
||||
[{"item_code": "_Test Item", "rate": 200, "qty": 7, "docname": po.items[0].name}]
|
||||
)
|
||||
self.assertRaises(
|
||||
frappe.ValidationError, update_child_qty_rate, "Purchase Order", trans_item, po.name
|
||||
)
|
||||
|
||||
# add new item
|
||||
trans_item = json.dumps([{"item_code": "_Test Item", "rate": 100, "qty": 2}])
|
||||
self.assertRaises(
|
||||
frappe.ValidationError, update_child_qty_rate, "Purchase Order", trans_item, po.name
|
||||
)
|
||||
frappe.set_user("Administrator")
|
||||
# add new item
|
||||
trans_item = json.dumps([{"item_code": "_Test Item", "rate": 100, "qty": 2}])
|
||||
self.assertRaises(
|
||||
frappe.ValidationError, update_child_qty_rate, "Purchase Order", trans_item, po.name
|
||||
)
|
||||
|
||||
def test_update_child_with_tax_template(self):
|
||||
"""
|
||||
|
||||
@@ -192,7 +192,7 @@ class TestSupplierPortal(IntegrationTestCase):
|
||||
supplier.append("portal_users", {"user": user})
|
||||
supplier.save()
|
||||
|
||||
frappe.set_user(user)
|
||||
_, suppliers = get_customers_suppliers("Purchase Order", user)
|
||||
with self.set_user(user):
|
||||
_, suppliers = get_customers_suppliers("Purchase Order", user)
|
||||
|
||||
self.assertIn(supplier.name, suppliers)
|
||||
self.assertIn(supplier.name, suppliers)
|
||||
|
||||
@@ -547,17 +547,20 @@ class TestSalesOrder(AccountsTestMixin, IntegrationTestCase):
|
||||
so = make_sales_order(item_code="_Test Item", qty=4)
|
||||
|
||||
test_user = create_user("test_so_child_perms@example.com", "Accounts User")
|
||||
frappe.set_user(test_user.name)
|
||||
with self.set_user(test_user.name):
|
||||
# update qty
|
||||
trans_item = json.dumps(
|
||||
[{"item_code": "_Test Item", "rate": 200, "qty": 7, "docname": so.items[0].name}]
|
||||
)
|
||||
self.assertRaises(
|
||||
frappe.ValidationError, update_child_qty_rate, "Sales Order", trans_item, so.name
|
||||
)
|
||||
|
||||
# update qty
|
||||
trans_item = json.dumps(
|
||||
[{"item_code": "_Test Item", "rate": 200, "qty": 7, "docname": so.items[0].name}]
|
||||
)
|
||||
self.assertRaises(frappe.ValidationError, update_child_qty_rate, "Sales Order", trans_item, so.name)
|
||||
|
||||
# add new item
|
||||
trans_item = json.dumps([{"item_code": "_Test Item", "rate": 100, "qty": 2}])
|
||||
self.assertRaises(frappe.ValidationError, update_child_qty_rate, "Sales Order", trans_item, so.name)
|
||||
# add new item
|
||||
trans_item = json.dumps([{"item_code": "_Test Item", "rate": 100, "qty": 2}])
|
||||
self.assertRaises(
|
||||
frappe.ValidationError, update_child_qty_rate, "Sales Order", trans_item, so.name
|
||||
)
|
||||
|
||||
def test_update_child_qty_rate_with_workflow(self):
|
||||
from frappe.model.workflow import apply_workflow
|
||||
@@ -569,26 +572,25 @@ class TestSalesOrder(AccountsTestMixin, IntegrationTestCase):
|
||||
user = "test@example.com"
|
||||
test_user = frappe.get_doc("User", user)
|
||||
test_user.add_roles("Sales User", "Test Junior Approver")
|
||||
frappe.set_user(user)
|
||||
with self.set_user(user):
|
||||
# user shouldn't be able to edit since grand_total will become > 200 if qty is doubled
|
||||
trans_item = json.dumps(
|
||||
[{"item_code": "_Test Item", "rate": 150, "qty": 2, "docname": so.items[0].name}]
|
||||
)
|
||||
self.assertRaises(
|
||||
frappe.ValidationError, update_child_qty_rate, "Sales Order", trans_item, so.name
|
||||
)
|
||||
|
||||
# user shouldn't be able to edit since grand_total will become > 200 if qty is doubled
|
||||
trans_item = json.dumps(
|
||||
[{"item_code": "_Test Item", "rate": 150, "qty": 2, "docname": so.items[0].name}]
|
||||
)
|
||||
self.assertRaises(frappe.ValidationError, update_child_qty_rate, "Sales Order", trans_item, so.name)
|
||||
|
||||
frappe.set_user("Administrator")
|
||||
user2 = "test2@example.com"
|
||||
test_user2 = frappe.get_doc("User", user2)
|
||||
test_user2.add_roles("Sales User", "Test Approver")
|
||||
frappe.set_user(user2)
|
||||
|
||||
# Test Approver is allowed to edit with grand_total > 200
|
||||
update_child_qty_rate("Sales Order", trans_item, so.name)
|
||||
so.reload()
|
||||
self.assertEqual(so.items[0].qty, 2)
|
||||
with self.set_user(user2):
|
||||
# Test Approver is allowed to edit with grand_total > 200
|
||||
update_child_qty_rate("Sales Order", trans_item, so.name)
|
||||
so.reload()
|
||||
self.assertEqual(so.items[0].qty, 2)
|
||||
|
||||
frappe.set_user("Administrator")
|
||||
test_user.remove_roles("Sales User", "Test Junior Approver", "Test Approver")
|
||||
test_user2.remove_roles("Sales User", "Test Junior Approver", "Test Approver")
|
||||
workflow.is_active = 0
|
||||
@@ -816,22 +818,20 @@ class TestSalesOrder(AccountsTestMixin, IntegrationTestCase):
|
||||
frappe.permissions.add_user_permission("Warehouse", "_Test Warehouse 2 - _TC1", test_user_2.name)
|
||||
frappe.permissions.add_user_permission("Company", "_Test Company 1", test_user_2.name)
|
||||
|
||||
frappe.set_user(test_user.name)
|
||||
with self.set_user(test_user.name):
|
||||
so = make_sales_order(
|
||||
company="_Test Company 1",
|
||||
customer="_Test Customer 1",
|
||||
warehouse="_Test Warehouse 2 - _TC1",
|
||||
do_not_save=True,
|
||||
)
|
||||
so.conversion_rate = 0.02
|
||||
so.plc_conversion_rate = 0.02
|
||||
self.assertRaises(frappe.PermissionError, so.insert)
|
||||
|
||||
so = make_sales_order(
|
||||
company="_Test Company 1",
|
||||
customer="_Test Customer 1",
|
||||
warehouse="_Test Warehouse 2 - _TC1",
|
||||
do_not_save=True,
|
||||
)
|
||||
so.conversion_rate = 0.02
|
||||
so.plc_conversion_rate = 0.02
|
||||
self.assertRaises(frappe.PermissionError, so.insert)
|
||||
with self.set_user(test_user_2.name):
|
||||
so.insert()
|
||||
|
||||
frappe.set_user(test_user_2.name)
|
||||
so.insert()
|
||||
|
||||
frappe.set_user("Administrator")
|
||||
frappe.permissions.remove_user_permission("Warehouse", "_Test Warehouse 1 - _TC", test_user.name)
|
||||
frappe.permissions.remove_user_permission("Warehouse", "_Test Warehouse 2 - _TC1", test_user_2.name)
|
||||
frappe.permissions.remove_user_permission("Company", "_Test Company 1", test_user_2.name)
|
||||
|
||||
@@ -752,15 +752,14 @@ class TestStockEntry(IntegrationTestCase):
|
||||
frappe.get_doc("User", "test2@example.com").add_roles(
|
||||
"Sales User", "Sales Manager", "Stock User", "Stock Manager"
|
||||
)
|
||||
frappe.set_user("test2@example.com")
|
||||
with self.set_user("test2@example.com"):
|
||||
from erpnext.stock.utils import InvalidWarehouseCompany
|
||||
|
||||
from erpnext.stock.utils import InvalidWarehouseCompany
|
||||
|
||||
st1 = frappe.copy_doc(self.globalTestRecords["Stock Entry"][0])
|
||||
st1.get("items")[0].t_warehouse = "_Test Warehouse 2 - _TC1"
|
||||
st1.set_stock_entry_type()
|
||||
st1.insert()
|
||||
self.assertRaises(InvalidWarehouseCompany, st1.submit)
|
||||
st1 = frappe.copy_doc(self.globalTestRecords["Stock Entry"][0])
|
||||
st1.get("items")[0].t_warehouse = "_Test Warehouse 2 - _TC1"
|
||||
st1.set_stock_entry_type()
|
||||
st1.insert()
|
||||
self.assertRaises(InvalidWarehouseCompany, st1.submit)
|
||||
|
||||
# permission tests
|
||||
def test_warehouse_user(self):
|
||||
@@ -778,24 +777,23 @@ class TestStockEntry(IntegrationTestCase):
|
||||
st1 = frappe.copy_doc(self.globalTestRecords["Stock Entry"][0])
|
||||
st1.company = "_Test Company 1"
|
||||
|
||||
frappe.set_user("test@example.com")
|
||||
st1.get("items")[0].t_warehouse = "_Test Warehouse 2 - _TC1"
|
||||
self.assertRaises(frappe.PermissionError, st1.insert)
|
||||
with self.set_user("test@example.com"):
|
||||
st1.get("items")[0].t_warehouse = "_Test Warehouse 2 - _TC1"
|
||||
self.assertRaises(frappe.PermissionError, st1.insert)
|
||||
|
||||
test_user.add_roles("System Manager")
|
||||
|
||||
frappe.set_user("test2@example.com")
|
||||
st1 = frappe.copy_doc(self.globalTestRecords["Stock Entry"][0])
|
||||
st1.company = "_Test Company 1"
|
||||
st1.get("items")[0].t_warehouse = "_Test Warehouse 2 - _TC1"
|
||||
st1.get("items")[0].expense_account = "Stock Adjustment - _TC1"
|
||||
st1.get("items")[0].cost_center = "Main - _TC1"
|
||||
st1.set_stock_entry_type()
|
||||
st1.insert()
|
||||
st1.submit()
|
||||
st1.cancel()
|
||||
with self.set_user("test2@example.com"):
|
||||
st1 = frappe.copy_doc(self.globalTestRecords["Stock Entry"][0])
|
||||
st1.company = "_Test Company 1"
|
||||
st1.get("items")[0].t_warehouse = "_Test Warehouse 2 - _TC1"
|
||||
st1.get("items")[0].expense_account = "Stock Adjustment - _TC1"
|
||||
st1.get("items")[0].cost_center = "Main - _TC1"
|
||||
st1.set_stock_entry_type()
|
||||
st1.insert()
|
||||
st1.submit()
|
||||
st1.cancel()
|
||||
|
||||
frappe.set_user("Administrator")
|
||||
remove_user_permission("Warehouse", "_Test Warehouse 1 - _TC", "test@example.com")
|
||||
remove_user_permission("Warehouse", "_Test Warehouse 2 - _TC1", "test2@example.com")
|
||||
remove_user_permission("Company", "_Test Company 1", "test2@example.com")
|
||||
|
||||
@@ -423,37 +423,35 @@ class TestStockLedgerEntry(IntegrationTestCase, StockTestMixin):
|
||||
user.add_roles("Stock User")
|
||||
user.remove_roles("Stock Manager")
|
||||
|
||||
frappe.set_user(user.name)
|
||||
with self.set_user(user.name):
|
||||
stock_entry_on_today = make_stock_entry(
|
||||
target="_Test Warehouse - _TC", qty=10, basic_rate=100
|
||||
)
|
||||
back_dated_se_1 = make_stock_entry(
|
||||
target="_Test Warehouse - _TC",
|
||||
qty=10,
|
||||
basic_rate=100,
|
||||
posting_date=add_days(today(), -1),
|
||||
do_not_submit=True,
|
||||
)
|
||||
|
||||
stock_entry_on_today = make_stock_entry(target="_Test Warehouse - _TC", qty=10, basic_rate=100)
|
||||
back_dated_se_1 = make_stock_entry(
|
||||
target="_Test Warehouse - _TC",
|
||||
qty=10,
|
||||
basic_rate=100,
|
||||
posting_date=add_days(today(), -1),
|
||||
do_not_submit=True,
|
||||
)
|
||||
# Block back-dated entry
|
||||
self.assertRaises(BackDatedStockTransaction, back_dated_se_1.submit)
|
||||
|
||||
# Block back-dated entry
|
||||
self.assertRaises(BackDatedStockTransaction, back_dated_se_1.submit)
|
||||
|
||||
frappe.set_user("Administrator")
|
||||
user.add_roles("Stock Manager")
|
||||
frappe.set_user(user.name)
|
||||
with self.set_user(user.name):
|
||||
# Back dated entry allowed to Stock Manager
|
||||
back_dated_se_2 = make_stock_entry(
|
||||
target="_Test Warehouse - _TC", qty=10, basic_rate=100, posting_date=add_days(today(), -1)
|
||||
)
|
||||
|
||||
# Back dated entry allowed to Stock Manager
|
||||
back_dated_se_2 = make_stock_entry(
|
||||
target="_Test Warehouse - _TC", qty=10, basic_rate=100, posting_date=add_days(today(), -1)
|
||||
)
|
||||
|
||||
back_dated_se_2.cancel()
|
||||
stock_entry_on_today.cancel()
|
||||
back_dated_se_2.cancel()
|
||||
stock_entry_on_today.cancel()
|
||||
|
||||
finally:
|
||||
frappe.db.set_single_value(
|
||||
"Stock Settings", "role_allowed_to_create_edit_back_dated_transactions", None
|
||||
)
|
||||
frappe.set_user("Administrator")
|
||||
user.remove_roles("Stock Manager")
|
||||
|
||||
def test_batchwise_item_valuation_fifo(self):
|
||||
|
||||
@@ -27,21 +27,18 @@ class TestWebsite(IntegrationTestCase):
|
||||
create_order_assignment(supplier="Supplier1", po=po1.name)
|
||||
create_order_assignment(supplier="Supplier2", po=po2.name)
|
||||
|
||||
frappe.set_user("Administrator")
|
||||
# checking if data consist of all order assignment of Supplier1 and Supplier2
|
||||
self.assertTrue("Supplier1" and "Supplier2" in [data.supplier for data in get_data()])
|
||||
|
||||
frappe.set_user("supplier1@gmail.com")
|
||||
# checking if data only consist of order assignment of Supplier1
|
||||
self.assertTrue("Supplier1" in [data.supplier for data in get_data()])
|
||||
self.assertFalse([data.supplier for data in get_data() if data.supplier != "Supplier1"])
|
||||
with self.set_user("supplier1@gmail.com"):
|
||||
# checking if data only consist of order assignment of Supplier1
|
||||
self.assertTrue("Supplier1" in [data.supplier for data in get_data()])
|
||||
self.assertFalse([data.supplier for data in get_data() if data.supplier != "Supplier1"])
|
||||
|
||||
frappe.set_user("supplier2@gmail.com")
|
||||
# checking if data only consist of order assignment of Supplier2
|
||||
self.assertTrue("Supplier2" in [data.supplier for data in get_data()])
|
||||
self.assertFalse([data.supplier for data in get_data() if data.supplier != "Supplier2"])
|
||||
|
||||
frappe.set_user("Administrator")
|
||||
with self.set_user("supplier2@gmail.com"):
|
||||
# checking if data only consist of order assignment of Supplier2
|
||||
self.assertTrue("Supplier2" in [data.supplier for data in get_data()])
|
||||
self.assertFalse([data.supplier for data in get_data() if data.supplier != "Supplier2"])
|
||||
|
||||
|
||||
def get_data():
|
||||
|
||||
Reference in New Issue
Block a user