testUNGConfigurationWorkflow.py 22.9 KB
Newer Older
Gabriel Monnerat's avatar
Gabriel Monnerat committed
1 2
##############################################################################
# Copyright (c) 2011 Nexedi SA and Contributors. All Rights Reserved.
3
#           Gabriel M. Monnerat <gabriel@tiolive.com>
Gabriel Monnerat's avatar
Gabriel Monnerat committed
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
#
# WARNING: This program as such is intended to be used by professional
# programmers who take the whole responsability of assessing all potential
# consequences resulting from its eventual inadequacies and bugs
# End users who are looking for a ready-to-use solution with commercial
# garantees and support are strongly adviced to contract a Free Software
# Service Company
#
# This program is Free Software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
#
##############################################################################

from Products.ERP5Type.tests.ERP5TypeTestCase import ERP5TypeTestCase
from Products.ERP5Type.tests.Sequence import SequenceList

31
class TestUNGConfiguratorWorkflowMixin(ERP5TypeTestCase):
Gabriel Monnerat's avatar
Gabriel Monnerat committed
32
  """
33
    Test UNG Configuration Workflow Mixin.
Gabriel Monnerat's avatar
Gabriel Monnerat committed
34 35
  """

36 37
  standard_bt5_list = ('erp5_ingestion_mysql_innodb_catalog',
                       'erp5_simulation',
Gabriel Monnerat's avatar
Gabriel Monnerat committed
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
                       'erp5_dhtml_style',
                       'erp5_jquery',
                       'erp5_jquery_ui',
                       'erp5_web',
                       'erp5_ingestion',
                       'erp5_dms',
                       'erp5_crm',
                       'erp5_knowledge_pad',
                       'erp5_jquery_plugin_spinbtn',
                       'erp5_jquery_plugin_jgraduate',
                       'erp5_jquery_plugin_svgicon',
                       'erp5_jquery_plugin_hotkey',
                       'erp5_jquery_plugin_jquerybbq',
                       'erp5_jquery_plugin_svg_editor',
                       'erp5_jquery_plugin_sheet',
                       'erp5_jquery_plugin_mbmenu',
                       'erp5_jquery_plugin_jqchart',
                       'erp5_jquery_plugin_colorpicker',
                       'erp5_jquery_plugin_elastic',
                       'erp5_jquery_plugin_wdcalendar',
                       'erp5_jquery_sheet_editor',
                       'erp5_xinha_editor',
                       'erp5_svg_editor',
#                      'erp5_mail_reader',
                       'erp5_web_ung_core',
                       'erp5_web_ung_theme',
                       'erp5_web_ung_role')

  DEFAULT_SEQUENCE_LIST = """
     stepCreateBusinessConfiguration
Gabriel Monnerat's avatar
Gabriel Monnerat committed
68
     stepSetUNGWorkflow
Gabriel Monnerat's avatar
Gabriel Monnerat committed
69 70 71 72 73 74 75 76 77
     stepConfiguratorNext
     stepTic
     stepCheckBT5ConfiguratorItem
     stepCheckConfigureOrganisationForm
     stepSetupOrganisationConfiguratorItem
     stepConfiguratorNext
     stepTic
     stepCheckConfigureUserAccountNumberForm
     stepCheckOrganisationConfiguratorItem
78
     stepSetupUserAccountNumberThree
Gabriel Monnerat's avatar
Gabriel Monnerat committed
79 80 81
     stepConfiguratorNext
     stepTic
     stepCheckConfigureMultipleUserAccountForm
82
     stepSetupMultipleUserAccountThree
Gabriel Monnerat's avatar
Gabriel Monnerat committed
83 84 85
     stepConfiguratorNext
     stepTic
     stepCheckConfigurePreferenceForm
86 87
     stepCheckMultipleUserAccountThree%(country)s
     stepSetupPreferenceConfiguration%(country)s
Gabriel Monnerat's avatar
Gabriel Monnerat committed
88
     stepConfiguratorNext
Gabriel Monnerat's avatar
Gabriel Monnerat committed
89
     stepTic
90 91 92 93 94 95
     stepCheckConfigureInstallationForm
     stepSetupInstallConfiguration
     stepConfiguratorNext
     stepTic
     stepCheckInstallConfiguration
     stepStartConfigurationInstallation
96
     stepTic
97
     stepCheckUNGWebSiteAfterInstallation
98
     stepCheckSystemPreferenceAfterInstallation
99 100
     stepCheckUserPreferenceAfterInstallation
     stepTic
Gabriel Monnerat's avatar
Gabriel Monnerat committed
101 102 103 104 105 106 107 108 109 110 111 112 113
  """

  def getBusinessTemplateList(self):
    return ('erp5_core_proxy_field_legacy',
            'erp5_full_text_myisam_catalog',
            'erp5_base',
            'erp5_workflow',
            'erp5_configurator',
            'erp5_configurator_ung',)

  def afterSetUp(self):
    self.portal.portal_templates.updateRepositoryBusinessTemplateList(
                           ['http://www.erp5.org/dists/snapshot/bt5/'])
