[FIX] ir.qweb: update tests
This commit is contained in:
@@ -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(
|
||||
|
||||
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user