Files
tradon/tests/test_model_log.py
2025-12-26 13:11:43 +00:00

251 lines
8.1 KiB
Python
Executable File

# This file is part of Tryton. The COPYRIGHT file at the top level of this
# repository contains the full copyright notices and license terms.
import unittest
from trytond.pool import Pool
from trytond.transaction import Transaction
from .test_tryton import activate_module, with_transaction
class ModelLogTestCase(unittest.TestCase):
"Test Model Log"
@classmethod
def setUpClass(cls):
activate_module('tests')
@with_transaction()
def test_log(self):
"Test model log"
pool = Pool()
Model = pool.get('test.model_log.model')
Log = pool.get('ir.model.log')
transaction = Transaction()
record, = Model.create([{}])
Model.log([record], 'delete', user=0)
transaction._store_log_records()
log, = Log.search([('resource', '=', str(record))])
self.assertEqual(log.user.id, 0)
self.assertEqual(log.event, 'delete')
@with_transaction()
def test_log_no_log(self):
"Test no model log without _log"
pool = Pool()
Model = pool.get('test.model_log.model')
Log = pool.get('ir.model.log')
transaction = Transaction()
self.addCleanup(setattr, Model, '_log', Model._log)
Model._log = False
record, = Model.create([{}])
Model.log([record], 'delete')
transaction._store_log_records()
logs = Log.search([('resource', '=', str(record))])
self.assertEqual(logs, [])
@with_transaction(context={'_check_access': True})
def test_create(self):
"Test no model log on create"
pool = Pool()
Model = pool.get('test.model_log.model')
Log = pool.get('ir.model.log')
transaction = Transaction()
record, = Model.create([{}])
transaction._store_log_records()
logs = Log.search([('resource', '=', str(record))])
self.assertEqual(logs, [])
@with_transaction(context={'_check_access': True})
def test_write(self):
"Test model log on write"
pool = Pool()
Model = pool.get('test.model_log.model')
Log = pool.get('ir.model.log')
transaction = Transaction()
record, = Model.create([{}])
Model.write([record], {'name': "Foo", 'state': 'end'})
transaction._store_log_records()
log, = Log.search([('resource', '=', str(record))])
self.assertEqual(log.user.id, 1)
self.assertEqual(log.event, 'write')
self.assertEqual(log.target, 'name,state')
@with_transaction(context={'_check_access': True})
def test_write_empty(self):
"Test no model log on empty write"
pool = Pool()
Model = pool.get('test.model_log.model')
Log = pool.get('ir.model.log')
transaction = Transaction()
record, = Model.create([{}])
Model.write([record], {})
transaction._store_log_records()
logs = Log.search([('resource', '=', str(record))])
self.assertEqual(logs, [])
@with_transaction(context={'_check_access': False})
def test_write_no_check_access(self):
"Test no model log on write without check access"
pool = Pool()
Model = pool.get('test.model_log.model')
Log = pool.get('ir.model.log')
transaction = Transaction()
record, = Model.create([{}])
Model.write([record], {'name': "Foo", 'state': 'end'})
transaction._store_log_records()
logs = Log.search([('resource', '=', str(record))])
self.assertEqual(logs, [])
@with_transaction(context={'_check_access': True})
def test_delete(self):
"Test model log on delete"
pool = Pool()
Model = pool.get('test.model_log.model')
Log = pool.get('ir.model.log')
transaction = Transaction()
record, = Model.create([{}])
Model.delete([record])
transaction._store_log_records()
log, = Log.search([('resource', '=', str(record))])
self.assertEqual(log.event, 'delete')
@with_transaction(context={'_check_access': False})
def test_delete_no_check_access(self):
"Test no model log on delete without check access"
pool = Pool()
Model = pool.get('test.model_log.model')
Log = pool.get('ir.model.log')
transaction = Transaction()
record, = Model.create([{}])
Model.delete([record])
transaction._store_log_records()
logs = Log.search([('resource', '=', str(record))])
self.assertEqual(logs, [])
@with_transaction(context={'_check_access': True})
def test_button(self):
"Test model log on button"
pool = Pool()
Model = pool.get('test.model_log.model')
Log = pool.get('ir.model.log')
transaction = Transaction()
record, = Model.create([{}])
Model.click([record])
transaction._store_log_records()
log, = Log.search([('resource', '=', str(record))])
self.assertEqual(log.user.id, 1)
self.assertEqual(log.event, 'button')
self.assertEqual(log.target, 'click')
@with_transaction(context={'_check_access': False})
def test_button_no_check_access(self):
"Test model log on button"
pool = Pool()
Model = pool.get('test.model_log.model')
Log = pool.get('ir.model.log')
transaction = Transaction()
record, = Model.create([{}])
Model.click([record])
transaction._store_log_records()
logs = Log.search([('resource', '=', str(record))])
self.assertEqual(logs, [])
@with_transaction()
def test_wizard(self):
"Test model log on wizard"
pool = Pool()
Model = pool.get('test.model_log.model')
Wizard = pool.get('test.model_log.wizard', type='wizard')
Log = pool.get('ir.model.log')
transaction = Transaction()
record, = Model.create([{}])
with transaction.set_context(
active_model=Model.__name__,
active_id=record.id,
active_ids=[record.id]):
session_id, _, _ = Wizard.create()
Wizard.execute(session_id, {}, 'modification')
transaction._store_log_records()
log, = Log.search([('resource', '=', str(record))])
self.assertEqual(log.user.id, 1)
self.assertEqual(log.event, 'wizard')
self.assertEqual(log.target, 'test.model_log.wizard:modification')
@with_transaction()
def test_wizard_no_modification(self):
"Test no model log on wizard without modification"
pool = Pool()
Model = pool.get('test.model_log.model')
Wizard = pool.get('test.model_log.wizard', type='wizard')
Log = pool.get('ir.model.log')
transaction = Transaction()
record, = Model.create([{}])
with transaction.set_context(
active_model=Model.__name__,
active_id=record.id,
active_ids=[record.id]):
session_id, _, _ = Wizard.create()
Wizard.execute(session_id, {}, 'no_modification')
transaction._store_log_records()
logs = Log.search([('resource', '=', str(record))])
self.assertEqual(logs, [])
@with_transaction()
def test_worflow(self):
"Test model log on workflow transition"
pool = Pool()
Model = pool.get('test.model_log.model')
Log = pool.get('ir.model.log')
transaction = Transaction()
record, = Model.create([{}])
Model.end([record])
transaction._store_log_records()
log, = Log.search([('resource', '=', str(record))])
self.assertEqual(log.user.id, 1)
self.assertEqual(log.event, 'transition')
self.assertEqual(log.target, 'state:end')
@with_transaction()
def test_worflow_no_transition(self):
"Test no model log on workflow without transition"
pool = Pool()
Model = pool.get('test.model_log.model')
Log = pool.get('ir.model.log')
transaction = Transaction()
record, = Model.create([{'state': 'end'}])
Model.end([record])
transaction._store_log_records()
logs = Log.search([('resource', '=', str(record))])
self.assertEqual(logs, [])