114 115 116 117 118
    preference = self.portal.portal_preferences.newContent(portal_type="System Preference")
    preference.setTitle("global_system_preference")
    preference.setPreferredOoodocServerAddress("localhost")
    preference.setPreferredOoodocServerPortNumber(8011)
    preference.enable()
119

120
  def stepCreateBusinessConfiguration(self, sequence=None, sequence_list=None, **kw):
Gabriel Monnerat's avatar
Gabriel Monnerat committed
121 122 123 124 125 126
    """ Create one Business Configuration """
    module = self.portal.business_configuration_module
    business_configuration = module.newContent(
                               portal_type="Business Configuration",
                               title='Test Configurator UNG Workflow')
    next_dict = {}
127
    sequence.edit(business_configuration=business_configuration,
Gabriel Monnerat's avatar
Gabriel Monnerat committed
128 129
                  next_dict=next_dict)

Gabriel Monnerat's avatar
Gabriel Monnerat committed
130 131
  def stepSetUNGWorkflow(self, sequence=None, sequence_list=None, **kw):
    """ Set UNG Workflow into Business Configuration """
Gabriel Monnerat's avatar
Gabriel Monnerat committed
132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192
    business_configuration = sequence.get("business_configuration")
    self.setBusinessConfigurationWorkflow(business_configuration,
                                   "workflow_module/ung_configuration_workflow")

  def assertCurrentStep(self, step_title, server_response):
    """ Checks the current step title. """
    self.assertTrue(
      '<h2>%s</h2>' % step_title in server_response['data'],
      'Unable to guess current step title (expected:%s) in: \n%s' %
      (step_title, server_response))

  def stepConfiguratorNext(self, sequence=None, sequence_list=None, **kw):
    """ Go Next into Configuration """
    business_configuration = sequence.get("business_configuration")
    next_dict = sequence.get("next_dict")
    response_dict = self.portal.portal_configurator._next(
                            business_configuration, next_dict)
    sequence.edit(response_dict=response_dict)

  def setBusinessConfigurationWorkflow(self, business_configuration, workflow):
    """ Set configurator workflow """
    business_configuration.setResource(workflow)

  def stepCheckBT5ConfiguratorItem(self, sequence=None, sequence_list=None, **kw):
    """ Check if the Configuration Item list is correct """
    business_configuration = sequence.get("business_configuration")
    # second one: install some standard business templates
    standard_bt5_config_save = business_configuration['1']
    self.assertEquals(len(self.standard_bt5_list),
          len(standard_bt5_config_save.contentValues(
                  portal_type='Standard BT5 Configurator Item')))
    self.assertEquals(
      set(self.standard_bt5_list),
      set([x.bt5_id for x in standard_bt5_config_save.contentValues()]))

  def stepCheckConfigureOrganisationForm(self, sequence=None, sequence_list=None, **kw):
    """ Check if Confire Configure step was showed """
    response_dict = sequence.get("response_dict")
    if 'command' in response_dict:
      self.assertEquals('show', response_dict['command'])
    self.assertEquals(None, response_dict['previous'])
    self.assertEquals('Configure Organisation', response_dict['next'])
    self.assertCurrentStep('Your Organisation', response_dict)

  def stepSetupOrganisationConfiguratorItem(self, sequence=None, sequence_list=None, **kw):
    """ Create one Organisation with Basic information """
    next_dict = dict(
        field_your_title='My Organisation',
        field_your_default_email_text='me@example.com',
        field_your_default_telephone_text='01234567890',
        field_your_default_address_street_address='.',
        field_your_default_address_zip_code='59000')
    sequence.edit(next_dict=next_dict)

  def stepCheckConfigureUserAccountNumberForm(self, sequence=None, sequence_list=None, **kw):
    """ """
    response_dict = sequence.get("response_dict")
    if 'command' in response_dict:
      self.assertEquals('show', response_dict['command'])
    self.assertEquals('Configure user accounts number', response_dict['next'])
    self.assertEquals('Previous', response_dict['previous'])
