Public release from ruodoo-project: 19.0 - 2026-05-10 21:19:01 UTC
This commit is contained in:
2
mklab_dms_document/tests/__init__.py
Normal file
2
mklab_dms_document/tests/__init__.py
Normal file
@ -0,0 +1,2 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from . import test_dms_document
|
||||
114
mklab_dms_document/tests/test_dms_document.py
Normal file
114
mklab_dms_document/tests/test_dms_document.py
Normal file
@ -0,0 +1,114 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
Tests for mklab_dms_document — DMS document lifecycle, PDF creation,
|
||||
and template rendering.
|
||||
|
||||
Validates: Requirements 18.1, 18.2, 18.3, 18.4
|
||||
"""
|
||||
from odoo.tests.common import TransactionCase
|
||||
from odoo.exceptions import ValidationError, UserError
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Helpers
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
def _make_partner(env):
|
||||
"""Create a minimal company partner."""
|
||||
return env['res.partner'].create({
|
||||
'name': 'Test DMS Partner',
|
||||
'is_company': True,
|
||||
})
|
||||
|
||||
|
||||
def _make_document(env, partner, state='draft', text=None):
|
||||
"""Create a minimal dms.document record."""
|
||||
vals = {
|
||||
'type_document': 'incoming',
|
||||
'partner_id': partner.id,
|
||||
'name': 'TEST-DOC-001',
|
||||
'state': state,
|
||||
}
|
||||
if text is not None:
|
||||
vals['text'] = text
|
||||
return env['dms.document'].create(vals)
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# TestDmsDocument
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
class TestDmsDocument(TransactionCase):
|
||||
"""
|
||||
Tests for dms.document: unlink restrictions, create_pdf validation,
|
||||
and render_template output.
|
||||
|
||||
Validates: Requirements 18.1, 18.2, 18.3, 18.4
|
||||
"""
|
||||
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
self.partner = _make_partner(self.env)
|
||||
|
||||
# ------------------------------------------------------------------
|
||||
# Requirement 18.1 — unlink of a 'done' document raises ValidationError
|
||||
# ------------------------------------------------------------------
|
||||
|
||||
def test_unlink_done_raises(self):
|
||||
"""
|
||||
Req 18.1 — deleting a document in state 'done' must raise
|
||||
ValidationError.
|
||||
"""
|
||||
doc = _make_document(self.env, self.partner, state='done')
|
||||
with self.assertRaises(ValidationError):
|
||||
doc.unlink()
|
||||
|
||||
# ------------------------------------------------------------------
|
||||
# Requirement 18.2 — unlink of a draft document succeeds
|
||||
# ------------------------------------------------------------------
|
||||
|
||||
def test_unlink_draft_ok(self):
|
||||
"""
|
||||
Req 18.2 — deleting a document in state 'draft' must succeed
|
||||
without raising any exception.
|
||||
"""
|
||||
doc = _make_document(self.env, self.partner, state='draft')
|
||||
# Should not raise
|
||||
doc.unlink()
|
||||
|
||||
# ------------------------------------------------------------------
|
||||
# Requirement 18.3 — create_pdf without directory raises UserError
|
||||
# ------------------------------------------------------------------
|
||||
|
||||
def test_create_pdf_no_directory_raises(self):
|
||||
"""
|
||||
Req 18.3 — calling create_pdf on a document with no directory_id
|
||||
set must raise UserError.
|
||||
"""
|
||||
doc = _make_document(self.env, self.partner, state='draft')
|
||||
# Ensure no directory is set
|
||||
doc.directory_id = False
|
||||
with self.assertRaises(UserError):
|
||||
doc.create_pdf()
|
||||
|
||||
# ------------------------------------------------------------------
|
||||
# Requirement 18.4 — render_template with a simple template returns
|
||||
# a non-empty string
|
||||
# ------------------------------------------------------------------
|
||||
|
||||
def test_render_template_basic(self):
|
||||
"""
|
||||
Req 18.4 — render_template on a document with a simple Mako/Jinja2
|
||||
template must return a non-empty string.
|
||||
"""
|
||||
doc = _make_document(
|
||||
self.env,
|
||||
self.partner,
|
||||
state='draft',
|
||||
text='<p>Hello World</p>',
|
||||
)
|
||||
result = doc.render_template()
|
||||
self.assertTrue(
|
||||
result and len(result) > 0,
|
||||
"render_template should return a non-empty string for a simple template",
|
||||
)
|
||||
Reference in New Issue
Block a user