test: fix attendance request tests
- Use `frappe.db.get_value` instead of `get_doc` for asserting values - Get values after cancellation as reloading attendance doc breaks due to stale doc (primary key changed after cancel of attendance request) - rollback everything on tearDown
This commit is contained in:
parent
c1c9c4b68e
commit
e5b0221693
@ -15,6 +15,9 @@ class TestAttendanceRequest(unittest.TestCase):
|
|||||||
for doctype in ["Attendance Request", "Attendance"]:
|
for doctype in ["Attendance Request", "Attendance"]:
|
||||||
frappe.db.sql("delete from `tab{doctype}`".format(doctype=doctype))
|
frappe.db.sql("delete from `tab{doctype}`".format(doctype=doctype))
|
||||||
|
|
||||||
|
def tearDown(self):
|
||||||
|
frappe.db.rollback()
|
||||||
|
|
||||||
def test_on_duty_attendance_request(self):
|
def test_on_duty_attendance_request(self):
|
||||||
today = nowdate()
|
today = nowdate()
|
||||||
employee = get_employee()
|
employee = get_employee()
|
||||||
@ -26,15 +29,33 @@ class TestAttendanceRequest(unittest.TestCase):
|
|||||||
attendance_request.company = "_Test Company"
|
attendance_request.company = "_Test Company"
|
||||||
attendance_request.insert()
|
attendance_request.insert()
|
||||||
attendance_request.submit()
|
attendance_request.submit()
|
||||||
attendance = frappe.get_doc('Attendance', {
|
|
||||||
'employee': employee.name,
|
attendance = frappe.db.get_value(
|
||||||
'attendance_date': date(date.today().year, 1, 1),
|
"Attendance",
|
||||||
'docstatus': 1
|
filters={
|
||||||
})
|
"attendance_request": attendance_request.name,
|
||||||
self.assertEqual(attendance.status, 'Present')
|
"attendance_date": date(date.today().year, 1, 1)
|
||||||
|
},
|
||||||
|
fieldname=["status", "docstatus"],
|
||||||
|
as_dict=True
|
||||||
|
)
|
||||||
|
self.assertEqual(attendance.status, "Present")
|
||||||
|
self.assertEqual(attendance.docstatus, 1)
|
||||||
|
|
||||||
|
# cancelling attendance request cancels linked attendances
|
||||||
attendance_request.cancel()
|
attendance_request.cancel()
|
||||||
attendance.reload()
|
|
||||||
self.assertEqual(attendance.docstatus, 2)
|
# cancellation alters docname
|
||||||
|
# fetch attendance value again to avoid stale docname
|
||||||
|
attendance_docstatus = frappe.db.get_value(
|
||||||
|
"Attendance",
|
||||||
|
filters={
|
||||||
|
"attendance_request": attendance_request.name,
|
||||||
|
"attendance_date": date(date.today().year, 1, 1)
|
||||||
|
},
|
||||||
|
fieldname="docstatus"
|
||||||
|
)
|
||||||
|
self.assertEqual(attendance_docstatus, 2)
|
||||||
|
|
||||||
def test_work_from_home_attendance_request(self):
|
def test_work_from_home_attendance_request(self):
|
||||||
today = nowdate()
|
today = nowdate()
|
||||||
@ -47,15 +68,30 @@ class TestAttendanceRequest(unittest.TestCase):
|
|||||||
attendance_request.company = "_Test Company"
|
attendance_request.company = "_Test Company"
|
||||||
attendance_request.insert()
|
attendance_request.insert()
|
||||||
attendance_request.submit()
|
attendance_request.submit()
|
||||||
attendance = frappe.get_doc('Attendance', {
|
|
||||||
'employee': employee.name,
|
attendance_status = frappe.db.get_value(
|
||||||
'attendance_date': date(date.today().year, 1, 1),
|
"Attendance",
|
||||||
'docstatus': 1
|
filters={
|
||||||
})
|
"attendance_request": attendance_request.name,
|
||||||
self.assertEqual(attendance.status, 'Work From Home')
|
"attendance_date": date(date.today().year, 1, 1)
|
||||||
|
},
|
||||||
|
fieldname="status"
|
||||||
|
)
|
||||||
|
self.assertEqual(attendance_status, 'Work From Home')
|
||||||
|
|
||||||
attendance_request.cancel()
|
attendance_request.cancel()
|
||||||
attendance.reload()
|
|
||||||
self.assertEqual(attendance.docstatus, 2)
|
# cancellation alters docname
|
||||||
|
# fetch attendance value again to avoid stale docname
|
||||||
|
attendance_docstatus = frappe.db.get_value(
|
||||||
|
"Attendance",
|
||||||
|
filters={
|
||||||
|
"attendance_request": attendance_request.name,
|
||||||
|
"attendance_date": date(date.today().year, 1, 1)
|
||||||
|
},
|
||||||
|
fieldname="docstatus"
|
||||||
|
)
|
||||||
|
self.assertEqual(attendance_docstatus, 2)
|
||||||
|
|
||||||
def get_employee():
|
def get_employee():
|
||||||
return frappe.get_doc("Employee", "_T-Employee-00001")
|
return frappe.get_doc("Employee", "_T-Employee-00001")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user