summaryrefslogtreecommitdiff
path: root/addons/web/test
diff options
context:
space:
mode:
authorXavier Morel <xmo@openerp.com>2012-03-22 15:33:31 +0100
committerXavier Morel <xmo@openerp.com>2012-03-22 15:33:31 +0100
commit7353e02e2ef4a403d4b79c1b157f2ca00b77d2fc (patch)
treea319552e3664ea272fdfb8abf31c961bcd5e1e6e /addons/web/test
parent514c63288c7d5d88d764b44696c5e3a5fc148dfb (diff)
parent1da49a44a57aa413e5eb96afe9c6d294e09848fd (diff)
[MERGE] from trunk
bzr revid: xmo@openerp.com-20120322143331-iajlifomw1hohbht
Diffstat (limited to 'addons/web/test')
-rw-r--r--addons/web/test/test_dataset.py4
-rw-r--r--addons/web/test/test_menu.py24
-rw-r--r--addons/web/test/test_serving_base.py34
-rw-r--r--addons/web/test/test_view.py28
4 files changed, 70 insertions, 20 deletions
diff --git a/addons/web/test/test_dataset.py b/addons/web/test/test_dataset.py
index 898ca5a582c..b9fe5a3cca2 100644
--- a/addons/web/test/test_dataset.py
+++ b/addons/web/test/test_dataset.py
@@ -10,6 +10,7 @@ class TestDataSetController(unittest2.TestCase):
self.read = self.request.session.model().read
self.search = self.request.session.model().search
+ @unittest2.skip
def test_empty_find(self):
self.search.return_value = []
self.read.return_value = []
@@ -17,6 +18,7 @@ class TestDataSetController(unittest2.TestCase):
self.assertFalse(self.dataset.do_search_read(self.request, 'fake.model'))
self.read.assert_called_once_with([], False, self.request.context)
+ @unittest2.skip
def test_regular_find(self):
self.search.return_value = [1, 2, 3]
@@ -24,6 +26,7 @@ class TestDataSetController(unittest2.TestCase):
self.read.assert_called_once_with([1, 2, 3], False,
self.request.context)
+ @unittest2.skip
def test_ids_shortcut(self):
self.search.return_value = [1, 2, 3]
self.read.return_value = [
@@ -37,6 +40,7 @@ class TestDataSetController(unittest2.TestCase):
[{'id': 1}, {'id': 2}, {'id': 3}])
self.assertFalse(self.read.called)
+ @unittest2.skip
def test_get(self):
self.read.return_value = [
{'id': 1, 'name': 'baz'},
diff --git a/addons/web/test/test_menu.py b/addons/web/test/test_menu.py
index d763fd7dcb1..7e69442c4b8 100644
--- a/addons/web/test/test_menu.py
+++ b/addons/web/test/test_menu.py
@@ -1,8 +1,9 @@
# -*- coding: utf-8 -*-
import mock
import unittest2
-import web.controllers.main
-import openerpweb.openerpweb
+
+from ..controllers import main
+from ..common.session import OpenERPSession
class Placeholder(object):
def __init__(self, **kwargs):
@@ -11,17 +12,16 @@ class Placeholder(object):
class LoadTest(unittest2.TestCase):
def setUp(self):
- self.menu = web.controllers.main.Menu()
+ self.menu = main.Menu()
self.menus_mock = mock.Mock()
- self.request = Placeholder(
- session=openerpweb.openerpweb.OpenERPSession(
- model_factory=lambda _session, _name: self.menus_mock))
+ self.request = Placeholder(session=OpenERPSession())
def tearDown(self):
del self.request
del self.menus_mock
del self.menu
+ @unittest2.skip
def test_empty(self):
self.menus_mock.search = mock.Mock(return_value=[])
self.menus_mock.read = mock.Mock(return_value=[])
@@ -36,6 +36,7 @@ class LoadTest(unittest2.TestCase):
root['children'],
[])
+ @unittest2.skip
def test_applications_sort(self):
self.menus_mock.search = mock.Mock(return_value=[1, 2, 3])
self.menus_mock.read = mock.Mock(return_value=[
@@ -62,6 +63,7 @@ class LoadTest(unittest2.TestCase):
'parent_id': False, 'children': []
}])
+ @unittest2.skip
def test_deep(self):
self.menus_mock.search = mock.Mock(return_value=[1, 2, 3, 4])
self.menus_mock.read = mock.Mock(return_value=[
@@ -100,7 +102,7 @@ class LoadTest(unittest2.TestCase):
class ActionMungerTest(unittest2.TestCase):
def setUp(self):
- self.menu = web.controllers.main.Menu()
+ self.menu = main.Menu()
def test_actual_treeview(self):
action = {
"views": [[False, "tree"], [False, "form"],
@@ -111,10 +113,11 @@ class ActionMungerTest(unittest2.TestCase):
}
changed = action.copy()
del action['view_type']
- web.controllers.main.fix_view_modes(changed)
+ main.fix_view_modes(changed)
self.assertEqual(changed, action)
+ @unittest2.skip
def test_list_view(self):
action = {
"views": [[False, "tree"], [False, "form"],
@@ -123,7 +126,7 @@ class ActionMungerTest(unittest2.TestCase):
"view_id": False,
"view_mode": "tree,form,calendar"
}
- web.controllers.main.fix_view_modes(action)
+ main.fix_view_modes(action)
self.assertEqual(action, {
"views": [[False, "list"], [False, "form"],
@@ -132,6 +135,7 @@ class ActionMungerTest(unittest2.TestCase):
"view_mode": "list,form,calendar"
})
+ @unittest2.skip
def test_redundant_views(self):
action = {
@@ -141,7 +145,7 @@ class ActionMungerTest(unittest2.TestCase):
"view_id": False,
"view_mode": "tree,form,calendar"
}
- web.controllers.main.fix_view_modes(action)
+ main.fix_view_modes(action)
self.assertEqual(action, {
"views": [[False, "list"], [False, "form"],
diff --git a/addons/web/test/test_serving_base.py b/addons/web/test/test_serving_base.py
new file mode 100644
index 00000000000..0bb7a83ac24
--- /dev/null
+++ b/addons/web/test/test_serving_base.py
@@ -0,0 +1,34 @@
+# -*- coding: utf-8 -*-
+
+import random
+import unittest2
+
+from ..controllers.main import topological_sort
+
+def sample(population):
+ return random.sample(
+ population,
+ random.randint(0, min(len(population), 5)))
+
+class TestModulesLoading(unittest2.TestCase):
+ def setUp(self):
+ self.mods = map(str, range(1000))
+ def test_topological_sort(self):
+ random.shuffle(self.mods)
+ modules = [
+ (k, sample(self.mods[:i]))
+ for i, k in enumerate(self.mods)]
+ random.shuffle(modules)
+ ms = dict(modules)
+
+ seen = set()
+ sorted_modules = topological_sort(ms)
+ for module in sorted_modules:
+ deps = ms[module]
+ self.assertGreaterEqual(
+ seen, set(deps),
+ 'Module %s (index %d), ' \
+ 'missing dependencies %s from loaded modules %s' % (
+ module, sorted_modules.index(module), deps, seen
+ ))
+ seen.add(module)
diff --git a/addons/web/test/test_view.py b/addons/web/test/test_view.py
index 677ed42eb2b..0a778ccffd1 100644
--- a/addons/web/test/test_view.py
+++ b/addons/web/test/test_view.py
@@ -6,8 +6,7 @@ import unittest2
import simplejson
import web.controllers.main
-import openerpweb.nonliterals
-import openerpweb.openerpweb
+from ..common import nonliterals, session as s
def field_attrs(fields_view_get, fieldname):
(field,) = filter(lambda f: f['attrs'].get('name') == fieldname,
@@ -47,7 +46,7 @@ class DomainsAndContextsTest(unittest2.TestCase):
)
def test_retrieve_nonliteral_domain(self):
- session = mock.Mock(spec=openerpweb.openerpweb.OpenERPSession)
+ session = mock.Mock(spec=s.OpenERPSession)
session.domains_store = {}
domain_string = ("[('month','=',(datetime.date.today() - "
"datetime.timedelta(365/12)).strftime('%%m'))]")
@@ -56,9 +55,9 @@ class DomainsAndContextsTest(unittest2.TestCase):
self.view.parse_domains_and_contexts(e, session)
- self.assertIsInstance(e.get('domain'), openerpweb.nonliterals.Domain)
+ self.assertIsInstance(e.get('domain'), nonliterals.Domain)
self.assertEqual(
- openerpweb.nonliterals.Domain(
+ nonliterals.Domain(
session, key=e.get('domain').key).get_domain_string(),
domain_string)
@@ -90,7 +89,7 @@ class DomainsAndContextsTest(unittest2.TestCase):
)
def test_retrieve_nonliteral_context(self):
- session = mock.Mock(spec=openerpweb.openerpweb.OpenERPSession)
+ session = mock.Mock(spec=s.OpenERPSession)
session.contexts_store = {}
context_string = ("{'month': (datetime.date.today() - "
"datetime.timedelta(365/12)).strftime('%%m')}")
@@ -99,9 +98,9 @@ class DomainsAndContextsTest(unittest2.TestCase):
self.view.parse_domains_and_contexts(e, session)
- self.assertIsInstance(e.get('context'), openerpweb.nonliterals.Context)
+ self.assertIsInstance(e.get('context'), nonliterals.Context)
self.assertEqual(
- openerpweb.nonliterals.Context(
+ nonliterals.Context(
session, key=e.get('context').key).get_context_string(),
context_string)
@@ -127,6 +126,8 @@ class AttrsNormalizationTest(unittest2.TestCase):
xml.etree.ElementTree.tostring(transformed),
xml.etree.ElementTree.tostring(pristine)
)
+
+ @unittest2.skip
def test_transform_states(self):
element = xml.etree.ElementTree.Element(
'field', states="open,closed")
@@ -137,6 +138,7 @@ class AttrsNormalizationTest(unittest2.TestCase):
simplejson.loads(element.get('attrs')),
{'invisible': [['state', 'not in', ['open', 'closed']]]})
+ @unittest2.skip
def test_transform_invisible(self):
element = xml.etree.ElementTree.Element(
'field', invisible="context.get('invisible_country', False)")
@@ -149,12 +151,13 @@ class AttrsNormalizationTest(unittest2.TestCase):
self.view.normalize_attrs(full_context, {'invisible_country': True})
self.assertEqual(full_context.get('invisible'), '1')
+ @unittest2.skip
def test_transform_invisible_list_column(self):
req = mock.Mock()
req.context = {'set_editable':True, 'set_visible':True,
'gtd_visible':True, 'user_invisible':True}
req.session.evaluation_context = \
- openerpweb.openerpweb.OpenERPSession().evaluation_context
+ s.OpenERPSession().evaluation_context
req.session.model('project.task').fields_view_get.return_value = {
'arch': '''
<tree colors="grey:state in ('cancelled','done');blue:state == 'pending';red:date_deadline and (date_deadline&lt;current_date) and (state in ('draft','pending','open'))" string="Tasks">
@@ -183,13 +186,17 @@ class ListViewTest(unittest2.TestCase):
self.view = web.controllers.main.ListView()
self.request = mock.Mock()
self.request.context = {'set_editable': True}
+
+ @unittest2.skip
def test_no_editable_editable_context(self):
self.request.session.model('fake').fields_view_get.return_value = \
{'arch': '<tree><field name="foo"/></tree>'}
- view = self.view.fields_view_get(self.request, 'fake', False)
+ view = self.view.fields_view_get(self.request, 'fake', False, False)
self.assertEqual(view['arch']['attrs']['editable'],
'bottom')
+
+ @unittest2.skip
def test_editable_top_editable_context(self):
self.request.session.model('fake').fields_view_get.return_value = \
{'arch': '<tree editable="top"><field name="foo"/></tree>'}
@@ -198,6 +205,7 @@ class ListViewTest(unittest2.TestCase):
self.assertEqual(view['arch']['attrs']['editable'],
'top')
+ @unittest2.skip
def test_editable_bottom_editable_context(self):
self.request.session.model('fake').fields_view_get.return_value = \
{'arch': '<tree editable="bottom"><field name="foo"/></tree>'}