Index: /main/waeup.ikoba/trunk/src/waeup/ikoba/products/tests/test_productoptions.py
===================================================================
--- /main/waeup.ikoba/trunk/src/waeup/ikoba/products/tests/test_productoptions.py	(revision 12308)
+++ /main/waeup.ikoba/trunk/src/waeup/ikoba/products/tests/test_productoptions.py	(revision 12308)
@@ -0,0 +1,89 @@
+# Tests for schoolgrades module.
+import unittest
+from decimal import Decimal
+from zope.component import getGlobalSiteManager
+from zope.interface.verify import verifyObject, verifyClass
+from zope.schema.interfaces import ConstraintNotSatisfied, WrongType
+from waeup.ikoba.interfaces import IProductOptionEntry, IProductOptionEntryField, IIkobaUtils
+from waeup.ikoba.schoolgrades import ProductOptionEntry, ProductOptionEntryField
+from waeup.ikoba.utils.utils import IkobaUtils
+
+class ProductOptionEntryTests(unittest.TestCase):
+
+    def setUp(self):
+        self.utils = IkobaUtils()
+        self.gsm = getGlobalSiteManager()
+        self.gsm.registerUtility(self.utils, IIkobaUtils)
+        self.valid_title = u'Option 1'
+        self.valid_fee = Decimal(55.5)
+        self.valid_currency = 'usd'
+        return
+
+    def tearDown(self):
+        self.gsm.unregisterUtility(self.utils)
+        return
+
+    def test_ifaces(self):
+        # make sure we implement the promised interfaces.
+        obj = ProductOptionEntry()
+        verifyObject(IProductOptionEntry, obj)
+        verifyClass(IProductOptionEntry, ProductOptionEntry)
+        return
+
+    def test_init(self):
+        # we can pass initial values
+        item1 = ProductOptionEntry()
+        item2 = ProductOptionEntry(
+            self.valid_title, self.valid_fee, self.valid_currency)
+        self.assertTrue(item1.title is None)
+        self.assertTrue(item1.fee is None)
+        self.assertTrue(item1.currency is None)
+        self.assertEqual(item2.title, self.valid_title)
+        self.assertEqual(item2.fee, self.valid_fee)
+        self.assertEqual(item2.currency, self.valid_currency)
+        return
+
+    def test_illegal_value(self):
+        # we do not accept values which do not meet the interface
+        item = ProductOptionEntry()
+        self.assertRaises(
+            WrongType, ProductOptionEntry, 6, 500, 'invalid')
+        return
+
+    def test_to_string(self):
+        # the string representation is handy for export
+        item1 = ProductOptionEntry()
+        item2 = ProductOptionEntry(
+            self.valid_title, self.valid_fee, self.valid_currency)
+        self.assertEqual(item1.to_string(), u"(None, None, None)")
+        self.assertEqual(item2.to_string(), u"(u'%s', u'%s', u'%s')" % (
+            self.valid_title, self.valid_fee, self.valid_currency))
+        return
+
+    def test_from_string(self):
+        # we can create new result entries based on strings
+        myinput = u"(u'%s',u'%s',u'%s')" % (
+            self.valid_title, self.valid_fee, self.valid_currency)
+        item1 = ProductOptionEntry.from_string(myinput)
+        item2 = ProductOptionEntry.from_string(u"(u'', u'', u'')")
+        item3 = ProductOptionEntry.from_string(u"(None, None, None)")
+        self.assertEqual(item1.title, self.valid_title)
+        self.assertEqual(item1.fee, self.valid_fee)
+        self.assertEqual(item1.currency, self.valid_currency)
+        self.assertTrue(item2.title is None)
+        self.assertTrue(item2.fee is None)
+        self.assertEqual(item2.currency, None)
+        self.assertTrue(item3.title is None)
+        self.assertTrue(item3.fee is None)
+        self.assertEqual(item3.currency, None)
+        return
+
+class ProductOptionEntryFieldTests(unittest.TestCase):
+
+    def test_ifaces(self):
+        # make sure we implement the promised interfaces.
+        obj = ProductOptionEntryField()
+        verifyObject(IProductOptionEntryField, obj)
+        verifyClass(IProductOptionEntryField, ProductOptionEntryField)
+        return
+
Index: in/waeup.ikoba/trunk/src/waeup/ikoba/tests/test_schoolgrades.py
===================================================================
--- /main/waeup.ikoba/trunk/src/waeup/ikoba/tests/test_schoolgrades.py	(revision 12307)
+++ 	(revision )
@@ -1,89 +1,0 @@
-# Tests for schoolgrades module.
-import unittest
-from decimal import Decimal
-from zope.component import getGlobalSiteManager
-from zope.interface.verify import verifyObject, verifyClass
-from zope.schema.interfaces import ConstraintNotSatisfied, WrongType
-from waeup.ikoba.interfaces import IProductOptionEntry, IProductOptionEntryField, IIkobaUtils
-from waeup.ikoba.schoolgrades import ProductOptionEntry, ProductOptionEntryField
-from waeup.ikoba.utils.utils import IkobaUtils
-
-class ProductOptionEntryTests(unittest.TestCase):
-
-    def setUp(self):
-        self.utils = IkobaUtils()
-        self.gsm = getGlobalSiteManager()
-        self.gsm.registerUtility(self.utils, IIkobaUtils)
-        self.valid_title = u'Option 1'
-        self.valid_fee = Decimal(55.5)
-        self.valid_currency = 'usd'
-        return
-
-    def tearDown(self):
-        self.gsm.unregisterUtility(self.utils)
-        return
-
-    def test_ifaces(self):
-        # make sure we implement the promised interfaces.
-        obj = ProductOptionEntry()
-        verifyObject(IProductOptionEntry, obj)
-        verifyClass(IProductOptionEntry, ProductOptionEntry)
-        return
-
-    def test_init(self):
-        # we can pass initial values
-        item1 = ProductOptionEntry()
-        item2 = ProductOptionEntry(
-            self.valid_title, self.valid_fee, self.valid_currency)
-        self.assertTrue(item1.title is None)
-        self.assertTrue(item1.fee is None)
-        self.assertTrue(item1.currency is None)
-        self.assertEqual(item2.title, self.valid_title)
-        self.assertEqual(item2.fee, self.valid_fee)
-        self.assertEqual(item2.currency, self.valid_currency)
-        return
-
-    def test_illegal_value(self):
-        # we do not accept values which do not meet the interface
-        item = ProductOptionEntry()
-        self.assertRaises(
-            WrongType, ProductOptionEntry, 6, 500, 'invalid')
-        return
-
-    def test_to_string(self):
-        # the string representation is handy for export
-        item1 = ProductOptionEntry()
-        item2 = ProductOptionEntry(
-            self.valid_title, self.valid_fee, self.valid_currency)
-        self.assertEqual(item1.to_string(), u"(None, None, None)")
-        self.assertEqual(item2.to_string(), u"(u'%s', u'%s', u'%s')" % (
-            self.valid_title, self.valid_fee, self.valid_currency))
-        return
-
-    def test_from_string(self):
-        # we can create new result entries based on strings
-        myinput = u"(u'%s',u'%s',u'%s')" % (
-            self.valid_title, self.valid_fee, self.valid_currency)
-        item1 = ProductOptionEntry.from_string(myinput)
-        item2 = ProductOptionEntry.from_string(u"(u'', u'', u'')")
-        item3 = ProductOptionEntry.from_string(u"(None, None, None)")
-        self.assertEqual(item1.title, self.valid_title)
-        self.assertEqual(item1.fee, self.valid_fee)
-        self.assertEqual(item1.currency, self.valid_currency)
-        self.assertTrue(item2.title is None)
-        self.assertTrue(item2.fee is None)
-        self.assertEqual(item2.currency, None)
-        self.assertTrue(item3.title is None)
-        self.assertTrue(item3.fee is None)
-        self.assertEqual(item3.currency, None)
-        return
-
-class ProductOptionEntryFieldTests(unittest.TestCase):
-
-    def test_ifaces(self):
-        # make sure we implement the promised interfaces.
-        obj = ProductOptionEntryField()
-        verifyObject(IProductOptionEntryField, obj)
-        verifyClass(IProductOptionEntryField, ProductOptionEntryField)
-        return
-