Gabriel Monnerat's avatar
Gabriel Monnerat committed
193
    self.assertCurrentStep('Number of user accounts', response_dict)
Gabriel Monnerat's avatar
Gabriel Monnerat committed
194 195 196 197 198

  def stepCheckOrganisationConfiguratorItem(self, sequence=None, sequence_list=None, **kw):
    """ Check if organisation was created fine """
    business_configuration = sequence.get("business_configuration")
    organisation_config_save = business_configuration['3']
199
    self.assertEquals(organisation_config_save.getTitle(),
Gabriel Monnerat's avatar
Gabriel Monnerat committed
200 201 202 203 204 205 206
                      "My Organisation")
    self.assertEquals(1, len(organisation_config_save.contentValues()))
    organisation_config_item = organisation_config_save['1']
    self.assertEquals(organisation_config_item.getPortalType(),
                      'Organisation Configurator Item')
    self.assertEquals(organisation_config_item.getDefaultEmailText(),
                      'me@example.com')
Gabriel Monnerat's avatar
Gabriel Monnerat committed
207

208
  def stepSetupUserAccountNumberThree(self, sequence=None, sequence_list=None, **kw):
Gabriel Monnerat's avatar
Gabriel Monnerat committed
209 210 211 212 213 214 215 216 217 218 219 220
    """ Create one more user account """
    next_dict = dict(field_your_user_number="3")
    sequence.edit(next_dict=next_dict)

  def stepCheckConfigureMultipleUserAccountForm(self, sequence=None, sequence_list=None, **kw):
    """ Check the multiple user account form """
    response_dict = sequence.get("response_dict")
    if 'command' in response_dict:
      self.assertEquals('show', response_dict['command'])
    self.assertEquals('Previous', response_dict['previous'])
    self.assertEquals('Configure user accounts', response_dict['next'])
    self.assertCurrentStep('Configuration of users', response_dict)
221

222 223 224 225 226 227 228 229
  def _stepSetupMultipleUserAccountThree(self, sequence, user_list):
    """ Generic step to create multiple user account """
    next_dict = {}
    for user in user_list:
      for k, v in user.items():
        next_dict.setdefault(k, []).append(v)
    sequence.edit(next_dict=next_dict)

Gabriel Monnerat's avatar
Gabriel Monnerat committed
230 231 232 233 234 235
  def stepCheckConfigurePreferenceForm(self, sequence=None, sequence_list=None, **kw):
    """ Check the multiple user account form """
    response_dict = sequence.get("response_dict")
    if 'command' in response_dict:
      self.assertEquals('show', response_dict['command'])
    self.assertEquals('Previous', response_dict['previous'])
236
    self.assertEquals('Configure ERP5 Preferences', response_dict['next'])
237
    self.assertCurrentStep('UNG Preferences', response_dict)
Gabriel Monnerat's avatar
Gabriel Monnerat committed
238 239 240 241

  def stepSetupPreferenceConfigurationBrazil(self, sequence=None, sequence_list=None, **kw):
    """ Setup the Brazil preference configuration """
    next_dict = dict(field_your_preferred_date_order='dmy',
242
                     field_your_default_available_language='pt-BR',
243 244 245 246 247
                     field_your_preferred_event_sender_email="test@test.com",
                     default_field_your_lang=1)
    sequence.edit(next_dict=next_dict)

  def stepSetupPreferenceConfigurationFrance(self, sequence=None, sequence_list=None, **kw):
