2011-03-24 20:11:25 +00:00
|
|
|
import xml.etree.ElementTree
|
2011-03-28 12:27:24 +00:00
|
|
|
import mock
|
2011-03-24 20:11:25 +00:00
|
|
|
|
|
|
|
import unittest2
|
|
|
|
|
|
|
|
import base.controllers.main
|
2011-03-28 12:27:24 +00:00
|
|
|
import openerpweb.nonliterals
|
|
|
|
import openerpweb.openerpweb
|
2011-03-24 20:11:25 +00:00
|
|
|
|
2011-03-28 12:27:24 +00:00
|
|
|
#noinspection PyCompatibility
|
2011-03-24 20:11:25 +00:00
|
|
|
class ViewTest(unittest2.TestCase):
|
2011-03-28 12:27:24 +00:00
|
|
|
def setUp(self):
|
|
|
|
self.view = base.controllers.main.View()
|
2011-03-24 20:11:25 +00:00
|
|
|
def test_identity(self):
|
|
|
|
base_view = """
|
|
|
|
<form string="Title">
|
|
|
|
<group>
|
|
|
|
<field name="some_field"/>
|
|
|
|
<field name="some_other_field"/>
|
|
|
|
</group>
|
|
|
|
<field name="stuff"/>
|
|
|
|
</form>
|
|
|
|
"""
|
|
|
|
|
|
|
|
pristine = xml.etree.ElementTree.fromstring(base_view)
|
2011-03-28 12:27:24 +00:00
|
|
|
transformed = self.view.transform_view(base_view, None)
|
2011-03-24 20:11:25 +00:00
|
|
|
|
|
|
|
self.assertEqual(
|
|
|
|
xml.etree.ElementTree.tostring(transformed),
|
|
|
|
xml.etree.ElementTree.tostring(pristine)
|
|
|
|
)
|
|
|
|
|
2011-03-28 12:27:24 +00:00
|
|
|
def test_convert_literal_domain(self):
|
|
|
|
e = xml.etree.ElementTree.Element(
|
2011-04-01 09:48:35 +00:00
|
|
|
'field', domain=" [('somefield', '=', 3)] ")
|
2011-03-28 12:27:24 +00:00
|
|
|
self.view.parse_domains_and_contexts(e, None)
|
|
|
|
|
|
|
|
self.assertEqual(
|
|
|
|
e.get('domain'),
|
|
|
|
[('somefield', '=', 3)])
|
|
|
|
|
|
|
|
def test_convert_complex_domain(self):
|
|
|
|
e = xml.etree.ElementTree.Element(
|
|
|
|
'field',
|
|
|
|
domain="[('account_id.type','in',['receivable','payable']),"
|
|
|
|
"('reconcile_id','=',False),"
|
|
|
|
"('reconcile_partial_id','=',False),"
|
|
|
|
"('state', '=', 'valid')]"
|
|
|
|
)
|
|
|
|
self.view.parse_domains_and_contexts(e, None)
|
|
|
|
|
|
|
|
self.assertEqual(
|
|
|
|
e.get('domain'),
|
|
|
|
[('account_id.type', 'in', ['receivable', 'payable']),
|
|
|
|
('reconcile_id', '=', False),
|
|
|
|
('reconcile_partial_id', '=', False),
|
|
|
|
('state', '=', 'valid')]
|
|
|
|
)
|
|
|
|
|
|
|
|
def test_retrieve_nonliteral_domain(self):
|
|
|
|
session = mock.Mock(spec=openerpweb.openerpweb.OpenERPSession)
|
|
|
|
session.domains_store = {}
|
|
|
|
domain_string = ("[('month','=',(datetime.date.today() - "
|
|
|
|
"datetime.timedelta(365/12)).strftime('%%m'))]")
|
|
|
|
e = xml.etree.ElementTree.Element(
|
|
|
|
'field', domain=domain_string)
|
|
|
|
|
|
|
|
self.view.parse_domains_and_contexts(e, session)
|
|
|
|
|
|
|
|
self.assertIsInstance(e.get('domain'), openerpweb.nonliterals.Domain)
|
|
|
|
self.assertEqual(
|
|
|
|
openerpweb.nonliterals.Domain(
|
|
|
|
session, key=e.get('domain').key).get_domain_string(),
|
|
|
|
domain_string)
|
2011-03-28 15:14:10 +00:00
|
|
|
|
|
|
|
def test_convert_literal_context(self):
|
|
|
|
e = xml.etree.ElementTree.Element(
|
2011-04-01 09:48:35 +00:00
|
|
|
'field', context=" {'some_prop': 3} ")
|
2011-03-28 15:14:10 +00:00
|
|
|
self.view.parse_domains_and_contexts(e, None)
|
|
|
|
|
|
|
|
self.assertEqual(
|
|
|
|
e.get('context'),
|
|
|
|
{'some_prop': 3})
|
|
|
|
|
2011-03-29 11:01:30 +00:00
|
|
|
def test_convert_complex_context(self):
|
2011-03-28 15:14:10 +00:00
|
|
|
e = xml.etree.ElementTree.Element(
|
|
|
|
'field',
|
|
|
|
context="{'account_id.type': ['receivable','payable'],"
|
|
|
|
"'reconcile_id': False,"
|
|
|
|
"'reconcile_partial_id': False,"
|
|
|
|
"'state': 'valid'}"
|
|
|
|
)
|
|
|
|
self.view.parse_domains_and_contexts(e, None)
|
|
|
|
|
|
|
|
self.assertEqual(
|
|
|
|
e.get('context'),
|
|
|
|
{'account_id.type': ['receivable', 'payable'],
|
|
|
|
'reconcile_id': False,
|
|
|
|
'reconcile_partial_id': False,
|
|
|
|
'state': 'valid'}
|
|
|
|
)
|
|
|
|
|
2011-03-29 11:01:30 +00:00
|
|
|
def test_retrieve_nonliteral_context(self):
|
2011-03-28 15:14:10 +00:00
|
|
|
session = mock.Mock(spec=openerpweb.openerpweb.OpenERPSession)
|
2011-03-29 11:01:30 +00:00
|
|
|
session.contexts_store = {}
|
2011-03-28 15:14:10 +00:00
|
|
|
context_string = ("{'month': (datetime.date.today() - "
|
|
|
|
"datetime.timedelta(365/12)).strftime('%%m')}")
|
|
|
|
e = xml.etree.ElementTree.Element(
|
|
|
|
'field', context=context_string)
|
|
|
|
|
|
|
|
self.view.parse_domains_and_contexts(e, session)
|
|
|
|
|
|
|
|
self.assertIsInstance(e.get('context'), openerpweb.nonliterals.Context)
|
|
|
|
self.assertEqual(
|
|
|
|
openerpweb.nonliterals.Context(
|
|
|
|
session, key=e.get('context').key).get_context_string(),
|
|
|
|
context_string)
|