first commit
This commit is contained in:
94
modules/attendance/tests/scenario_attendance.rst
Normal file
94
modules/attendance/tests/scenario_attendance.rst
Normal file
@@ -0,0 +1,94 @@
|
||||
===================
|
||||
Attendance Scenario
|
||||
===================
|
||||
|
||||
Imports::
|
||||
|
||||
>>> import datetime as dt
|
||||
|
||||
>>> from dateutil.relativedelta import relativedelta
|
||||
|
||||
>>> from proteus import Model
|
||||
>>> from trytond.modules.company.tests.tools import create_company, get_company
|
||||
>>> from trytond.tests.tools import activate_modules, assertEqual, assertTrue
|
||||
|
||||
>>> now = dt.datetime.now()
|
||||
>>> tomorrow = now + relativedelta(days=1)
|
||||
>>> next_week = now + relativedelta(days=7)
|
||||
|
||||
Activate attendance.line module::
|
||||
|
||||
>>> config = activate_modules('attendance')
|
||||
|
||||
Create a company::
|
||||
|
||||
>>> _ = create_company()
|
||||
>>> company = get_company()
|
||||
|
||||
Create an employee::
|
||||
|
||||
>>> Party = Model.get('party.party')
|
||||
>>> Employee = Model.get('company.employee')
|
||||
>>> employee = Employee()
|
||||
>>> party = Party(name='Employee')
|
||||
>>> party.save()
|
||||
>>> employee.party = party
|
||||
>>> employee.company = company
|
||||
>>> employee.save()
|
||||
|
||||
Create an attendance record for the employee::
|
||||
|
||||
>>> Attendance = Model.get('attendance.line')
|
||||
>>> attendance = Attendance()
|
||||
>>> attendance.type
|
||||
'in'
|
||||
>>> attendance.employee = employee
|
||||
>>> attendance.at = now
|
||||
>>> attendance.save()
|
||||
|
||||
>>> assertEqual(attendance.date, now.date())
|
||||
>>> assertTrue(attendance.rec_name)
|
||||
|
||||
When creating a new attendance the type is automatically set::
|
||||
|
||||
>>> attendance = Attendance()
|
||||
>>> attendance.employee = employee
|
||||
>>> attendance.at = now + relativedelta(hours=2)
|
||||
>>> attendance.type
|
||||
'out'
|
||||
>>> attendance.save()
|
||||
|
||||
Close the period::
|
||||
|
||||
>>> Period = Model.get('attendance.period')
|
||||
>>> period = Period()
|
||||
>>> period.ends_at = now + relativedelta(hours=4)
|
||||
>>> period.click('close')
|
||||
>>> period.state
|
||||
'closed'
|
||||
|
||||
>>> bool(period.rec_name)
|
||||
True
|
||||
|
||||
You can't create attendances in closed periods::
|
||||
|
||||
>>> attendance = Attendance()
|
||||
>>> attendance.employee = employee
|
||||
>>> attendance.at = now
|
||||
>>> attendance.type = 'in'
|
||||
>>> attendance.save()
|
||||
Traceback (most recent call last):
|
||||
...
|
||||
PeriodClosedError: ...
|
||||
|
||||
But it is possible in open periods::
|
||||
|
||||
>>> attendance.at = tomorrow
|
||||
>>> attendance.save()
|
||||
|
||||
Update attendance date time, update its date::
|
||||
|
||||
>>> attendance.at = next_week
|
||||
>>> attendance.save()
|
||||
|
||||
>>> assertEqual(attendance.date, next_week.date())
|
||||
Reference in New Issue
Block a user