diff --git a/frappe/public/js/frappe/form/workflow.js b/frappe/public/js/frappe/form/workflow.js index e3fde7ae84..989638c475 100644 --- a/frappe/public/js/frappe/form/workflow.js +++ b/frappe/public/js/frappe/form/workflow.js @@ -112,9 +112,6 @@ frappe.ui.form.States = Class.extend({ } else if(new_docstatus==2 && me.frm.doc.docstatus==1) { me.frm.savecancel(null, success, on_error); } else { - frappe.msgprint(__("Document Status transition from ") + me.frm.doc.docstatus + " " - + __("to") + - new_docstatus + " " + __("is not allowed.")); frappe.msgprint(__("Document Status transition from {0} to {1} is not allowed", [me.frm.doc.docstatus, new_docstatus])); return false; } diff --git a/frappe/tests/ui/tests.txt b/frappe/tests/ui/tests.txt index 221257babc..bcdd1c6cee 100644 --- a/frappe/tests/ui/tests.txt +++ b/frappe/tests/ui/tests.txt @@ -11,3 +11,5 @@ frappe/core/doctype/report/test_query_report.js frappe/tests/ui/test_linked_with.js frappe/custom/doctype/customize_form/test_customize_form.js frappe/desk/doctype/event/test_event.js +frappe/workflow/doctype/workflow/tests/test_workflow_create.js +frappe/workflow/doctype/workflow/tests/test_workflow_test.js diff --git a/frappe/workflow/doctype/workflow/tests/test_workflow_create.js b/frappe/workflow/doctype/workflow/tests/test_workflow_create.js new file mode 100644 index 0000000000..6af4bbff67 --- /dev/null +++ b/frappe/workflow/doctype/workflow/tests/test_workflow_create.js @@ -0,0 +1,59 @@ +QUnit.module('setup'); + +QUnit.test("Test Workflow", function(assert) { + assert.expect(1); + let done = assert.async(); + + frappe.run_serially([ + () => { + return frappe.tests.make('Workflow', [ + {workflow_name: "Test User Workflow"}, + {document_type: "User"}, + {is_active: 1}, + {override_status: 1}, + {states: [ + [ + {state: 'Pending'}, + {doc_status: 0}, + {allow_edit: 'Administrator'} + ], + [ + {state: 'Approved'}, + {doc_status: 1}, + {allow_edit: 'Administrator'} + ], + [ + {state: 'Rejected'}, + {doc_status: 2}, + {allow_edit: 'Administrator'} + ] + ]}, + {transitions: [ + [ + {state: 'Pending'}, + {action: 'Review'}, + {next_state: 'Pending'}, + {allowed: 'Administrator'} + ], + [ + {state: 'Pending'}, + {action: 'Approve'}, + {next_state: 'Approved'}, + {allowed: 'Administrator'} + ], + [ + {state: 'Approved'}, + {action: 'Reject'}, + {next_state: 'Rejected'}, + {allowed: 'Administrator'} + ], + ]}, + {workflow_state_field: 'workflow_state'} + ]); + }, + () => frappe.timeout(1), + () => {assert.equal($('.msgprint').text(), "Created Custom Field workflow_state in User", "Workflow created");}, + () => frappe.tests.click_button('Close'), + () => done() + ]); +}); \ No newline at end of file diff --git a/frappe/workflow/doctype/workflow/tests/test_workflow_test.js b/frappe/workflow/doctype/workflow/tests/test_workflow_test.js new file mode 100644 index 0000000000..1a4e639fb7 --- /dev/null +++ b/frappe/workflow/doctype/workflow/tests/test_workflow_test.js @@ -0,0 +1,53 @@ +QUnit.module('setup'); + +QUnit.test("Test Workflow", function(assert) { + assert.expect(5); + let done = assert.async(); + + frappe.run_serially([ + () => frappe.set_route('Form', 'User', 'New User 1'), + () => frappe.timeout(1), + () => { + cur_frm.set_value('email', 'test1@testmail.com'); + cur_frm.set_value('first_name', 'Test Name'); + cur_frm.set_value('send_welcome_email', 0); + cur_frm.save(); + }, + () => frappe.timeout(0.5), + () => frappe.tests.click_button('Actions'), + () => frappe.timeout(0.5), + () => { + let review = $(`.dropdown-menu li:contains("Review"):visible`).size(); + let approve = $(`.dropdown-menu li:contains("Approve"):visible`).size(); + assert.equal(review, 1, "Review Action exists"); + assert.equal(approve, 1, "Approve Action exists"); + }, + () => frappe.tests.click_dropdown_item('Approve'), + () => frappe.timeout(1), + () => frappe.tests.click_button('Yes'), + () => frappe.timeout(1), + () => { + assert.equal($('.msgprint').text(), "Did not saveInsufficient Permission for User", "Approve action working"); + frappe.tests.click_button('Close'); + }, + () => frappe.timeout(1), + () => { + $('.user-role input:eq(5)').click(); + cur_frm.save(); + }, + () => frappe.timeout(0.5), + () => frappe.tests.click_button('Actions'), + () => frappe.timeout(0.5), + () => { + let reject = $(`.dropdown-menu li:contains("Reject"):visible`).size(); + assert.equal(reject, 1, "Review Action exists"); + }, + () => frappe.tests.click_dropdown_item('Reject'), + () => frappe.timeout(0.5), + () => { + if(frappe.tests.click_button('Close')) + assert.equal(1, 1, "Reject action works"); + }, + () => done() + ]); +}); \ No newline at end of file