248
    """ Setup the France preference configuration """
249
    next_dict = dict(field_your_preferred_date_order='ymd',
250
                     field_your_default_available_language='fr',
251 252
                     field_your_preferred_event_sender_email="test@test.com",
                     default_field_your_lang=1)
Gabriel Monnerat's avatar
Gabriel Monnerat committed
253 254
    sequence.edit(next_dict=next_dict)

255
  def stepCheckConfigureWebSiteForm(self, sequence=None, sequence_list=None, **kw):
Gabriel Monnerat's avatar
Gabriel Monnerat committed
256 257 258 259
    """ Check the installation form """
    response_dict = sequence.get("response_dict")
    self.assertEquals('show', response_dict['command'])
    self.assertEquals('Previous', response_dict['previous'])
260
    self.assertEquals('Install', response_dict['next'])
Gabriel Monnerat's avatar
Gabriel Monnerat committed
261

262 263 264 265 266 267 268 269 270
  def stepCheckMultipleUserAccountThreeBrazil(self, sequence=None, sequence_list=None, **kw):
     """ Check if the users were created correctly """
     business_configuration = sequence.get("business_configuration")
     person_config_save = business_configuration["5"]
     person_config_item = person_config_save["1"]
     self.assertEquals(person_config_item.getReference(), "person_creator")
     person_config_item = person_config_save["2"]
     self.assertEquals(person_config_item.getReference(), "person_assignee")
     person_config_item = person_config_save["3"]
271
     self.assertEquals(person_config_item.getReference(), "person_assignor")
272

273 274 275 276 277 278 279 280 281
  def stepCheckMultipleUserAccountThreeFrance(self, sequence=None, sequence_list=None, **kw):
     """ Check if the users were created correctly """
     business_configuration = sequence.get("business_configuration")
     person_config_save = business_configuration["5"]
     person_config_item = person_config_save["1"]
     self.assertEquals(person_config_item.getReference(), "french_creator")
     person_config_item = person_config_save["2"]
     self.assertEquals(person_config_item.getReference(), "french_assignee")
     person_config_item = person_config_save["3"]
282
     self.assertEquals(person_config_item.getReference(), "french_assignor")
283 284 285 286 287 288

  def stepCheckConfigureInstallationForm(self, sequence=None, sequence_list=None, **kw):
    """ Check the installation form """
    response_dict = sequence.get("response_dict")
    self.assertEquals('show', response_dict['command'])

289 290 291 292 293 294 295 296 297 298 299 300 301 302 303
  def stepSetupInstallConfiguration(self, sequence=None, sequence_list=None, **kw):
    """ Install the Configuration """
    sequence.edit(next_dict={})

  def stepCheckInstallConfiguration(self, sequence=None, sequence_list=None, **kw):
    """ Check the installation of the configuration """
    response_dict = sequence.get("response_dict")
    self.assertEquals('install', response_dict['command'])

  def stepStartConfigurationInstallation(self, sequence=None, sequence_list=None, **kw):
    """ Starts the installation """
    business_configuration = sequence.get("business_configuration")
    self.portal.portal_configurator.startInstallation(
         business_configuration, REQUEST=self.portal.REQUEST)

304
  def stepCheckSystemPreferenceAfterInstallation(self, sequence=None, sequence_list=None, **kw):
305
    """ Check System Preference"""
306
    system_preference = self.portal.portal_catalog.getResultValue(portal_type="System Preference")
307 308 309
    self.assertEquals(system_preference.getPreferredOoodocServerPortNumber(), 8011)
    self.assertEquals(system_preference.getPreferredOoodocServerAddress(), "localhost")

310 311
  def stepCheckUserPreferenceAfterInstallation(self, sequence=None, sequence_list=None, **kw):
    """ Check System Preference"""
312
    portal_catalog = self.portal.portal_catalog
