[ADD] m2o field export tests
authorXavier Morel <xmo@openerp.com>
Mon, 23 Jul 2012 16:00:41 +0000 (18:00 +0200)
committerXavier Morel <xmo@openerp.com>
Mon, 23 Jul 2012 16:00:41 +0000 (18:00 +0200)
bzr revid: xmo@openerp.com-20120723160041-o6w24ia2kwnqu19z

openerp/tests/test_export.py

index 401a90f..61c7151 100644 (file)
@@ -18,6 +18,8 @@ models = [
     ('datetime', fields.datetime()),
     ('text', fields.text()),
     ('selection', fields.selection([(1, "Foo"), (2, "Bar"), (3, "Qux")])),
+    # just relate to an integer
+    ('many2one', fields.many2one('export.integer')),
     # TODO: m2o, o2m, m2m
     # TODO: function?
     # TODO: related?
@@ -29,7 +31,11 @@ for name, field in models:
         '_module': 'base',
         '_columns': {
             'value': field
-        }
+        },
+        'name_get': (lambda self, cr, uid, ids, context=None:
+            [(record.id, "%s:%s" % (self._name, record.value))
+             for record in self.browse(cr, uid, ids, context=context)])
+
     }
     NewModel = type(
         'Export%s' % ''.join(section.capitalize() for section in name.split('.')),
@@ -265,3 +271,36 @@ class test_selection(CreatorCase):
             self.export(2),
             [[u"Bar"]])
 
+class test_m2o(CreatorCase):
+    model_name = 'export.many2one'
+
+    def test_empty(self):
+        self.assertEqual(
+            self.export(False),
+            [[False]])
+    def test_basic(self):
+        """ Exported value is the name_get of the related object
+        """
+        integer_id = self.registry('export.integer').create(
+            self.cr, openerp.SUPERUSER_ID, {'value': 42})
+        name = dict(self.registry('export.integer').name_get(
+            self.cr, openerp.SUPERUSER_ID,[integer_id]))[integer_id]
+        self.assertEqual(
+            self.export(integer_id),
+            [[name]])
+    def test_path(self):
+        """ Can recursively export fields of m2o via path
+        """
+        integer_id = self.registry('export.integer').create(
+            self.cr, openerp.SUPERUSER_ID, {'value': 42})
+        self.assertEqual(
+            self.export(integer_id, fields=['value/.id', 'value/value']),
+            [[unicode(integer_id), u'42']])
+    def test_external_id(self):
+        integer_id = self.registry('export.integer').create(
+            self.cr, openerp.SUPERUSER_ID, {'value': 42})
+        # __export__.$class.$id
+        external_id = u'__export__.export_many2one_%d' % integer_id
+        self.assertEqual(
+            self.export(integer_id, fields=['value/id']),
+            [[external_id]])