odoo/addons/base/common/tests/test_model.py

82 lines
2.6 KiB
Python

# -*- coding: utf-8 -*-
import cherrypy
import mock
import unittest2
import openerpweb.openerpweb
class OpenERPModelTest(unittest2.TestCase):
def test_rpc_call(self):
session = mock.Mock(['execute'])
Model = openerpweb.openerpweb.OpenERPModel(
session, 'a.b')
Model.search([('field', 'op', 'value')], {'key': 'value'})
session.execute.assert_called_once_with(
'a.b', 'search', [('field', 'op', 'value')], {'key': 'value'})
session.execute.reset_mock()
Model.read([42])
session.execute.assert_called_once_with(
'a.b', 'read', [42])
class FakeController(object):
pass
class DispatcherTest(unittest2.TestCase):
def setUp(self):
controller = FakeController()
self.mock_method = mock.Mock()
controller.method = self.mock_method
self.mock_method.exposed = True
self.mock_index = mock.Mock()
controller.index = self.mock_index
self.mock_index.exposed = True
self.patcher = mock.patch.dict(
openerpweb.openerpweb.controllers_path,
{'/some/controller/path': controller})
self.patcher.start()
controller2 = FakeController()
controller2.index = self.mock_index
self.patcher2 = mock.patch.dict(
openerpweb.openerpweb.controllers_path,
{'/some/other/controller': FakeController(),
'/some/other/controller/2': controller2})
self.patcher2.start()
def tearDown(self):
self.patcher2.stop()
self.patcher.stop()
def test_default_redirect(self):
self.assertRaises(
cherrypy.HTTPRedirect,
openerpweb.openerpweb.Root().default)
def test_serve_static_missing(self):
self.assertRaises(
cherrypy.NotFound,
openerpweb.openerpweb.Root().default,
'does-not-exist', 'static', 'bar')
def test_serve_controller_missing(self):
self.assertRaises(
cherrypy.NotFound,
openerpweb.openerpweb.Root().default,
'controller', 'does', 'not', 'exist')
def test_find_controller_method(self):
openerpweb.openerpweb.Root().default(
'some', 'controller', 'path', 'method')
self.mock_method.assert_called_once_with()
def test_find_controller_index(self):
openerpweb.openerpweb.Root().default(
'some', 'controller', 'path')
self.mock_index.assert_called_once_with()
def test_nested_paths(self):
openerpweb.openerpweb.Root().default(
'some', 'other', 'controller', '2')
self.mock_index.assert_called_once_with()