Files
enterprise-addons/ai_documents/tests/test_common.py
T

67 lines
2.6 KiB
Python

from odoo import Command
from odoo.addons.ai_fields.tools import ai_field_insert
from odoo.tests import TransactionCase, Form
class TestAiDocumentsCommon(TransactionCase):
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.user_internal = cls.env['res.users'].create({
'name': 'user_test',
'login': 'user_test',
'group_ids': [
Command.set(cls.env.ref('base.group_user').ids),
],
})
cls.ir_action_tools_childs = cls.env["ir.actions.server"].create([{
"model_id": cls.env["ir.model"]._get_id("documents.document"),
"state": "code",
"name": "Write Name",
"code": "record.write({'name': new_name})",
}, {
"model_id": cls.env["ir.model"]._get_id("documents.document"),
"state": "code",
"name": "Return Count",
"code": "ai['result'] = 'action return value'",
}])
cls.folder, cls.target_folder, cls.other_folder = cls.env['documents.document'].create([{
'name': 'Folder',
'type': 'folder',
}, {
'name': 'Target Folder',
'type': 'folder',
}, {
'name': 'Other Folder',
'type': 'folder',
}])
def setUp(self):
super().setUp()
# Test using both at the same type (to test "multi" type server actions)
self.ir_action_tool = self.env["ir.actions.server"].create({
"model_id": self.env["ir.model"]._get_id("documents.document"),
"state": "multi",
"name": "Rename and return count",
"use_in_ai": False, # Will be forced by the wizard
"child_ids": self.ir_action_tools_childs.ids,
})
# Configure the prompt using the wizard
Doc = self.env['documents.document']
sort_wizard = Form(self.env['ai_documents.sort'].with_context(default_folder_id=self.folder.id))
sort_wizard.ai_sort_prompt = f"Execute the action then move in {Doc._ai_folder_insert(self.target_folder.id)} here is the name {ai_field_insert('name', 'Name')}"
sort_wizard.ai_tool_ids.add(self.ir_action_tool)
sort_wizard.save().action_setup_folder()
self.env['base.automation']._unregister_hook()
self.env['base.automation']._register_hook()
def tearDown(self):
super().tearDown()
self.env['base.automation'].search([('ai_autosort_folder_id', '!=', False)]).unlink()
self.env['base.automation']._unregister_hook()
self.env['base.automation']._register_hook()