313 314 315 316 317 318 319 320 321 322 323 324
    preference = portal_catalog.getResultValue(portal_type="Preference",
                                               reference='Preference for Person Assignor')
    self.assertEquals(preference.getPreferenceState(), "enabled")
    preference = portal_catalog.getResultValue(portal_type="Preference",
                                               title='Preference for Person Assignee')
    self.assertEquals(preference.getPreferenceState(), "enabled")
    preference = portal_catalog.getResultValue(portal_type="Preference",
                                               title='Preference for Person Creator')
    self.assertEquals(preference.getPreferenceState(), "enabled")
    preference = portal_catalog.getResultValue(portal_type="Preference",
                                               id='ung_reference')
    self.assertEquals(preference.getPreferenceState(), "enabled")
325 326 327 328 329 330 331 332 333 334 335 336 337

class TestUNGConfiguratorWorkflowFranceLanguage(TestUNGConfiguratorWorkflowMixin):
  """
    Test UNG Configuration Workflow
  """

  def test_ung_workflow_france(self):
    """ Test the ung workflow with french language """
    sequence_list = SequenceList()
    sequence_string = self.DEFAULT_SEQUENCE_LIST % dict(country='France')
    sequence_list.addSequenceString(sequence_string)
    sequence_list.play(self)

338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368
  def stepSetupMultipleUserAccountThree(self, sequence=None, sequence_list=None, **kw):
    """ Create multiple user account """
    user_list = [
      dict(
        field_your_first_name='Person',
        field_your_last_name='Creator',
        field_your_reference="french_creator",
        field_your_password='person_creator',
        field_your_password_confirm='person_creator',
        field_your_default_email_text='test@test.com',
        field_your_default_telephone_text='',
      ), dict(
        field_your_first_name='Person',
        field_your_last_name='Assignee',
        field_your_reference="french_assignee",
        field_your_password='person_assignee',
        field_your_password_confirm='person_assignee',
        field_your_default_email_text='test@test.com',
        field_your_default_telephone_text='',
      ), dict(
        field_your_first_name='Person',
        field_your_last_name='Assignor',
        field_your_reference="french_assignor",
        field_your_password='person_assignor',
        field_your_password_confirm='person_assignor',
        field_your_default_email_text='test@test.com',
        field_your_default_telephone_text='',
      ),
    ]
    self._stepSetupMultipleUserAccountThree(sequence, user_list)

369 370 371 372 373
  def stepSetupWebSiteConfiguration(self, sequence=None, sequence_list=None, **kw):
    """ Setup Web Site """
    next_dict = dict(your_default_available_language="fr")
    sequence.edit(next_dict=next_dict)

374 375
  def stepCheckUNGWebSiteAfterInstallation(self, sequence=None, sequence_list=None, **kw):
    """ Check if UNG Web Site is published and your language"""
376 377 378
    ung_web_site = self.portal.web_site_module.ung
    portal_catalog = self.portal.portal_catalog
    self.assertEquals(ung_web_site.getValidationState(),
379
                      "published")
380
    self.assertEquals(ung_web_site.getDefaultAvailableLanguage(),
381
                      "fr")
382
    person = portal_catalog.getResultValue(portal_type="Person",
383
                                           reference="french_creator")
384 385 386 387 388 389 390
    self.assertEquals(person.getValidationState(), 'validated')
    self.assertEquals(person.getFirstName(), 'Person')
    self.assertEquals(person.getLastName(), 'Creator')
    assignment = person.contentValues(portal_type="Assignment")[0]
    self.assertEquals(assignment.getValidationState(), "open")
    self.assertEquals(assignment.getFunction(), "function/ung_user")
    person = portal_catalog.getResultValue(portal_type="Person",
391
                                           reference="french_assignee")
392 393 394 395 396 397 398
    self.assertEquals(person.getValidationState(), 'validated')
    self.assertEquals(person.getFirstName(), 'Person')
    self.assertEquals(person.getLastName(), 'Assignee')
    assignment = person.contentValues(portal_type="Assignment")[0]
    self.assertEquals(assignment.getValidationState(), "open")
    self.assertEquals(assignment.getFunction(), "function/ung_user")
    person = portal_catalog.getResultValue(portal_type="Person",
399
                                           reference="french_assignor")
