mirror of
https://github.com/frappe/erpnext.git
synced 2026-05-22 22:49:19 +00:00
fix: flaky HR tests (#29045)
* fix(test): Leave Allocation validation against Leave Application after submit (#29005) * fix(test): Leave Allocation validation against Leave Application after submit * chore: clean-up Leave Allocation tests * fix(test): set holiday list for leave allocation test * fix: flaky HR tests (#29017) * fix(test): use root company in Expense Claim tests * fix(test): set Holiday List for Leave Allocation * fix(test): set Holiday List for company
This commit is contained in:
@@ -10,15 +10,17 @@ from erpnext.accounts.doctype.account.test_account import create_account
|
|||||||
from erpnext.hr.doctype.employee.test_employee import make_employee
|
from erpnext.hr.doctype.employee.test_employee import make_employee
|
||||||
from erpnext.hr.doctype.expense_claim.expense_claim import make_bank_entry
|
from erpnext.hr.doctype.expense_claim.expense_claim import make_bank_entry
|
||||||
|
|
||||||
test_records = frappe.get_test_records('Expense Claim')
|
|
||||||
test_dependencies = ['Employee']
|
test_dependencies = ['Employee']
|
||||||
company_name = '_Test Company 4'
|
company_name = '_Test Company 3'
|
||||||
|
|
||||||
|
|
||||||
class TestExpenseClaim(unittest.TestCase):
|
class TestExpenseClaim(unittest.TestCase):
|
||||||
|
def tearDown(self):
|
||||||
|
frappe.db.rollback()
|
||||||
|
|
||||||
def test_total_expense_claim_for_project(self):
|
def test_total_expense_claim_for_project(self):
|
||||||
frappe.db.sql("""delete from `tabTask` where project = "_Test Project 1" """)
|
frappe.db.sql("""delete from `tabTask`""")
|
||||||
frappe.db.sql("""delete from `tabProject` where name = "_Test Project 1" """)
|
frappe.db.sql("""delete from `tabProject`""")
|
||||||
frappe.db.sql("update `tabExpense Claim` set project = '', task = ''")
|
frappe.db.sql("update `tabExpense Claim` set project = '', task = ''")
|
||||||
|
|
||||||
project = frappe.get_doc({
|
project = frappe.get_doc({
|
||||||
@@ -37,12 +39,12 @@ class TestExpenseClaim(unittest.TestCase):
|
|||||||
task_name = task.name
|
task_name = task.name
|
||||||
payable_account = get_payable_account(company_name)
|
payable_account = get_payable_account(company_name)
|
||||||
|
|
||||||
make_expense_claim(payable_account, 300, 200, company_name, "Travel Expenses - _TC4", project.name, task_name)
|
make_expense_claim(payable_account, 300, 200, company_name, "Travel Expenses - _TC3", project.name, task_name)
|
||||||
|
|
||||||
self.assertEqual(frappe.db.get_value("Task", task_name, "total_expense_claim"), 200)
|
self.assertEqual(frappe.db.get_value("Task", task_name, "total_expense_claim"), 200)
|
||||||
self.assertEqual(frappe.db.get_value("Project", project.name, "total_expense_claim"), 200)
|
self.assertEqual(frappe.db.get_value("Project", project.name, "total_expense_claim"), 200)
|
||||||
|
|
||||||
expense_claim2 = make_expense_claim(payable_account, 600, 500, company_name, "Travel Expenses - _TC4", project.name, task_name)
|
expense_claim2 = make_expense_claim(payable_account, 600, 500, company_name, "Travel Expenses - _TC3", project.name, task_name)
|
||||||
|
|
||||||
self.assertEqual(frappe.db.get_value("Task", task_name, "total_expense_claim"), 700)
|
self.assertEqual(frappe.db.get_value("Task", task_name, "total_expense_claim"), 700)
|
||||||
self.assertEqual(frappe.db.get_value("Project", project.name, "total_expense_claim"), 700)
|
self.assertEqual(frappe.db.get_value("Project", project.name, "total_expense_claim"), 700)
|
||||||
@@ -54,7 +56,7 @@ class TestExpenseClaim(unittest.TestCase):
|
|||||||
|
|
||||||
def test_expense_claim_status(self):
|
def test_expense_claim_status(self):
|
||||||
payable_account = get_payable_account(company_name)
|
payable_account = get_payable_account(company_name)
|
||||||
expense_claim = make_expense_claim(payable_account, 300, 200, company_name, "Travel Expenses - _TC4")
|
expense_claim = make_expense_claim(payable_account, 300, 200, company_name, "Travel Expenses - _TC3")
|
||||||
|
|
||||||
je_dict = make_bank_entry("Expense Claim", expense_claim.name)
|
je_dict = make_bank_entry("Expense Claim", expense_claim.name)
|
||||||
je = frappe.get_doc(je_dict)
|
je = frappe.get_doc(je_dict)
|
||||||
@@ -73,7 +75,7 @@ class TestExpenseClaim(unittest.TestCase):
|
|||||||
def test_expense_claim_gl_entry(self):
|
def test_expense_claim_gl_entry(self):
|
||||||
payable_account = get_payable_account(company_name)
|
payable_account = get_payable_account(company_name)
|
||||||
taxes = generate_taxes()
|
taxes = generate_taxes()
|
||||||
expense_claim = make_expense_claim(payable_account, 300, 200, company_name, "Travel Expenses - _TC4",
|
expense_claim = make_expense_claim(payable_account, 300, 200, company_name, "Travel Expenses - _TC3",
|
||||||
do_not_submit=True, taxes=taxes)
|
do_not_submit=True, taxes=taxes)
|
||||||
expense_claim.submit()
|
expense_claim.submit()
|
||||||
|
|
||||||
@@ -84,9 +86,9 @@ class TestExpenseClaim(unittest.TestCase):
|
|||||||
self.assertTrue(gl_entries)
|
self.assertTrue(gl_entries)
|
||||||
|
|
||||||
expected_values = dict((d[0], d) for d in [
|
expected_values = dict((d[0], d) for d in [
|
||||||
['Output Tax CGST - _TC4',18.0, 0.0],
|
['Output Tax CGST - _TC3',18.0, 0.0],
|
||||||
[payable_account, 0.0, 218.0],
|
[payable_account, 0.0, 218.0],
|
||||||
["Travel Expenses - _TC4", 200.0, 0.0]
|
["Travel Expenses - _TC3", 200.0, 0.0]
|
||||||
])
|
])
|
||||||
|
|
||||||
for gle in gl_entries:
|
for gle in gl_entries:
|
||||||
@@ -102,7 +104,7 @@ class TestExpenseClaim(unittest.TestCase):
|
|||||||
"payable_account": payable_account,
|
"payable_account": payable_account,
|
||||||
"approval_status": "Rejected",
|
"approval_status": "Rejected",
|
||||||
"expenses":
|
"expenses":
|
||||||
[{ "expense_type": "Travel", "default_account": "Travel Expenses - _TC4", "amount": 300, "sanctioned_amount": 200 }]
|
[{"expense_type": "Travel", "default_account": "Travel Expenses - _TC3", "amount": 300, "sanctioned_amount": 200}]
|
||||||
})
|
})
|
||||||
expense_claim.submit()
|
expense_claim.submit()
|
||||||
|
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
[]
|
|
||||||
@@ -5,6 +5,7 @@ import frappe
|
|||||||
from frappe.utils import add_days, add_months, getdate, nowdate
|
from frappe.utils import add_days, add_months, getdate, nowdate
|
||||||
|
|
||||||
import erpnext
|
import erpnext
|
||||||
|
from erpnext.hr.doctype.employee.test_employee import make_employee
|
||||||
from erpnext.hr.doctype.leave_ledger_entry.leave_ledger_entry import process_expired_allocation
|
from erpnext.hr.doctype.leave_ledger_entry.leave_ledger_entry import process_expired_allocation
|
||||||
from erpnext.hr.doctype.leave_type.test_leave_type import create_leave_type
|
from erpnext.hr.doctype.leave_type.test_leave_type import create_leave_type
|
||||||
|
|
||||||
@@ -14,16 +15,19 @@ class TestLeaveAllocation(unittest.TestCase):
|
|||||||
def setUpClass(cls):
|
def setUpClass(cls):
|
||||||
frappe.db.sql("delete from `tabLeave Period`")
|
frappe.db.sql("delete from `tabLeave Period`")
|
||||||
|
|
||||||
def test_overlapping_allocation(self):
|
emp_id = make_employee("test_emp_leave_allocation@salary.com")
|
||||||
frappe.db.sql("delete from `tabLeave Allocation`")
|
cls.employee = frappe.get_doc("Employee", emp_id)
|
||||||
|
|
||||||
employee = frappe.get_doc("Employee", frappe.db.sql_list("select name from tabEmployee limit 1")[0])
|
def tearDown(self):
|
||||||
|
frappe.db.rollback()
|
||||||
|
|
||||||
|
def test_overlapping_allocation(self):
|
||||||
leaves = [
|
leaves = [
|
||||||
{
|
{
|
||||||
"doctype": "Leave Allocation",
|
"doctype": "Leave Allocation",
|
||||||
"__islocal": 1,
|
"__islocal": 1,
|
||||||
"employee": employee.name,
|
"employee": self.employee.name,
|
||||||
"employee_name": employee.employee_name,
|
"employee_name": self.employee.employee_name,
|
||||||
"leave_type": "_Test Leave Type",
|
"leave_type": "_Test Leave Type",
|
||||||
"from_date": getdate("2015-10-01"),
|
"from_date": getdate("2015-10-01"),
|
||||||
"to_date": getdate("2015-10-31"),
|
"to_date": getdate("2015-10-31"),
|
||||||
@@ -33,8 +37,8 @@ class TestLeaveAllocation(unittest.TestCase):
|
|||||||
{
|
{
|
||||||
"doctype": "Leave Allocation",
|
"doctype": "Leave Allocation",
|
||||||
"__islocal": 1,
|
"__islocal": 1,
|
||||||
"employee": employee.name,
|
"employee": self.employee.name,
|
||||||
"employee_name": employee.employee_name,
|
"employee_name": self.employee.employee_name,
|
||||||
"leave_type": "_Test Leave Type",
|
"leave_type": "_Test Leave Type",
|
||||||
"from_date": getdate("2015-09-01"),
|
"from_date": getdate("2015-09-01"),
|
||||||
"to_date": getdate("2015-11-30"),
|
"to_date": getdate("2015-11-30"),
|
||||||
@@ -46,40 +50,36 @@ class TestLeaveAllocation(unittest.TestCase):
|
|||||||
self.assertRaises(frappe.ValidationError, frappe.get_doc(leaves[1]).save)
|
self.assertRaises(frappe.ValidationError, frappe.get_doc(leaves[1]).save)
|
||||||
|
|
||||||
def test_invalid_period(self):
|
def test_invalid_period(self):
|
||||||
employee = frappe.get_doc("Employee", frappe.db.sql_list("select name from tabEmployee limit 1")[0])
|
|
||||||
|
|
||||||
doc = frappe.get_doc({
|
doc = frappe.get_doc({
|
||||||
"doctype": "Leave Allocation",
|
"doctype": "Leave Allocation",
|
||||||
"__islocal": 1,
|
"__islocal": 1,
|
||||||
"employee": employee.name,
|
"employee": self.employee.name,
|
||||||
"employee_name": employee.employee_name,
|
"employee_name": self.employee.employee_name,
|
||||||
"leave_type": "_Test Leave Type",
|
"leave_type": "_Test Leave Type",
|
||||||
"from_date": getdate("2015-09-30"),
|
"from_date": getdate("2015-09-30"),
|
||||||
"to_date": getdate("2015-09-1"),
|
"to_date": getdate("2015-09-1"),
|
||||||
"new_leaves_allocated": 5
|
"new_leaves_allocated": 5
|
||||||
})
|
})
|
||||||
|
|
||||||
#invalid period
|
# invalid period
|
||||||
self.assertRaises(frappe.ValidationError, doc.save)
|
self.assertRaises(frappe.ValidationError, doc.save)
|
||||||
|
|
||||||
def test_allocated_leave_days_over_period(self):
|
def test_allocated_leave_days_over_period(self):
|
||||||
employee = frappe.get_doc("Employee", frappe.db.sql_list("select name from tabEmployee limit 1")[0])
|
|
||||||
doc = frappe.get_doc({
|
doc = frappe.get_doc({
|
||||||
"doctype": "Leave Allocation",
|
"doctype": "Leave Allocation",
|
||||||
"__islocal": 1,
|
"__islocal": 1,
|
||||||
"employee": employee.name,
|
"employee": self.employee.name,
|
||||||
"employee_name": employee.employee_name,
|
"employee_name": self.employee.employee_name,
|
||||||
"leave_type": "_Test Leave Type",
|
"leave_type": "_Test Leave Type",
|
||||||
"from_date": getdate("2015-09-1"),
|
"from_date": getdate("2015-09-1"),
|
||||||
"to_date": getdate("2015-09-30"),
|
"to_date": getdate("2015-09-30"),
|
||||||
"new_leaves_allocated": 35
|
"new_leaves_allocated": 35
|
||||||
})
|
})
|
||||||
#allocated leave more than period
|
|
||||||
|
# allocated leave more than period
|
||||||
self.assertRaises(frappe.ValidationError, doc.save)
|
self.assertRaises(frappe.ValidationError, doc.save)
|
||||||
|
|
||||||
def test_carry_forward_calculation(self):
|
def test_carry_forward_calculation(self):
|
||||||
frappe.db.sql("delete from `tabLeave Allocation`")
|
|
||||||
frappe.db.sql("delete from `tabLeave Ledger Entry`")
|
|
||||||
leave_type = create_leave_type(leave_type_name="_Test_CF_leave", is_carry_forward=1)
|
leave_type = create_leave_type(leave_type_name="_Test_CF_leave", is_carry_forward=1)
|
||||||
leave_type.maximum_carry_forwarded_leaves = 10
|
leave_type.maximum_carry_forwarded_leaves = 10
|
||||||
leave_type.max_leaves_allowed = 30
|
leave_type.max_leaves_allowed = 30
|
||||||
@@ -87,6 +87,8 @@ class TestLeaveAllocation(unittest.TestCase):
|
|||||||
|
|
||||||
# initial leave allocation = 15
|
# initial leave allocation = 15
|
||||||
leave_allocation = create_leave_allocation(
|
leave_allocation = create_leave_allocation(
|
||||||
|
employee=self.employee.name,
|
||||||
|
employee_name=self.employee.employee_name,
|
||||||
leave_type="_Test_CF_leave",
|
leave_type="_Test_CF_leave",
|
||||||
from_date=add_months(nowdate(), -12),
|
from_date=add_months(nowdate(), -12),
|
||||||
to_date=add_months(nowdate(), -1),
|
to_date=add_months(nowdate(), -1),
|
||||||
@@ -96,6 +98,8 @@ class TestLeaveAllocation(unittest.TestCase):
|
|||||||
# carry forwarded leaves considering maximum_carry_forwarded_leaves
|
# carry forwarded leaves considering maximum_carry_forwarded_leaves
|
||||||
# new_leaves = 15, carry_forwarded = 10
|
# new_leaves = 15, carry_forwarded = 10
|
||||||
leave_allocation_1 = create_leave_allocation(
|
leave_allocation_1 = create_leave_allocation(
|
||||||
|
employee=self.employee.name,
|
||||||
|
employee_name=self.employee.employee_name,
|
||||||
leave_type="_Test_CF_leave",
|
leave_type="_Test_CF_leave",
|
||||||
carry_forward=1)
|
carry_forward=1)
|
||||||
leave_allocation_1.submit()
|
leave_allocation_1.submit()
|
||||||
@@ -107,6 +111,8 @@ class TestLeaveAllocation(unittest.TestCase):
|
|||||||
# carry forwarded leaves considering max_leave_allowed
|
# carry forwarded leaves considering max_leave_allowed
|
||||||
# max_leave_allowed = 30, new_leaves = 25, carry_forwarded = 5
|
# max_leave_allowed = 30, new_leaves = 25, carry_forwarded = 5
|
||||||
leave_allocation_2 = create_leave_allocation(
|
leave_allocation_2 = create_leave_allocation(
|
||||||
|
employee=self.employee.name,
|
||||||
|
employee_name=self.employee.employee_name,
|
||||||
leave_type="_Test_CF_leave",
|
leave_type="_Test_CF_leave",
|
||||||
carry_forward=1,
|
carry_forward=1,
|
||||||
new_leaves_allocated=25)
|
new_leaves_allocated=25)
|
||||||
@@ -115,8 +121,6 @@ class TestLeaveAllocation(unittest.TestCase):
|
|||||||
self.assertEqual(leave_allocation_2.unused_leaves, 5)
|
self.assertEqual(leave_allocation_2.unused_leaves, 5)
|
||||||
|
|
||||||
def test_carry_forward_leaves_expiry(self):
|
def test_carry_forward_leaves_expiry(self):
|
||||||
frappe.db.sql("delete from `tabLeave Allocation`")
|
|
||||||
frappe.db.sql("delete from `tabLeave Ledger Entry`")
|
|
||||||
leave_type = create_leave_type(
|
leave_type = create_leave_type(
|
||||||
leave_type_name="_Test_CF_leave_expiry",
|
leave_type_name="_Test_CF_leave_expiry",
|
||||||
is_carry_forward=1,
|
is_carry_forward=1,
|
||||||
@@ -125,6 +129,8 @@ class TestLeaveAllocation(unittest.TestCase):
|
|||||||
|
|
||||||
# initial leave allocation
|
# initial leave allocation
|
||||||
leave_allocation = create_leave_allocation(
|
leave_allocation = create_leave_allocation(
|
||||||
|
employee=self.employee.name,
|
||||||
|
employee_name=self.employee.employee_name,
|
||||||
leave_type="_Test_CF_leave_expiry",
|
leave_type="_Test_CF_leave_expiry",
|
||||||
from_date=add_months(nowdate(), -24),
|
from_date=add_months(nowdate(), -24),
|
||||||
to_date=add_months(nowdate(), -12),
|
to_date=add_months(nowdate(), -12),
|
||||||
@@ -132,6 +138,8 @@ class TestLeaveAllocation(unittest.TestCase):
|
|||||||
leave_allocation.submit()
|
leave_allocation.submit()
|
||||||
|
|
||||||
leave_allocation = create_leave_allocation(
|
leave_allocation = create_leave_allocation(
|
||||||
|
employee=self.employee.name,
|
||||||
|
employee_name=self.employee.employee_name,
|
||||||
leave_type="_Test_CF_leave_expiry",
|
leave_type="_Test_CF_leave_expiry",
|
||||||
from_date=add_days(nowdate(), -90),
|
from_date=add_days(nowdate(), -90),
|
||||||
to_date=add_days(nowdate(), 100),
|
to_date=add_days(nowdate(), 100),
|
||||||
@@ -143,6 +151,8 @@ class TestLeaveAllocation(unittest.TestCase):
|
|||||||
|
|
||||||
# leave allocation with carry forward of only new leaves allocated
|
# leave allocation with carry forward of only new leaves allocated
|
||||||
leave_allocation_1 = create_leave_allocation(
|
leave_allocation_1 = create_leave_allocation(
|
||||||
|
employee=self.employee.name,
|
||||||
|
employee_name=self.employee.employee_name,
|
||||||
leave_type="_Test_CF_leave_expiry",
|
leave_type="_Test_CF_leave_expiry",
|
||||||
carry_forward=1,
|
carry_forward=1,
|
||||||
from_date=add_months(nowdate(), 6),
|
from_date=add_months(nowdate(), 6),
|
||||||
@@ -152,9 +162,10 @@ class TestLeaveAllocation(unittest.TestCase):
|
|||||||
self.assertEqual(leave_allocation_1.unused_leaves, leave_allocation.new_leaves_allocated)
|
self.assertEqual(leave_allocation_1.unused_leaves, leave_allocation.new_leaves_allocated)
|
||||||
|
|
||||||
def test_creation_of_leave_ledger_entry_on_submit(self):
|
def test_creation_of_leave_ledger_entry_on_submit(self):
|
||||||
frappe.db.sql("delete from `tabLeave Allocation`")
|
leave_allocation = create_leave_allocation(
|
||||||
|
employee=self.employee.name,
|
||||||
leave_allocation = create_leave_allocation()
|
employee_name=self.employee.employee_name
|
||||||
|
)
|
||||||
leave_allocation.submit()
|
leave_allocation.submit()
|
||||||
|
|
||||||
leave_ledger_entry = frappe.get_all('Leave Ledger Entry', fields='*', filters=dict(transaction_name=leave_allocation.name))
|
leave_ledger_entry = frappe.get_all('Leave Ledger Entry', fields='*', filters=dict(transaction_name=leave_allocation.name))
|
||||||
@@ -169,10 +180,10 @@ class TestLeaveAllocation(unittest.TestCase):
|
|||||||
self.assertFalse(frappe.db.exists("Leave Ledger Entry", {'transaction_name':leave_allocation.name}))
|
self.assertFalse(frappe.db.exists("Leave Ledger Entry", {'transaction_name':leave_allocation.name}))
|
||||||
|
|
||||||
def test_leave_addition_after_submit(self):
|
def test_leave_addition_after_submit(self):
|
||||||
frappe.db.sql("delete from `tabLeave Allocation`")
|
leave_allocation = create_leave_allocation(
|
||||||
frappe.db.sql("delete from `tabLeave Ledger Entry`")
|
employee=self.employee.name,
|
||||||
|
employee_name=self.employee.employee_name
|
||||||
leave_allocation = create_leave_allocation()
|
)
|
||||||
leave_allocation.submit()
|
leave_allocation.submit()
|
||||||
self.assertTrue(leave_allocation.total_leaves_allocated, 15)
|
self.assertTrue(leave_allocation.total_leaves_allocated, 15)
|
||||||
leave_allocation.new_leaves_allocated = 40
|
leave_allocation.new_leaves_allocated = 40
|
||||||
@@ -180,44 +191,55 @@ class TestLeaveAllocation(unittest.TestCase):
|
|||||||
self.assertTrue(leave_allocation.total_leaves_allocated, 40)
|
self.assertTrue(leave_allocation.total_leaves_allocated, 40)
|
||||||
|
|
||||||
def test_leave_subtraction_after_submit(self):
|
def test_leave_subtraction_after_submit(self):
|
||||||
frappe.db.sql("delete from `tabLeave Allocation`")
|
leave_allocation = create_leave_allocation(
|
||||||
frappe.db.sql("delete from `tabLeave Ledger Entry`")
|
employee=self.employee.name,
|
||||||
leave_allocation = create_leave_allocation()
|
employee_name=self.employee.employee_name
|
||||||
|
)
|
||||||
leave_allocation.submit()
|
leave_allocation.submit()
|
||||||
self.assertTrue(leave_allocation.total_leaves_allocated, 15)
|
self.assertTrue(leave_allocation.total_leaves_allocated, 15)
|
||||||
leave_allocation.new_leaves_allocated = 10
|
leave_allocation.new_leaves_allocated = 10
|
||||||
leave_allocation.submit()
|
leave_allocation.submit()
|
||||||
self.assertTrue(leave_allocation.total_leaves_allocated, 10)
|
self.assertTrue(leave_allocation.total_leaves_allocated, 10)
|
||||||
|
|
||||||
def test_against_leave_application_validation_after_submit(self):
|
def test_validation_against_leave_application_after_submit(self):
|
||||||
frappe.db.sql("delete from `tabLeave Allocation`")
|
from erpnext.payroll.doctype.salary_slip.test_salary_slip import make_holiday_list
|
||||||
frappe.db.sql("delete from `tabLeave Ledger Entry`")
|
|
||||||
|
|
||||||
leave_allocation = create_leave_allocation()
|
make_holiday_list()
|
||||||
|
frappe.db.set_value("Company", self.employee.company, "default_holiday_list", "Salary Slip Test Holiday List")
|
||||||
|
|
||||||
|
leave_allocation = create_leave_allocation(
|
||||||
|
employee=self.employee.name,
|
||||||
|
employee_name=self.employee.employee_name
|
||||||
|
)
|
||||||
leave_allocation.submit()
|
leave_allocation.submit()
|
||||||
self.assertTrue(leave_allocation.total_leaves_allocated, 15)
|
self.assertTrue(leave_allocation.total_leaves_allocated, 15)
|
||||||
employee = frappe.get_doc("Employee", frappe.db.sql_list("select name from tabEmployee limit 1")[0])
|
|
||||||
leave_application = frappe.get_doc({
|
leave_application = frappe.get_doc({
|
||||||
"doctype": 'Leave Application',
|
"doctype": 'Leave Application',
|
||||||
"employee": employee.name,
|
"employee": self.employee.name,
|
||||||
"leave_type": "_Test Leave Type",
|
"leave_type": "_Test Leave Type",
|
||||||
"from_date": add_months(nowdate(), 2),
|
"from_date": add_months(nowdate(), 2),
|
||||||
"to_date": add_months(add_days(nowdate(), 10), 2),
|
"to_date": add_months(add_days(nowdate(), 10), 2),
|
||||||
"company": erpnext.get_default_company() or "_Test Company",
|
"company": self.employee.company,
|
||||||
"docstatus": 1,
|
"docstatus": 1,
|
||||||
"status": "Approved",
|
"status": "Approved",
|
||||||
"leave_approver": 'test@example.com'
|
"leave_approver": 'test@example.com'
|
||||||
})
|
})
|
||||||
leave_application.submit()
|
leave_application.submit()
|
||||||
leave_allocation.new_leaves_allocated = 8
|
leave_application.reload()
|
||||||
leave_allocation.total_leaves_allocated = 8
|
|
||||||
|
# allocate less leaves than the ones which are already approved
|
||||||
|
leave_allocation.new_leaves_allocated = leave_application.total_leave_days - 1
|
||||||
|
leave_allocation.total_leaves_allocated = leave_application.total_leave_days - 1
|
||||||
self.assertRaises(frappe.ValidationError, leave_allocation.submit)
|
self.assertRaises(frappe.ValidationError, leave_allocation.submit)
|
||||||
|
|
||||||
def create_leave_allocation(**args):
|
def create_leave_allocation(**args):
|
||||||
args = frappe._dict(args)
|
args = frappe._dict(args)
|
||||||
|
|
||||||
employee = frappe.get_doc("Employee", frappe.db.sql_list("select name from tabEmployee limit 1")[0])
|
emp_id = make_employee("test_emp_leave_allocation@salary.com")
|
||||||
leave_allocation = frappe.get_doc({
|
employee = frappe.get_doc("Employee", emp_id)
|
||||||
|
|
||||||
|
return frappe.get_doc({
|
||||||
"doctype": "Leave Allocation",
|
"doctype": "Leave Allocation",
|
||||||
"__islocal": 1,
|
"__islocal": 1,
|
||||||
"employee": args.employee or employee.name,
|
"employee": args.employee or employee.name,
|
||||||
@@ -228,6 +250,5 @@ def create_leave_allocation(**args):
|
|||||||
"carry_forward": args.carry_forward or 0,
|
"carry_forward": args.carry_forward or 0,
|
||||||
"to_date": args.to_date or add_months(nowdate(), 12)
|
"to_date": args.to_date or add_months(nowdate(), 12)
|
||||||
})
|
})
|
||||||
return leave_allocation
|
|
||||||
|
|
||||||
test_dependencies = ["Employee", "Leave Type"]
|
test_dependencies = ["Employee", "Leave Type"]
|
||||||
|
|||||||
Reference in New Issue
Block a user