mirror of
https://github.com/frappe/erpnext.git
synced 2026-09-14 09:23:09 +00:00
test(selling): cover item removal without cancel and delete perms
(cherry picked from commit 5b1c4d22e0)
This commit is contained in:
@@ -688,6 +688,44 @@ class TestSalesOrder(ERPNextTestSuite):
|
|||||||
frappe.ValidationError, update_child_qty_rate, "Sales Order", trans_item, so.name
|
frappe.ValidationError, update_child_qty_rate, "Sales Order", trans_item, so.name
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def test_update_child_removing_item_without_cancel_and_delete_perms(self):
|
||||||
|
role = "_Test Sales Order Item Editor"
|
||||||
|
if not frappe.db.exists("Role", role):
|
||||||
|
frappe.get_doc({"doctype": "Role", "role_name": role, "desk_access": 1}).insert()
|
||||||
|
|
||||||
|
frappe.permissions.add_permission("Sales Order", role, 0)
|
||||||
|
for right, value in {
|
||||||
|
"read": 1,
|
||||||
|
"write": 1,
|
||||||
|
"create": 1,
|
||||||
|
"submit": 1,
|
||||||
|
"cancel": 0,
|
||||||
|
"delete": 0,
|
||||||
|
}.items():
|
||||||
|
frappe.permissions.update_permission_property("Sales Order", role, 0, right, value)
|
||||||
|
frappe.clear_cache()
|
||||||
|
|
||||||
|
so = make_sales_order(**{"item_list": [{"item_code": "_Test Item", "qty": 5, "rate": 1000}]})
|
||||||
|
trans_item = json.dumps(
|
||||||
|
[
|
||||||
|
{"item_code": "_Test Item", "qty": 5, "rate": 1000, "docname": so.items[0].name},
|
||||||
|
{"item_code": "_Test Item 2", "qty": 2, "rate": 500},
|
||||||
|
]
|
||||||
|
)
|
||||||
|
update_child_qty_rate("Sales Order", trans_item, so.name)
|
||||||
|
so.reload()
|
||||||
|
self.assertEqual(len(so.items), 2)
|
||||||
|
|
||||||
|
test_user = create_user("test_so_item_editor@example.com", role, "Accounts User", "Stock User")
|
||||||
|
trans_item = json.dumps(
|
||||||
|
[{"item_code": "_Test Item", "qty": 5, "rate": 1000, "docname": so.items[0].name}]
|
||||||
|
)
|
||||||
|
with self.set_user(test_user.name):
|
||||||
|
update_child_qty_rate("Sales Order", trans_item, so.name)
|
||||||
|
|
||||||
|
so.reload()
|
||||||
|
self.assertEqual(len(so.items), 1)
|
||||||
|
|
||||||
def test_update_child_qty_rate_with_workflow(self):
|
def test_update_child_qty_rate_with_workflow(self):
|
||||||
from frappe.model.workflow import apply_workflow
|
from frappe.model.workflow import apply_workflow
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user