Index: main/waeup.aaue/trunk/src/waeup/aaue/applicants/interfaces.py
===================================================================
--- main/waeup.aaue/trunk/src/waeup/aaue/applicants/interfaces.py	(revision 15454)
+++ main/waeup.aaue/trunk/src/waeup/aaue/applicants/interfaces.py	(revision 15455)
@@ -123,4 +123,10 @@
         )
 
+    course3 = schema.Choice(
+        title = _(u'3rd Choice Course of Study'),
+        source = AppCatCertificateSource(),
+        required = False,
+        )
+
     fst_sit_fname = schema.TextLine(
         title = _(u'Full Name'),
@@ -506,7 +512,11 @@
 
     @invariant
-    def second_choice(applicant):
+    def course_choice(applicant):
         if applicant.course1 == applicant.course2:
             raise Invalid(_("2nd choice course must differ from 1st choice course."))
+        if applicant.course1 == applicant.course3:
+            raise Invalid(_("3rd choice course must differ from 1st choice course."))
+        if applicant.course2 == applicant.course3:
+            raise Invalid(_("3rd choice course must differ from 2nd choice course."))
 
 #ICustomUGApplicant['programme_type'].order = IApplicantBaseData[
Index: main/waeup.aaue/trunk/src/waeup/aaue/applicants/tests/test_applicantcopier.py
===================================================================
--- main/waeup.aaue/trunk/src/waeup/aaue/applicants/tests/test_applicantcopier.py	(revision 15454)
+++ main/waeup.aaue/trunk/src/waeup/aaue/applicants/tests/test_applicantcopier.py	(revision 15455)
@@ -24,5 +24,5 @@
 from hurry.workflow.interfaces import IWorkflowInfo, IWorkflowState
 from zope.event import notify
-from zope.component import getUtility
+from zope.component import getUtility, createObject
 from zope.i18n import translate
 from waeup.kofa.interfaces import IExtFileStore, IFileStoreNameChooser
@@ -38,4 +38,10 @@
     def setUp(self):
         super(ApplicantCopierFunctionalTests, self).setUp()
+        certificate = createObject('waeup.Certificate')
+        certificate.code = 'CERT2'
+        certificate.title = 'New Certificate'
+        certificate.application_category = 'basic'
+        self.app['faculties']['fac1']['dep1'].certificates.addCertificate(
+            certificate)
         return
 
@@ -46,4 +52,5 @@
         self.fill_correct_values()
         self.browser.getControl("Save").click()
+        self.browser.getControl(name="form.course2").value = ['CERT2']
         self.browser.getControl(name="form.nationality").value = ['NG']
         self.browser.getControl(name="form.lga").value = ['abia_aba_north']
Index: main/waeup.aaue/trunk/src/waeup/aaue/applicants/tests/test_browser.py
===================================================================
--- main/waeup.aaue/trunk/src/waeup/aaue/applicants/tests/test_browser.py	(revision 15454)
+++ main/waeup.aaue/trunk/src/waeup/aaue/applicants/tests/test_browser.py	(revision 15455)
@@ -56,4 +56,10 @@
 
     def test_payment(self):
+        certificate = createObject('waeup.Certificate')
+        certificate.code = 'CERT2'
+        certificate.title = 'New Certificate'
+        certificate.application_category = 'basic'
+        self.app['faculties']['fac1']['dep1'].certificates.addCertificate(
+            certificate)
         configuration = SessionConfiguration()
         configuration.academic_session = session_1
@@ -62,4 +68,5 @@
         self.login()
         self.browser.open(self.edit_path)
+        self.browser.getControl(name="form.course2").value = ['CERT2']
         self.browser.getControl(name="form.date_of_birth").value = '09/09/1988'
         self.browser.getControl(name="form.email").value = 'xx@yy.zz'
Index: main/waeup.aaue/trunk/src/waeup/aaue/etranzact/tests.py
===================================================================
--- main/waeup.aaue/trunk/src/waeup/aaue/etranzact/tests.py	(revision 15454)
+++ main/waeup.aaue/trunk/src/waeup/aaue/etranzact/tests.py	(revision 15455)
@@ -17,4 +17,5 @@
 ##
 from hurry.workflow.interfaces import IWorkflowState
+from zope.component import createObject, getUtility
 from waeup.kofa.students.tests.test_browser import StudentsFullSetup
 from waeup.kofa.applicants.tests.test_browser import (
@@ -273,4 +274,10 @@
     def setUp(self):
         super(EtranzactTestsApplicants, self).setUp()
+        certificate = createObject('waeup.Certificate')
+        certificate.code = 'CERT2'
+        certificate.title = 'New Certificate'
+        certificate.application_category = 'basic'
+        self.app['faculties']['fac1']['dep1'].certificates.addCertificate(
+            certificate)
         self.applicantscontainer.application_fee = 200.0
         self.browser.addHeader('Authorization', 'Basic mgr:mgrpw')
@@ -280,4 +287,5 @@
         self.browser.getControl(name="transition").value = ['start']
         self.browser.getControl(name="form.nationality").value = ['NG']
+        self.browser.getControl(name="form.course2").value = ['CERT2']
         #self.browser.getControl(name="form.programme_type").value = ['direct']
         self.browser.getControl("Save").click()
Index: main/waeup.aaue/trunk/src/waeup/aaue/interswitch/tests.py
===================================================================
--- main/waeup.aaue/trunk/src/waeup/aaue/interswitch/tests.py	(revision 15454)
+++ main/waeup.aaue/trunk/src/waeup/aaue/interswitch/tests.py	(revision 15455)
@@ -50,4 +50,10 @@
     def setUp(self):
         super(InterswitchTestsApplicants, self).setUp()
+        certificate = createObject('waeup.Certificate')
+        certificate.code = 'CERT2'
+        certificate.title = 'New Certificate'
+        certificate.application_category = 'basic'
+        self.app['faculties']['fac1']['dep1'].certificates.addCertificate(
+            certificate)
         configuration = SessionConfiguration()
         configuration.academic_session = datetime.now().year - 2
@@ -61,4 +67,5 @@
         self.applicantscontainer.application_fee = 10000.0
         self.browser.getControl(name="form.nationality").value = ['NG']
+        self.browser.getControl(name="form.course2").value = ['CERT2']
         self.browser.getControl(name="transition").value = ['start']
         self.browser.getControl("Save").click()
