diff --git a/product/ERP5Form/tests/testFields.py b/product/ERP5Form/tests/testFields.py
index 9cf561a1353da5d62d1921082d57548d85b5ff48..0d185b722bb299ea3f9934c02be82c219afc7859 100644
--- a/product/ERP5Form/tests/testFields.py
+++ b/product/ERP5Form/tests/testFields.py
@@ -29,6 +29,8 @@
 
 # TODO: Some tests from this file can be merged into Formulator
 
+from Products.ERP5Type.tests.ERP5TypeTestCase import ERP5TypeTestCase
+import transaction
 import unittest
 
 try:
@@ -334,22 +336,78 @@ class TestCheckBoxField(unittest.TestCase):
                       self.field.render_odt(as_string=False, REQUEST=request).tag)
     self.assertEquals('1', self.field.render_odt(as_string=False, REQUEST=request).text)
 
-class TestListField(unittest.TestCase):
+class TestListField(ERP5TypeTestCase):
   """Tests List field
   """
 
   def getTitle(self):
     return "List Field"
 
-  def setUp(self):
+  def getBusinessTemplateList(self):
+    """
+    Tuple of Business Templates we need to install
+    """
+    return (
+      'erp5_base',
+    )
+
+  def afterSetUp(self):
     self.field = ListField('test_field')
     self.widget = self.field.widget
+    self.createCategories()
+    transaction.commit()
+    self.tic()
+
+  def createCategories(self):
+    """
+      Light install create only base categories, so we create
+      some categories for testing them
+    """
+    category_tool = self.portal.portal_categories
+    category_dict = {'a':1, 'b':2, 'd':3, 'c':4, 'e':None, 'g':None, 'f':None}
+    if len(category_tool.gender.contentValues()) == 0 :
+      for category_id, int_index in category_dict.items():
+        category_tool.gender.newContent(portal_type='Category',
+                                               id=category_id,
+                                               int_index=int_index)
 
   def test_render_odt(self):
     self.field.values['default'] = ['My first Line', 'My Second Line', 'foo']
     self.assertEquals('text:line-break', 
         self.field.render_odt(as_string=False)[0].xpath('name()'))
 
+  def test_listField_value_order(self):
+    '''This test check the list field value order
+    '''
+    # create a form with a list_field that use gender category
+    portal_skins = self.getSkinsTool()
+    skin_folder = portal_skins._getOb('custom')
+    skin_folder.manage_addProduct['ERP5Form'].addERP5Form(
+        'Base_viewTestFieldValueOrder',
+        'View')
+    form = skin_folder._getOb('Base_viewTestFieldValueOrder', None)
+
+    # The field is a proxyfield on Base_viewFieldLibrary.my_category that
+    # category should be sort on int_index and translated_id
+    form.manage_addField('my_gender', 'Test List Field',
+        'ProxyField')
+    field = getattr(form, 'my_gender')
+    field.manage_edit_xmlrpc(dict(
+    form_id='Base_viewFieldLibrary', field_id='my_category'))
+
+    category_item_list = field.get_value('items')
+    self.assertEquals(category_item_list,
+        [['', ''], ['e', 'e'], ['f', 'f'], ['g', 'g'], ['a', 'a'], ['b', 'b'],
+          ['d', 'd'], ['c', 'c']])
+
+    # try on a person to select on gender and check if the result is the same
+    person_module = self.portal.getDefaultModule('Person')
+    person = person_module.newContent(portal_type='Person')
+    person.setGender('b')
+    self.assertEquals(person.getGender(), 'b')
+    self.assertEquals(person.Person_view.my_gender.get_value('items'),
+        [['', ''], ['e', 'e'], ['f', 'f'], ['g', 'g'], ['a', 'a'], ['b', 'b'],
+          ['d', 'd'], ['c', 'c']])
 
 class TestProxyField(PlacelessSetup, unittest.TestCase):