diff options
| author | Xavier Morel <xmo@openerp.com> | 2012-03-22 15:33:31 +0100 |
|---|---|---|
| committer | Xavier Morel <xmo@openerp.com> | 2012-03-22 15:33:31 +0100 |
| commit | 7353e02e2ef4a403d4b79c1b157f2ca00b77d2fc (patch) | |
| tree | a319552e3664ea272fdfb8abf31c961bcd5e1e6e /addons/web/test | |
| parent | 514c63288c7d5d88d764b44696c5e3a5fc148dfb (diff) | |
| parent | 1da49a44a57aa413e5eb96afe9c6d294e09848fd (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.py | 4 | ||||
| -rw-r--r-- | addons/web/test/test_menu.py | 24 | ||||
| -rw-r--r-- | addons/web/test/test_serving_base.py | 34 | ||||
| -rw-r--r-- | addons/web/test/test_view.py | 28 |
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<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>'} |
