tictac/itis_hr_leave_extend/tests/test_hr_leave_extend.py

169 lines
7.2 KiB
Python

# -*- coding: utf-8 -*-
from openerp.tests.common import TransactionCase
from datetime import datetime
from dateutil.relativedelta import relativedelta
from openerp.osv.orm import except_orm
import logging
_logger = logging.getLogger(__name__)
class TestHrLeave(TransactionCase):
def setUp(self):
super(TestHrLeave, self).setUp()
cr, uid = self.cr, self.uid
# Find Employee group
group_employee_ref = self.registry('ir.model.data').get_object_reference(cr, uid, 'base', 'group_user')
self.group_employee_id = group_employee_ref and group_employee_ref[1] or False
# Find Hr User group
group_hr_user_ref = self.registry('ir.model.data').get_object_reference(cr, uid, 'base', 'group_hr_user')
self.group_hr_user_ref_id = group_hr_user_ref and group_hr_user_ref[1] or False
# Find Hr Manager group
group_hr_manager_ref = self.registry('ir.model.data').get_object_reference(cr, uid, 'base', 'group_hr_manager')
self.group_hr_manager_ref_id = group_hr_manager_ref and group_hr_manager_ref[1] or False
self.test_hrmanager_user = self.env['res.users'].create({
'name': 'Bastien HrManager',
'login': 'bastien',
'alias_name': 'bastien',
'email': 'bastien.hrmanager@example.com',
'groups_id': [(6, 0, [self.group_employee_id, self.group_hr_manager_ref_id])]
})
self.test_hrmanager_employee = self.env['hr.employee'].create({
'name': 'Hr Manager Test',
'user_id':self.test_hrmanager_user.id,
})
self.test_user = self.env['res.users'].create({
'name': 'Agrolait Test User',
'login': 'user',
'email': 'hro@example.com',
'signature': '--\nAgr',
'groups_id': [(6, 0, [self.group_employee_id])]
})
self.test_employee = self.env['hr.employee'].create({
'name': 'Agrolait Test Emp',
'user_id':self.test_user.id,
'parent_id':self.test_hrmanager_employee.id,
})
working_hours = self.env["resource.calendar"].search([('name','=','45 Hours/Week')])
struct_id = self.env["hr.payroll.structure"].search([])
today_date = datetime.now().date()
test_contract = self.env['hr.contract'].create({
'name':'test employee contract',
'employee_id':self.test_employee.id,
'struct_id':struct_id[0].id,
'wage':100,
'date_start':str(today_date.replace(month=01,day=01)),
'date_end':str(today_date.replace(month=12,day=01)),
'working_hours':working_hours.id,
})
def test_fillup_sick_leave(self):
"""test case to test the sick leave fill up functionality"""
hr_sick_leave = self.env["hr.sick.leave"]
hr_analytic_timesheet =self.env['hr.analytic.timesheet']
today_date = datetime.now().date()
end_date = today_date+relativedelta(days=1)
hr_sick_leave_rec = hr_sick_leave.create({
'start_date':today_date,
'end_date':end_date,
})
hr_sick_leave_rec.with_context(active_ids = [self.test_employee.id]).confirm_sick_time()
leave_record = hr_analytic_timesheet.search([('date','>=',today_date),('date','<=',end_date),('user_id','<=',self.test_user.id)])
print"leave_record------",leave_record
if leave_record:
_logger.info('-----Sick leave is created.')
else:
self.assertEqual(1,2,'Sick leave is not created.')
def test_create_timesheet(self):
"""test case to test creation of timesheet and planned,fillup hours,closed timesheet"""
account_journal = self.env['account.analytic.journal'].search([])
account_analytic = self.env['account.analytic.account'].search([('use_timesheets','=',True),('type','=','contract')])
timesheet_sheet = self.env['hr_timesheet_sheet.sheet'].create({
'date_from': str(datetime.today()),
'date_to': str(datetime.today()),
'name': 'Agrolait Test',
'state': 'new',
'user_id': self.test_user.id,
'employee_id': self.test_employee.id,
'timesheet_ids': [(0, 0, {
'date': str(datetime.today()),
'name': 'Develop yaml for hr module(1)',
'user_id': self.test_user.id,
'unit_amount': 8.00,
'journal_id':account_journal[0].id,
'account_id':account_analytic[0].id,
})]})
try:
timesheet_sheet.action_timesheet_confirm()
except Exception:
pass
print"Planned hour--------",timesheet_sheet.total_contract_time
print"total_timesheet-11-------",timesheet_sheet.total_timesheet
print"actual_ot-11-------",timesheet_sheet.actual_ot
print"time_diff-11-------",timesheet_sheet.time_diff
self.assertEqual(timesheet_sheet.actual_ot,timesheet_sheet.time_diff,'Total overtime hour need to be equal.')
try:
timesheet_sheet.button_confirm()
except Exception:
pass
self.assertEqual(timesheet_sheet.actual_ot,timesheet_sheet.time_diff,'Total overtime hour need to be equal.')
def test_create_half_day_leave(self):
"""test half day leave test cases"""
hr_holidays = self.registry('hr.holidays')
holidays_status_1 = self.env["hr.holidays.status"].create({
'name': 'NotLimited',
'limit': True,
})
date_from = datetime.today() + relativedelta(days=2)
date_end = datetime.today() + relativedelta(days=2)
timesheet_rec = self.env['hr_timesheet_sheet.sheet'].create({
'date_from': str(date_from),
'date_to': str(date_end),
'name': 'Agrolait Test',
'state': 'new',
'user_id': self.test_user.id,
'employee_id': self.test_employee.id,
})
holiday_id = hr_holidays.create(self.cr, self.test_hrmanager_user.id,{
'name': 'Holiday1',
'employee_id': self.test_employee.id,
'holiday_status_id': holidays_status_1.id,
'date_from': str(date_from),
'date_to': str(date_end),
'leave_selection':'half_day',
'half_day_type':'morning',
'number_of_days_temp':0.5
})
holiday_rec = hr_holidays.browse(self.cr, self.test_hrmanager_user.id, holiday_id)
self.assertEqual(holiday_rec.state, 'confirm', 'hr_holidays: newly created leave request should be in confirm state')
self.assertEqual(holiday_rec.number_of_days_temp, 0.5, 'hr_holidays: Half day leave request need to shaw day as 0.5')
hr_holidays.signal_workflow(self.cr, self.test_hrmanager_user.id, [holiday_id], 'validate')
self.assertEqual(holiday_rec.state, 'validate', 'hr_holidays: validates leave request should be in validate state')
leave_record = self.env['hr.analytic.timesheet'].search([('date','>=',date_from),('date','<=',date_end),('user_id','<=',self.test_user.id)])
if leave_record:
_logger.info('-----Half Day leave is created.')
else:
self.assertEqual(1,2,'Half Day leave is not created.')