def _execute_action(self, action): tokens = action.split(_(u' in ')) action_name = tokens[0].strip() verbose_name = tokens[1].strip() model = find_model_by_verbose_name(verbose_name) action_dict = find_action(model, action_name) func = action_dict['function'] func_signature = u'%s_em_%s(self)' % (func.__name__.lower(), model.__name__.lower()) self._test_flow_code.append(u'\t\t\t# %s' % action) self._test_flow_code.append( u'\t\t\tself.%s_em_%s()' % (func.__name__.lower(), model.__name__.lower())) self._test_function_code.append(u'\tdef %s:' % func_signature) self._view(model, True) if hasattr(func, '_action'): button_label = func._action['title'] params = func.func_code.co_varnames[1:func.func_code.co_argcount] if params: interaction = _(u'The user clicks the button') self._interactions.append(u'%s "%s"' % (interaction, button_label)) self._interactions.append( _(u'The system displays a popup window')) self._test_function_code.append( u"\t\tself.click_button(u'%s')" % button_label) self._test_function_code.append( u"\t\tself.look_at_popup_window()") form = factory.get_action_form(self._mocked_request(), model(), func._action) self._fill_out(form) interaction = _(u'The user clicks the button') self._interactions.append(u'%s "%s"' % (interaction, button_label)) self._test_function_code.append(u"\t\tself.click_button(u'%s')" % button_label) self._test_function_code.append(u"\t\tself.click_icon(u'%s')" % u'Principal') description = func.__doc__ and func.__doc__.decode( 'utf-8').strip() or '' business_rules = utils.extract_exception_messages(func) post_condition = _(u'Action successfully performed') self.name = action_dict['title'] self.description = description self.business_rules = business_rules self.post_condition = post_condition for can_execute in action_dict['can_execute']: self.actors.append(can_execute) if not self.actors: self.actors.append(_(u'Superuser'))
def _execute_action(self, action): tokens = action.split(_(' in ')) action_name = tokens[0].strip() verbose_name = tokens[1].strip() model = find_model_by_verbose_name(verbose_name) action_dict = find_action(model, action_name) func = action_dict['function'] username_attr = '' if CACHE['LAST_AUTHENTICATED_USERNAME']: username_attr = ", '{}'".format( CACHE['LAST_AUTHENTICATED_USERNAME']) func_decorator = '@testcase(\'{}\'{})'.format(self.name, username_attr) self._func_signature = '{}_em_{}(self)'.format(func.__name__.lower(), model.__name__.lower()) self._test_function_code.append(' {}'.format(func_decorator)) self._test_function_code.append(' def {}:'.format( self._func_signature)) self._view(model, True) if hasattr(func, '_action'): button_label = func._action['verbose_name'] params = get_parameters_names(func) if params: interaction = _('The user clicks the button') self._interactions.append('{} "{}"'.format( interaction, button_label)) self._interactions.append( _('The system displays a popup window')) self._test_function_code.append( " self.click_button('{}')".format(button_label)) self._test_function_code.append( " self.look_at_popup_window()") obj = model() obj.pk = 0 form = factory.get_action_form(self._mocked_request(), obj, func._action) self._fill_out(form) interaction = _('The user clicks the button') self._interactions.append('{} "{}"'.format(interaction, button_label)) self._test_function_code.append( " self.click_button('{}')".format(button_label)) self._test_function_code.append( " self.click_icon('{}')".format('Principal')) description = func.__doc__ and func.__doc__.strip() or '' business_rules = utils.extract_exception_messages(func) post_condition = _('Action successfully performed') self.name = action_dict['verbose_name'] self.description = description self.business_rules = business_rules self.post_condition = post_condition for can_execute in action_dict['can_execute']: self.actors.append(can_execute) if not self.actors: self.actors.append(_('Superuser')) elif hasattr(func, '_view_action'): button_label = func._view_action['verbose_name'] interaction = _('The user clicks the button') self._interactions.append('{} "{}"'.format(interaction, button_label)) self._test_function_code.append( " self.click_button('{}')".format(button_label))
def _register(self, action): model = find_model_by_add_label(action) if model: verbose_name = get_metadata(model, 'verbose_name') button_label = get_metadata(model, 'add_label') save_button_label = get_metadata(model, 'add_label', _('Save')) func_name = slugify(button_label).replace('-', '_') else: verbose_name = action.replace(_('Register'), '').strip() model = find_model_by_verbose_name(verbose_name) button_label = _('Register') save_button_label = _('Save') func_name = 'cadastrar_{}'.format(model.__name__.lower()) # set the attributes of the usecase self.name = action self.description = '{} {} {}'.format(_('Add new records of'), verbose_name.lower(), _('in the system')) self.business_rules = utils.extract_exception_messages(model.save) self.post_condition = _( 'The record will be successfully registered in the system') required_data = [] for field in get_metadata(model, 'get_fields'): if isinstance(field, model_fields.ForeignKey): if not isinstance(field, model_fields.OneToOneField): if not isinstance(field, model_fields.OneToManyField): required_data.append(field.verbose_name.lower()) if required_data: pre_condition = _( 'The following information must have been previouly registered in the system: ' ) self.pre_conditions.append('{} {}'.format( pre_condition, ', '.join(required_data))) for meta_data in ('can_admin', 'can_admin_by_role', 'can_admin_by_unit', 'can_admin_by_organization', 'can_add', 'can_add_by_role', 'can_add_by_unit', 'can_add_by_organization'): for actor in get_metadata(model, meta_data, iterable=True): if actor: self.actors.append(actor) if not self.actors: self.actors.append(_('Superuser')) # register the interactions and testing code' username_attr = '' if CACHE['LAST_AUTHENTICATED_USERNAME']: username_attr = ", '{}'".format( CACHE['LAST_AUTHENTICATED_USERNAME']) func_decorator = '@testcase(\'{}\'{})'.format(self.name, username_attr) self._func_signature = '{}(self)'.format(func_name) self._test_function_code.append(' {}'.format(func_decorator)) self._test_function_code.append(' def {}:'.format( self._func_signature)) self._find(model, registering=True) self._test_function_code.append( " self.click_button('{}')".format(button_label)) a = _('The user clicks the button') b = _('on the right-side of the action bar') self._interactions.append('{} "{}" {}'.format(a, button_label, b)) form = factory.get_register_form(self._mocked_request(), model()) self._fill_out(form) interaction = _('The user clicks the button') self._interactions.append('{} "{}"'.format(interaction, save_button_label)) self._test_function_code.append( " self.click_button('{}')".format(save_button_label)) self._test_function_code.append( " self.click_icon('{}')".format('Principal'))
def _register(self, action): model = find_model_by_add_label(action) if model: verbose_name = get_metadata(model, 'verbose_name') button_label = get_metadata(model, 'add_label') func_name = slugify(button_label).replace('-', '_') else: verbose_name = action.replace(_(u'Register'), u'').strip() model = find_model_by_verbose_name(verbose_name) button_label = _(u'Register') func_name = u'cadastrar_%s' % model.__name__.lower() # set the attributes of the usecase self.name = action self.description = '%s %s %s' % (_(u'Add new records of'), verbose_name.lower(), _(u'in the system')) self.business_rules = utils.extract_exception_messages(model.save) self.post_condition = _( u'The record will be successfully registered in the system') required_data = [] for field in get_metadata(model, 'get_fields'): if isinstance(field, model_fields.ForeignKey): if not isinstance(field, model_fields.OneToOneField): if not isinstance(field, model_fields.OneToManyField): required_data.append(field.verbose_name.lower()) if required_data: pre_condition = _( u'The following information must have been previouly registered in the system: ' ) self.pre_conditions.append( '%s %s' % (pre_condition, u', '.join(required_data))) for meta_data in ('can_admin', 'can_admin_by_role', 'can_admin_by_unit', 'can_admin_by_organization', 'can_add', 'can_add_by_role', 'can_add_by_unit', 'can_add_by_organization'): for actor in get_metadata(model, meta_data, iterable=True): if actor: self.actors.append(actor) if not self.actors: self.actors.append(_(u'Superuser')) # register the interactions and testing code func_signature = u'%s(self)' % func_name self._test_flow_code.append(u'\t\t\t# %s' % action) self._test_flow_code.append(u'\t\t\tself.%s()' % func_name) self._test_function_code.append('\tdef %s:' % func_signature) self._find(model) self._test_function_code.append(u"\t\tself.click_button(u'%s')" % button_label) a = _(u'The user clicks the button') b = _(u'on the right-side of the action bar') self._interactions.append(u'%s "%s" %s' % (a, button_label, b)) form = factory.get_register_form(self._mocked_request(), model()) self._fill_out(form) interaction = _(u'The user clicks the button') self._interactions.append(u'%s "%s"' % (interaction, button_label)) self._test_function_code.append(u"\t\tself.click_button(u'%s')" % button_label) self._test_function_code.append(u"\t\tself.click_icon(u'%s')" % u'Principal')