[FIX] ir.qweb: update tests

This commit is contained in:
Christophe Matthieu
2016-06-14 13:12:15 +02:00
parent 48b4abedea
commit fc79a62609
4 changed files with 20 additions and 34 deletions
+6 -10
View File
@@ -6,7 +6,6 @@ from lxml import etree, html
from lxml.builder import E
from openerp.tests import common
from openerp.addons.base.ir.ir_qweb import QWebContext
from openerp.addons.web_editor.models.ir_qweb import html_to_text
@@ -118,9 +117,6 @@ class TestConvertBack(common.TransactionCase):
super(TestConvertBack, self).setUp()
self.env = self.env(context={'inherit_branding': True})
def qwebcontext(self, data):
return QWebContext(self.env, data)
def field_rountrip_result(self, field, value, expected):
model = 'web_editor.converter.test'
record = self.env[model].create({field: value})
@@ -131,11 +127,11 @@ class TestConvertBack(common.TransactionCase):
field_value = 'record.%s' % field
e.set('t-field', field_value)
qwebcontext = self.qwebcontext({'record': record})
rendered = self.env['ir.qweb'].compile(t)(qwebcontext)
rendered = self.env['ir.qweb'].render(t, {'record': record})
element = html.fromstring(rendered, parser=html.HTMLParser(encoding='utf-8'))
converter = self.env['ir.qweb'].get_field_for(element.get('data-oe-type'))
model = 'ir.qweb.field.' + element.get('data-oe-type', '')
converter = self.env[model] if model in self.env else self.env['ir.qweb.field']
value_back = converter.from_html(model, record._fields[field], element)
if isinstance(expected, str):
@@ -202,15 +198,15 @@ class TestConvertBack(common.TransactionCase):
field_value = 'record.%s' % field
e.set('t-field', field_value)
qwebcontext = self.qwebcontext({'record': record})
rendered = self.env['ir.qweb'].compile(t)(qwebcontext)
rendered = self.env['ir.qweb'].render(t, {'record': record})
element = html.fromstring(rendered, parser=html.HTMLParser(encoding='utf-8'))
# emulate edition
element.set('data-oe-many2one-id', str(subrec2.id))
element.text = "New content"
converter = self.env['ir.qweb'].get_field_for(element.get('data-oe-type'))
model = 'ir.qweb.field.' + element.get('data-oe-type')
converter = self.env[model] if model in self.env else self.env['ir.qweb.field']
value_back = converter.from_html('web_editor.converter.test', record._fields[field], element)
self.assertIsNone(
+10 -16
View File
@@ -9,9 +9,9 @@ import re
from lxml import etree
from odoo.addons.base.ir.ir_qweb import QWebContext
from odoo.modules import get_module_resource
from odoo.tests.common import TransactionCase
from openerp.addons.base.ir.ir_qweb import QWebException
class TestQWebTField(TransactionCase):
@@ -20,14 +20,11 @@ class TestQWebTField(TransactionCase):
self.env_branding = self.env(context={'inherit_branding': True})
self.engine = self.env_branding['ir.qweb']
def context(self, values):
return QWebContext(self.env_branding, values)
def test_trivial(self):
field = etree.Element('span', {'t-field': u'company.name'})
company = self.env['res.company'].create({'name': "My Test Company"})
result = self.engine.render_node(field, self.context({'company': company}))
result = self.engine.render(field, {'company': company}).encode('utf-8')
self.assertEqual(
result,
'<span data-oe-model="res.company" data-oe-id="%d" '
@@ -43,7 +40,7 @@ class TestQWebTField(TransactionCase):
s = u"Testing «ταБЬℓσ»: 1<2 & 4+1>3, now 20% off!"
company = self.env['res.company'].create({'name': s})
result = self.engine.render_node(field, self.context({'company': company}))
result = self.engine.render(field, {'company': company}).encode('utf-8')
self.assertEqual(
result,
'<span data-oe-model="res.company" data-oe-id="%d" '
@@ -57,14 +54,14 @@ class TestQWebTField(TransactionCase):
def test_reject_crummy_tags(self):
field = etree.Element('td', {'t-field': u'company.name'})
with self.assertRaisesRegexp(AssertionError, r'^RTE widgets do not work correctly'):
self.engine.render_node(field, self.context({'company': None}))
with self.assertRaisesRegexp(QWebException, r'^RTE widgets do not work correctly'):
self.engine.render(field, {'company': None}).encode('utf-8')
def test_reject_t_tag(self):
field = etree.Element('t', {'t-field': u'company.name'})
with self.assertRaisesRegexp(AssertionError, r'^t-field can not be used on a t element'):
self.engine.render_node(field, self.context({'company': None}))
with self.assertRaisesRegexp(QWebException, r'^t-field can not be used on a t element'):
self.engine.render(field, {'company': None}).encode('utf-8')
from copy import deepcopy
@@ -80,7 +77,7 @@ class FileSystemLoader(object):
if name:
yield name
def __call__(self, name):
def __call__(self, name, options):
for node in self.doc:
if node.get('t-name') == name:
root = etree.Element('templates')
@@ -89,7 +86,7 @@ class FileSystemLoader(object):
return arch
class TestQWeb(common.TransactionCase):
class TestQWeb(TransactionCase):
matcher = re.compile(r'^qweb-test-(.*)\.xml$')
@classmethod
@@ -119,7 +116,6 @@ class TestQWeb(common.TransactionCase):
def run_test_file(self, path):
doc = etree.parse(path).getroot()
loader = FileSystemLoader(path)
context = QWebContext(self.env, {}, loader=loader)
qweb = self.env['ir.qweb']
for template in loader:
if not template or template.startswith('_'):
@@ -129,11 +125,9 @@ class TestQWeb(common.TransactionCase):
# so output is predictable & repeatable
params = {} if param is None else json.loads(param.text, object_pairs_hook=collections.OrderedDict)
ctx = context.copy()
ctx.update(params)
result = doc.find('result[@id="{}"]'.format(template)).text
self.assertEqual(
qweb.render(template, qwebcontext=ctx).strip().encode('utf-8'),
qweb.render(template, values=params, load=loader).strip().encode('utf-8'),
(result or u'').strip().encode('utf-8'),
template
)
@@ -4,7 +4,6 @@
from openerp import api
from openerp.tests import HttpCase
from openerp.tests.common import TransactionCase
from openerp.addons.base.ir.ir_qweb import QWebContext
from openerp.modules.module import get_resource_path
from collections import Counter
@@ -19,7 +18,7 @@ class TestJavascriptAssetsBundle(TransactionCase):
self.cssbundle_xmlid = 'test_assetsbundle.bundle2'
def _get_asset(self, xmlid, env=None):
return self.env['ir.qweb']._get_asset(xmlid, QWebContext(env or self.env, {}))
return (env or self.env)['ir.qweb']._get_asset(xmlid, {})
def _any_ira_for_bundle(self, type):
""" Returns all ir.attachments associated to a bundle, regardless of the verion.
@@ -348,8 +347,7 @@ class TestAssetsBundleWithIRAMock(TransactionCase):
def _bundle(self, should_create, should_unlink):
self.counter.clear()
qw = QWebContext(self.env, {})
self.env['ir.qweb']._get_asset(self.lessbundle_xmlid, qw).to_html(debug='assets')
self.env['ir.qweb']._get_asset(self.lessbundle_xmlid, {}).to_html(debug='assets')
self.assertEquals(self.counter['create'], int(should_create))
self.assertEquals(self.counter['unlink'], int(should_unlink))
@@ -4,7 +4,6 @@ import datetime
from openerp.tests import common
from openerp.tools import html_escape as e
from openerp.addons.base.ir.ir_qweb import QWebContext
directory = os.path.dirname(__file__)
@@ -103,10 +102,9 @@ class TestCurrencyExport(TestExport):
converter = self.registry('ir.qweb.field.monetary')
options = {
'widget': 'monetary',
'display_currency': dest
'display_currency': dest,
}
return converter.record_to_html(self.cr, self.uid, obj, 'value', options,
QWebContext(self.env(context=dict(inherit_branding=True)), {'obj': obj}))
return converter.record_to_html(self.cr, self.uid, obj, 'value', options, {'obj': obj})
def test_currency_post(self):
currency = self.create(self.Currency, name="Test", symbol=u"test")