11# Copyright 2022-2024 Tecnativa - Víctor Martínez
22# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0
33
4- from datetime import datetime , timedelta
4+ from odoo import exceptions , fields
5+ from odoo .tests .common import users
56
6- from odoo import exceptions
7- from odoo .tests import new_test_user , users
7+ from odoo .addons .project_timesheet_time_control .tests import (
8+ test_project_timesheet_time_control ,
9+ )
810
9- from odoo .addons .base .tests .common import BaseCommon
1011
11-
12- class TestMaintenanceTimesheetTimeControl (BaseCommon ):
12+ class TestMaintenanceTimesheetTimeControl (
13+ test_project_timesheet_time_control .TestProjectTimesheetTimeControlBase
14+ ):
1315 @classmethod
1416 def setUpClass (cls ):
1517 super ().setUpClass ()
16- cls .user = new_test_user (
17- cls .env ,
18- login = "test-maintenance-user" ,
19- groups = "maintenance.group_equipment_manager,"
20- "hr_timesheet.group_hr_timesheet_user" ,
21- )
22- cls .user .action_create_employee ()
23- cls .project = cls .env ["project.project" ].create (
24- {"name" : "Test project" , "allow_timesheets" : True }
25- )
18+ cls .user .groups_id |= cls .env .ref ("maintenance.group_equipment_manager" )
2619 cls .category = cls .env ["maintenance.equipment.category" ].create (
2720 {"name" : "Test category" }
2821 )
@@ -35,62 +28,32 @@ def setUpClass(cls):
3528 "maintenance_team_id" : cls .team .id ,
3629 }
3730 )
38-
39- def _create_analytic_line (self , request ):
40- return self .env ["account.analytic.line" ].create (
41- {
42- "date_time" : datetime .now () - timedelta (hours = 1 ),
43- "maintenance_request_id" : request .id ,
44- "project_id" : request .project_id .id ,
45- "account_id" : request .project_id .analytic_account_id .id ,
46- "name" : "Test Maintenance Request Timesheet line" ,
47- "user_id" : self .env .user .id ,
48- }
49- )
50-
51- def _create_wizard (self , action , active_record ):
52- self .assertEqual (action ["res_model" ], "hr.timesheet.switch" )
53- self .assertEqual (action ["target" ], "new" )
54- self .assertEqual (action ["type" ], "ir.actions.act_window" )
55- self .assertEqual (action ["view_mode" ], "form" )
56- return (
57- active_record .env [action ["res_model" ]]
58- .with_context (
59- active_id = active_record .id ,
60- active_ids = active_record .ids ,
61- active_model = active_record ._name ,
62- ** action .get ("context" , {}),
63- )
64- .create ({})
31+ cls .request = cls .env ["maintenance.request" ].create (
32+ {"name" : "Test computer request" , "equipment_id" : cls .equipment .id }
6533 )
34+ cls .line .maintenance_request_id = cls .request
6635
67- @users ("test-maintenance- user" )
36+ @users ("test-user" )
6837 def test_maintenance_request_time_control_flow (self ):
69- request = self .env ["maintenance.request" ].create (
70- {"name" : "Test computer request" , "equipment_id" : self .equipment .id }
71- )
72- analytic_line = self ._create_analytic_line (request )
7338 # Running line found, stop the timer
74- self .assertEqual (request .show_time_control , "stop" )
75- request .button_end_work ()
76- # No more running lines, cannot stop again
39+ self .line .button_end_work ()
7740 with self .assertRaises (exceptions .UserError ):
78- request .button_end_work ()
41+ self . request .button_end_work ()
7942 # All lines stopped, start new one
80- self .assertEqual (request .show_time_control , "start" )
81- start_action = request .button_start_work ()
82- wizard = self ._create_wizard (start_action , request )
83- self .assertLessEqual (wizard .date_time , datetime .now ())
84- self .assertEqual (wizard .name , analytic_line .name )
85- self .assertEqual (wizard .project_id , request .project_id )
43+ self .assertEqual (self . request .show_time_control , "start" )
44+ start_action = self . request .button_start_work ()
45+ wizard = self ._create_wizard (start_action , self . line )
46+ self .assertLessEqual (wizard .date_time , fields . Datetime .now ())
47+ self .assertEqual (wizard .name , self . line .name )
48+ self .assertEqual (wizard .project_id , self . request .project_id )
8649 self .assertEqual (
87- wizard .analytic_line_id .account_id , request .project_id .analytic_account_id
50+ wizard .analytic_line_id .account_id , self . request .project_id .account_id
8851 )
89- self .assertEqual (wizard .analytic_line_id , analytic_line )
52+ self .assertEqual (wizard .analytic_line_id , self . line )
9053 new_act = wizard .with_context (show_created_timer = True ).action_switch ()
9154 new_line = self .env [new_act ["res_model" ]].browse (new_act ["res_id" ])
9255 self .assertEqual (new_line .employee_id , self .env .user .employee_id )
9356 self .assertEqual (new_line .project_id , self .project )
94- self .assertEqual (new_line .maintenance_request_id , request )
57+ self .assertEqual (new_line .maintenance_request_id , self . request )
9558 self .assertEqual (new_line .unit_amount , 0 )
96- self .assertTrue (analytic_line .unit_amount )
59+ self .assertTrue (self . line .unit_amount )
0 commit comments