400 401 402 403 404 405
    self.assertEquals(person.getValidationState(), 'validated')
    self.assertEquals(person.getFirstName(), 'Person')
    self.assertEquals(person.getLastName(), 'Assignor')
    assignment = person.contentValues(portal_type="Assignment")[0]
    self.assertEquals(assignment.getValidationState(), "open")
    self.assertEquals(assignment.getFunction(), "function/ung_user")
406

407

408 409 410 411 412
class TestUNGConfiguratorWorkflowBrazilLanguage(TestUNGConfiguratorWorkflowMixin):
  """
    Test UNG Configuration Workflow
  """

413 414
  def test_ung_workflow_brazil(self):
    """ Test the ung workflow with brazilian language """
Gabriel Monnerat's avatar
Gabriel Monnerat committed
415
    sequence_list = SequenceList()
416 417 418 419 420 421 422 423 424
    sequence_string = self.DEFAULT_SEQUENCE_LIST % dict(country='Brazil')
    sequence_list.addSequenceString(sequence_string)
    sequence_list.play(self)

  def stepSetupWebSiteConfiguration(self, sequence=None, sequence_list=None, **kw):
    """ Setup Web Site """
    next_dict = dict(your_default_available_language="pt-BR")
    sequence.edit(next_dict=next_dict)

425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455
  def stepSetupMultipleUserAccountThree(self, sequence=None, sequence_list=None, **kw):
    """ Create multiple user account """
    user_list = [
      dict(
        field_your_first_name='Person',
        field_your_last_name='Creator',
        field_your_reference="person_creator",
        field_your_password='person_creator',
        field_your_password_confirm='person_creator',
        field_your_default_email_text='test@test.com',
        field_your_default_telephone_text='',
      ), dict(
        field_your_first_name='Person',
        field_your_last_name='Assignee',
        field_your_reference="person_assignee",
        field_your_password='person_assignee',
        field_your_password_confirm='person_assignee',
        field_your_default_email_text='test@test.com',
        field_your_default_telephone_text='',
      ), dict(
        field_your_first_name='Person',
        field_your_last_name='Assignor',
        field_your_reference="person_assignor",
        field_your_password='person_assignor',
        field_your_password_confirm='person_assignor',
        field_your_default_email_text='test@test.com',
        field_your_default_telephone_text='',
      ),
    ]
    self._stepSetupMultipleUserAccountThree(sequence, user_list)

456
  def stepCheckUNGWebSiteAfterInstallation(self, sequence=None, sequence_list=None, **kw):
457
    """ Check if UNG Web Site is published and your language """
458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487
    ung_web_site = self.portal.web_site_module.ung
    portal_catalog = self.portal.portal_catalog
    self.assertEquals(ung_web_site.getValidationState(),
                      "published")
    self.assertEquals(ung_web_site.getDefaultAvailableLanguage(),
                      "pt-BR")
    person = portal_catalog.getResultValue(portal_type="Person",
                                           reference="person_creator")
    self.assertEquals(person.getValidationState(), 'validated')
    self.assertEquals(person.getFirstName(), 'Person')
    self.assertEquals(person.getLastName(), 'Creator')
    assignment = person.contentValues(portal_type="Assignment")[0]
    self.assertEquals(assignment.getValidationState(), "open")
    self.assertEquals(assignment.getFunction(), "function/ung_user")
    person = portal_catalog.getResultValue(portal_type="Person",
                                           reference="person_assignee")
    self.assertEquals(person.getValidationState(), 'validated')
    self.assertEquals(person.getFirstName(), 'Person')
    self.assertEquals(person.getLastName(), 'Assignee')
    assignment = person.contentValues(portal_type="Assignment")[0]
    self.assertEquals(assignment.getValidationState(), "open")
    self.assertEquals(assignment.getFunction(), "function/ung_user")
    person = portal_catalog.getResultValue(portal_type="Person",
                                           reference="person_assignor")
    self.assertEquals(person.getValidationState(), 'validated')
    self.assertEquals(person.getFirstName(), 'Person')
    self.assertEquals(person.getLastName(), 'Assignor')
    assignment = person.contentValues(portal_type="Assignment")[0]
    self.assertEquals(assignment.getValidationState(), "open")
    self.assertEquals(assignment.getFunction(), "function/ung_user")